全部產品
Search
文件中心

DataWorks:HTTP觸發器節點

更新時間:Jun 06, 2025

DataWorks提供HTTP觸發器節點,支援您通過調用OpenAPI的方式,從外部環境(如本地環境或跨租戶環境)觸發某一工作流程中的HTTP觸發器節點及其後續節點的執行。該功能可協助您實現本地任務觸發,或滿足跨租戶環境中的任務依賴執行需求。

產品介紹

HTTP觸發器節點是一種特殊的虛擬節點,允許你用DataWorks OpenAPI TriggerSchedulerTaskInstance觸發本節點及下遊節點的調度。

觸發器原理

當上遊任務節點運行完成,且外部調度系統發出調度指令後,HTTP觸發節點才會觸發下遊任務節點運行。觸發使用HTTP觸發器節點可參見觸發器節點使用示意圖

觸發器節點使用示意圖

HTTP觸發器節點常用於外部環境與DataWorks調度系統的互連。

圖示說明

  1. 在資料開發中,建立一個包含HTTP觸發器節點的工作流程,配置好各節點的依賴關係,並發布到營運中心。

  2. 系統會根據調度時間自動組建循環執行個體。您可以在這些執行個體中擷取HTTP觸發器節點的資訊(如節點ID、觸發時間)。

  3. 通過傳入這些資訊,使用Java、Python代碼或調試頁面調用OpenAPI介面來觸發節點運行。若只需觸發某個執行個體及其後續流程,TriggerTime參數可設為固定值。若需動態觸發所有執行個體,則TriggerTime應設為動態變數。HTTP觸發器節點接收到並校正觸發命令後,將依次執行後續節點。

觸發條件

觸發HTTP觸發器節點需要滿足以下條件:

  • HTTP觸發器節點已經組建循環執行個體(在營運中心周期執行個體中可以找到該執行個體)。該執行個體在未被TriggerSchedulerTaskInstanceAPI成功觸發前,將處於等待觸發狀態,其下遊節點將被阻塞,直至成功調用TriggerSchedulerTaskInstanceAPI觸發HTTP觸發器節點執行完成後,下遊節點依次執行。

  • HTTP觸發器節點所依賴的所有父節點都已經執行成功(執行個體為成功狀態)。

  • HTTP觸發器節點產生的周期執行個體定時時間已到

  • HTTP觸發器節點使用的調度資源群組,在觸發時間點資源充足

  • HTTP觸發器節點處於非凍結狀態

  • 僅在等待觸發狀態下的HTTP觸發器節點才可被觸發(已成功觸發過的節點再次觸發將不會執行)。

注意事項

  • 當上遊任務節點運行完成,且外部環境發出調度指令後,HTTP觸發節點才會觸發下遊任務節點運行。

  • 如果外部環境提前發出調度指令,但是上遊任務節點沒有運行完成,HTTP觸發節點不會觸發下遊任務節點。系統會保留外部環境的調度指令,待上遊任務運行完成後,再通過HTTP觸發節點觸發下遊任務節點運行。

    說明

    外部環境的觸發指令僅保留24小時。如果24小時內上遊任務節點沒有運行完成,則觸發指令會丟失,外部環境本次發出的調度指令失效。

  • 當前HTTP觸發器節點執行個體被觸發執行成功後,不可再進行二次觸發。

前提條件

  • RAM帳號添加至對應空間(可選)。

    進行任務開發的RAM帳號已被添加至對應工作空間中,並具有開發空間管理員(許可權較大,謹慎添加)角色許可權。新增成員並授權,詳情請參見為工作空間增加空間成員

  • 對應空間已綁定Serverless資源群組。詳情請參見:使用Serverless資源群組

  • 進行HTTP觸發器節點開發前,需建立對應的HTTP觸發器節點,詳情請參見:建立周期任務

使用限制

  • HTTP觸發器節點功能僅適用DataWorks企業版及以上版本,DataWorks版本詳情請參見DataWorks各版本詳解

  • HTTP觸發器節點僅用於觸發任務,無法作為計算型任務使用。您需要將待啟動並執行任務節點設定為HTTP觸發器節點的下遊節點,以實現任務的觸發和執行。

建立HTTP觸發器節點

建立HTTP觸發器節點

建立入口參考:建立HTTP觸發器節點

配置HTTP觸發器節點

建立HTTP觸發節點後,在HTTP觸發節點編輯頁面右側的調度配置中配置以下參數。更多參數配置,詳情請參見節點調度

參數

說明

調度資源群組

選擇您所綁定的Serverless資源群組。

執行個體產生方式

可選擇T+1次日產生發布後即時產生

說明
  • HTTP觸發器節點為空白節點,無需編寫節點內容。

  • HTTP觸發器節點上遊無節點時,預設上遊節點為商務程序的根節點。

發布HTTP觸發器節點

  1. 完成調度配置後,即可對已完成的HTTP觸發器節點提交發布至生產環境,詳情請參見:節點/工作流程發布

  2. 發布完成的任務,將按照您配置的調度進行周期運行,可在營運中心 > 任務營運 > 周期任務營運 > 周期任務中查看發行的周期任務,並對任務進行營運操作,詳情請參見:營運中心入門

其他調度環境的觸發配置

外部調度環境中進行觸發配置時,您需要將擷取到的HTTP觸發節點執行個體參數配置到以下任一方式中,並通過調用TriggerSchedulerTaskInstance介面來觸發HTTP觸發器節點的執行。

擷取HTTP觸發節點執行個體參數

您可根據配置HTTP觸發器節點時選擇的執行個體產生方式,在營運中心查看並記錄HTTP執行個體參數資訊。

說明
  • T+1次日產生:需要次日去營運中心查看並記錄HTTP執行個體參數資訊。

  • 發布後即時產生:可立即前往營運中心查看並記錄HTTP執行個體參數資訊。

  1. 進入營運中心頁面。

    登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料開發與營運 > 營運中心,在下拉框中選擇對應工作空間後單擊進入營運中心

  2. 在左側導覽列單擊周期任務營運 > 周期執行個體,進入周期執行個體頁面。

  3. 在列表中找到您所建立的HTTP觸發器節點執行個體,記錄執行個體的任務ID定時時間

    說明

    滑鼠懸浮到HTTP觸發器節點執行個體的名稱上方,即可查看執行個體的任務ID。

方式一:Java調用

  1. 安裝Java SDK,詳情可參見通過IDE使用阿里雲Java SDK

    其中,DataWorks的SDK請用下面的pom配置。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>dataworks_public20240518</artifactId>
      <version>6.2.0</version>
    </dependency>
  2. 程式碼範例

    您可進入TriggerSchedulerTaskInstance調試頁面,在SDK樣本頁簽查看完整的Java樣本。

    package com.example.demo;
    
    import com.aliyun.dataworks_public20240518.Client;
    import com.aliyun.dataworks_public20240518.models.TriggerSchedulerTaskInstanceRequest;
    import com.aliyun.dataworks_public20240518.models.TriggerSchedulerTaskInstanceResponse;
    import com.aliyun.teaopenapi.models.Config;
    import com.aliyun.teautil.models.RuntimeOptions;
    
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    
    public class CrossTenantTriggerSchedulerTaskTo {
        // 觸發DataWorks節點啟動並執行方法
        public static TriggerSchedulerTaskInstanceResponse runTriggerScheduler(com.aliyun.dataworks_public20240518.Client client, Long nodeId, String EnvType, Long TriggerTime) throws Exception {
            TriggerSchedulerTaskInstanceRequest request = new TriggerSchedulerTaskInstanceRequest(); // 建立API請求對象
            request.setTaskId(nodeId); // 設定要觸發的節點ID
            request.setEnvType(EnvType); // 設定專案環境
            request.setTriggerTime(TriggerTime); //設定定時觸發時間(毫秒級時間戳記)
            RuntimeOptions runtime = new RuntimeOptions(); // 初始化運行時配置
            return client.triggerSchedulerTaskInstanceWithOptions(request, runtime); // 執行API調用並返迴響應
        }
    
        public static void main(String[] args) throws Exception {
            // 初始化節點ID(樣本值)
            String nodeId = "xxx";
            // 初始化專案環境(樣本值)
            String EnvTypeStr = "xxx";
            // 初始化定時時間(樣本值)
            String cycTimeStr = "xxx";
            //設定服務端點
            String endpoint = "xxx";
            // 將字串轉換為Long類型節點ID
            Long nodeId1 = Long.parseLong(nodeId);
            // 輸出程式使用說明
            System.out.println("Usage: java -jar test-1.0-SNAPSHOT.jar nodeId EnvTypeStr cycTimeParam");
            // 解析定時時間並轉換為時間戳記
            SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(sdft.parse(cycTimeStr)); // 解析時間字串
            Long cycTime = calendar.getTimeInMillis(); // 擷取毫秒級時間戳記
            // 輸出調試資訊(時間戳記)
            System.out.println("定時時間戳記:" + cycTime);
            // 初始化OpenAPI設定物件
            Config config = new Config();
            config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")); // 從環境變數擷取存取金鑰ID
            config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));// 從環境變數擷取存取金鑰Secret
            config.setEndpoint(endpoint);
            // 建立阿里雲用戶端執行個體
            Client client = new Client(config);
            // 執行觸發節點操作
            TriggerSchedulerTaskInstanceResponse response = runTriggerScheduler(client, nodeId1,EnvTypeStr, cycTime);
            // 輸出API響應結果(JSON格式)
            System.out.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(response)));
        }
    }

    按照以下參數說明,將上述代碼中的相關參數替換成業務所需實際值。

    參數

    說明

    nodeId

    擷取HTTP觸發節點執行個體參數步驟擷取的HTTP觸發器節點任務ID

    EnvTypeStr

    HTTP觸發器節點所在的專案環境。

    生產環境用Prod

    開發環境用Dev

    cycTimeStr

    擷取HTTP觸發節點執行個體參數步驟擷取的HTTP觸發器節點任務的定時時間。時間格式為yyyy-MM-dd HH:mm:ss

    endpoint

    目標HTTP觸發器節點所在工作空間的服務地址,詳情請參見阿里雲OpenAPI開發人員服務地址

    ALIBABA_CLOUD_ACCESS_KEY_ID

    目標HTTP觸發器節點所在阿里雲帳號的AccessKey ID

    1. 擷取AccessKey資訊。

      登入DataWorks控制台,將滑鼠移至上方在頂部功能表列右側的帳戶圖片上,單擊進入AccessKey管理頁面,擷取AccessKey IDAccessKey Secret資訊。

    2. 配置環境變數。 將擷取到的 AccessKey ID 和 AccessKey Secret 配置為當前環境的環境變數。後續在代碼中可通過讀取環境變數的方式動態擷取AK資訊,從而避免明文儲存帶來的安全風險。詳情請參見管理訪問憑據

    ALIBABA_CLOUD_ACCESS_KEY_SECRET

    目標HTTP觸發器節點所在阿里雲帳號的AccessKey Secret

方式二:Python調用

  1. 安裝Python SDK,詳情可參見整合SDK

    其中,DataWorks的SDK請使用下面的命令安裝。

    pip install alibabacloud_dataworks_public20240518==6.2.0
  2. 程式碼範例。

    您可進入TriggerSchedulerTaskInstance調試頁面,在SDK樣本頁簽查看完整的Python樣本。

    image

方式三:API調試工具

您可進入TriggerSchedulerTaskInstance調試頁面,在以下地區設定對應參數,單擊下方的發起調用。

參數

說明

TaskId

擷取HTTP觸發節點執行個體參數步驟擷取的HTTP觸發器節點任務ID

EnvType

HTTP觸發器節點所在的專案環境。

生產環境Prod

開發環境Dev

TriggerTime

擷取HTTP觸發節點執行個體參數步驟擷取的HTTP觸發器節點任務的定時時間。時間格式需要轉換為毫秒時間戳記。

image

相關文檔

DataWorks提供HTTP觸發器節點功能,能夠在跨租戶的情境中實現任務的觸發與執行,詳情請參見HTTP觸發器節點實現跨租戶觸發節點執行