連線執行判斷

  • 文檔創建者:Wendy123456
  • 編輯次數:18
  • 最近更新:Laurenwy 于 2025-07-04
  • 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建表節點執行失敗,訊息通知節點執行成功。

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

    附件列表


    主題: 資料開發-定時任務
    已經是第一篇
    已經是最後一篇
    • 有幫助
    • 沒幫助
    • 只是瀏覽
    • 评价文档,奖励 1 ~ 100 随机 F 豆!