最新历史版本 :連線執行判斷 返回文檔
編輯時間: 內容長度:图片数:目录数: 修改原因:

目錄:

1. 概述编辑

1.1 版本

FineDataLink 版本功能變動
4.0.3

1)在定時任務編輯介面中,右鍵點選節點連線,提供「無條件執行」、「成功時執行」、「報錯時執行」的節點連線配置

2)在定時任務編輯介面中,右鍵點選節點,新增「執行判斷」按鈕,支援自訂多執行條件的生效方式(全部邏輯與、全部邏輯或),靈活控制任務中節點的依賴關係

1.2 應用場景

使用者希望定時任務執行失敗後,可以自訂錯誤處理流程。比如定時任務執行失敗後,在企業微信群中通知。

1.3 功能簡介

如下圖所示:

2. 功能介紹编辑

連線的始端稱為上游節點,連線的末端稱為下游節點。

2.1 節點連線配置介紹

在定時任務編輯介面中,右鍵點選節點連線,提供「無條件執行」、「成功時執行」、「報錯時執行」的節點連線配置。如下圖所示:

具體說明如下表所示:

注:預設成功時執行。

選擇項說明
無條件執行不論上游節點執行是否成功,都執行下游節點
成功時執行上游節點執行成功時,執行下游節點
報錯時執行上游節點執行失敗時,執行下游節點

2.2 「執行判斷」按鈕介紹

在定時任務編輯介面中,右鍵點選節點,新增「執行判斷」按鈕,支援自訂多執行條件的生效方式(全部邏輯與、全部邏輯或),靈活控制任務中節點的依賴關係。如下所示:

下游節點被多個上游節點連結時,點選「執行判斷」按鈕,下拉框可選擇「所有」和「任一」,分別對應兩個生效邏輯,「全部邏輯與」和「全部邏輯或」。

  • 全部邏輯與:下游節點在所有上游節點執行結果均滿足連線執行條件時觸發執行。

  • 全部邏輯或:下游節點在任一上游節點執行結果滿足連線執行條件時觸發執行(在下游節點處集中配置)。

2.3 總體執行策略

1)下游節點被一個上游節點連結時,該上游節點執行結果滿足其連線執行條件,則觸發下游節點執行。

2)下游節點被多個上游節點連結時,在所有上游節點執行完成後觸發判斷,按照選擇的生效邏輯執行:

  • 全部邏輯與:下游節點在所有上游節點執行結果均滿足連線執行條件時觸發執行。

  • 全部邏輯或:下游節點在任一上游節點執行結果滿足連線執行條件時觸發執行(在下游節點處集中配置)。

3)「條件分支」節點只允許選擇「成功時執行」,沒有「失敗時執行」和「無條件執行」:

  • 連線條件為「成功時執行」且符合條件分支配置條件,則觸發執行對應下游節點

  • 連線條件為「成功時執行」但不符合條件分支配置條件,則跨越執行下游節點

4)虛擬節點預設為「成功時執行」,沒有「失敗時執行」和「無條件執行」,虛擬節點如果執行,必然執行成功。

2.4 場景範例

2.4.1 一對多場景說明

定時任務設計如下圖所示:

1653469578358102.png

ABCD構成了一對多場景,其執行策略如下:

注:A 不是條件分支節點。

A 節點執行結果B(與A連線為成功時執行)C(與A連線為失敗時執行)D(與A連線為無條件執行)
執行失敗不觸發執行觸發執行觸發執行
執行成功觸發執行不觸發執行觸發執行

終止執行

如:執行至 A 節點時,任務手動停止

不觸發執行不觸發執行不觸發執行

跨越執行。如:

1)A 上游不是條件分支節點,且執行結果不滿足連線執行條件

2)A 上游是條件分支節點,且判斷後不走 A分支

不觸發執行不觸發執行不觸發執行

2.4.2 多對一場景說明

ETL 任務設計如下圖所示:

1653470028765378.png

ABCD構成了多對一場景,其執行策略如下:

注:A\B\C均不是條件分支節點;在所有上游節點執行完成後觸發判斷。

執行條件生效方式A/B/C實際執行結果D
全部邏輯與
A\B\C執行結果均滿足各自連線執行條件觸發執行

A\B\C執行結果任一不滿足其連線執行條件

注:若A\B\C某一節點被跨越執行,則該節點不參與判斷

不觸發執行
全部邏輯或A\B\C執行結果任一滿足其連線執行條件觸發執行
A\B\C執行結果均不滿足各自連線執行條件不觸發執行

若場景如下圖所示:A、B、C 中至少有一個節點及其下游節點執行成功,H 節點都執行。

1706582001895959.png

若希望 D、E、F節點全部執行成功再執行 H 節點:

方案一:可在 H 節點前新增「條件分支」節點,透過參數 ${jobname.opresult} (節點執行成功值為 success)的值判斷是否執行 H 節點。

方案二:H節點參考本文 2.2 節內容,執行判斷處設定為全部邏輯與。如下圖所示:

1720602953207797.png

2.4.3 多對多場景

A-C 的配置為成功時執行,A-D 的配置為失敗時執行,B-C 的配置為成功時執行,B-D 的配置為失敗時執行,「多執行條件生效方式」配置為「全部邏輯與」。如下圖所示:

11.png

執行策略:A 執行成功且 B 執行成功時,C 執行,D 不執行;A 執行失敗且 B 執行失敗時,D 執行,C 不執行;A 執行成功且 B 執行失敗時,C 和 D 都不執行。

2.5 相容說明

升級後,對於所有節點連線,都統一將連線的執行條件設為成功時執行,「多執行條件生效方式」配置為「全部邏輯與」。

3. 範例编辑

範例:如果上游節點運作成功,則執行下一個節點,如果失敗,則傳送訊息通知。

3.1 前期準備

1) 建立定時任務,拖入「資料同步」節點,命名為「銷量表抽取資料」,設定「資料來源」將銷量表中所有華東地區的資料取出。然後設定「資料去向與映射」,此處直接建立一個表來儲存這些資料,目標表選擇「自動建表」,表名稱填寫「sale」,如下圖所示:

2)新增「SQL腳本」節點,與「資料同步」節點相連,命名為「salesum建表」,資料源選擇「MySQL」,資料連結選擇「fdl_demo」,並在下方填寫建表「salesum」的語句,如下圖所示:

CREATE TABLE IF NOT EXISTS `demotest`.`salesum` (
`地區` varchar(255) NULL DEFAULT NULL,
`銷售員` varchar(255) NULL DEFAULT NULL,
`銷量` float NULL DEFAULT NULL 
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;


3)新增「SQL腳本」節點,與「salesum建表」節點相連,命名為「資料篩選處理」,資料源類型選擇「MySQL」,資料連結選擇「fdl_demo」,填寫 SQL 語句將「sale」中銷量大於 600 的資料插入到「salesum」中去。如下圖所示:

insert into `demotest`.`salesum`(地區,銷售員,銷量)
select 地區,銷售員,銷量 
    from `demotest`.`sale` 
    where 銷量>600

3.2 新增訊息通知節點

1)新增「訊息通知」節點,與「salesum建表」節點連結起來。

2)右鍵點選「訊息通知」節點和「salesum建表」節點之間的連線,選擇「失敗時執行」。如下圖所示:

3)「訊息通知」節點設定如下圖所示:

3.3 運作任務

3.3.1 salesum建表節點執行成功

點選左上角的「運作」。如下圖所示:

此時salesum建表節點執行成功,訊息通知節點被跨越執行。

MySQL 資料庫中生成了兩個表:

sale:

salesum:

3.3.2 salesum建表節點執行失敗

1)修改「salesum建表」節點的 SQL 語句,將 SQL 語句改為無法執行的 SQL 。如下圖所示:

2)點選左上角的「運作」。如下圖所示:

此時salesum建表節點執行失敗,訊息通知節點執行成功。

企業微信群中,訊息通知給設定的群成員。如下圖所示: