すべてのプロダクト
Search
ドキュメントセンター

:HTTP トリガーノード

最終更新日:Dec 19, 2025

DataWorks は HTTP トリガーノードを提供します。これにより、OpenAPI 操作を呼び出すことで、外部環境 (ローカル環境やテナント間環境など) からワークフロー内の HTTP トリガーノードとその子孫ノードの実行をトリガーできます。この機能は、ローカルでのタスクのトリガーや、テナント間環境でのタスク依存関係の実行要件を満たすのに役立ちます。

製品紹介

HTTP トリガーノードは特殊なゼロロードノードであり、DataWorks OpenAPI の TriggerSchedulerTaskInstance を使用して、このノードとその子孫ノードのスケジューリングをトリガーできます。

トリガーメカニズム

image

HTTP トリガーノードは、その先祖ノードが期待どおりに実行され、外部スケジューリングシステムからスケジューリング命令を受け取った後にのみ、子孫ノードをトリガーできます。HTTP トリガーノードのトリガー方法については、「トリガーノードの使用図」をご参照ください。

トリガーノードの使用図

HTTP トリガーノードは、一般的に外部環境と DataWorks スケジューリングシステム間の通信に使用されます。

image

図の説明

  1. Data Development で、HTTP トリガーノードを含むワークフローを作成し、ノード間の依存関係を設定して、ワークフローをオペレーションセンターに公開します。

  2. システムはスケジューリング時間に基づいて定期インスタンスを自動的に生成します。これらのインスタンスから HTTP トリガーノードの情報 (ノード ID やトリガー時間など) を取得できます。

  3. この情報を渡し、Java または Python コード、あるいは API デバッグページを使用して OpenAPI 操作を呼び出し、ノードをトリガーします。特定のインスタンスとその後続のワークフローのみをトリガーするには、TriggerTime パラメーターを静的フィールドに設定します。すべてのインスタンスを動的にトリガーするには、TriggerTime を動的変数に設定します。HTTP トリガーノードがトリガーコマンドを受信して検証すると、後続のノードを順番に実行します。

トリガー条件

HTTP トリガーノードは、以下の要件が満たされた場合にのみ実行できます:

  • HTTP トリガーノードによって定期インスタンスが生成されます。このインスタンスは、オペレーションセンターの [自動トリガーインスタンス] ページで確認できます。インスタンスが TriggerSchedulerTaskInstance API によって正常にトリガーされるまで、インスタンスは [トリガー待ち] 状態です。その子孫ノードは、TriggerSchedulerTaskInstance API が呼び出されて HTTP トリガーノードがトリガーされるまでブロックされます。HTTP トリガーノードが実行されると、その子孫ノードは順次実行されます。

  • HTTP トリガーノードが依存するすべての親ノードが正常に実行されていること (インスタンスが成功状態であること)。

  • HTTP トリガーノードによって生成された定期インスタンスのスケジュール時刻に達していること

  • HTTP トリガーノードが使用するスケジューリングリソースグループに、トリガー時に十分なリソースがあること

  • HTTP トリガーノードが凍結ステータスでないこと

  • [トリガー待ち] 状態の HTTP トリガーノードのみがトリガー可能であること (正常にトリガーされたノードは、再度トリガーされても再実行されません)。

注意事項

  • HTTP トリガーノードは、その先祖ノードが期待どおりに実行され、外部環境からスケジューリング命令を受け取った後にのみ、子孫ノードをトリガーできます。

  • 外部環境が事前にスケジューリング命令を送信しても、先祖ノードの実行が完了していない場合、HTTP トリガーノードは子孫ノードをトリガーしません。システムは外部環境からのスケジューリング命令を保持し、先祖ノードの実行が完了した後に HTTP トリガーノードを介して子孫ノードをトリガーします。

    説明

    外部環境からのトリガー命令は 24 時間のみ保持されます。24 時間以内に先祖ノードの実行が完了しない場合、トリガー命令は失われ、今回外部環境から送信されたスケジューリング命令は無効になります。

  • 現在の HTTP トリガーノードインスタンスが正常にトリガーされ実行された後、2 回目のトリガーはできません。

前提条件

  • 使用したい RAM ユーザーがワークスペースに追加されていること。

    RAM ユーザーを使用してタスクを開発する場合、その RAM ユーザーをメンバーとしてワークスペースに追加し、[Develop] または [Workspace Administrator] ロールを割り当てる必要があります。Workspace Administrator ロールには必要以上の権限が含まれているため、割り当てる際には注意が必要です。メンバーの追加とロールの割り当て方法の詳細については、「ワークスペースへのメンバーの追加」をご参照ください。

  • サーバーレスリソースグループがワークスペースに関連付けられていること。詳細については、「サーバーレスリソースグループの使用」ディレクトリのトピックをご参照ください。

  • HTTP トリガーノードを開発する前に、対応する HTTP トリガーノードを作成する必要があります。詳細については、「定期タスクの作成」をご参照ください。

制限事項

  • HTTP トリガーノード機能は、DataWorks Enterprise Edition 以上のバージョンでのみ利用可能です。DataWorks のバージョンに関する詳細については、「DataWorks のエディション」をご参照ください。

  • HTTP トリガーノードはタスクのトリガーにのみ使用され、計算最適化タスクとしては使用できません。タスクのトリガーと実行を実現するには、実行するタスクノードを HTTP トリガーノードの子孫ノードとして設定する必要があります。

HTTP トリガーノードの作成

新しい HTTP トリガーノードの作成

新しいノードの作成方法については、「HTTP トリガーノードの作成」をご参照ください。

HTTP トリガーノードの設定

新しい HTTP トリガーノードを作成した後、HTTP トリガーノード編集ページの右側にある [スケジューリング] で以下のパラメーターを設定します。その他のパラメーター設定については、「ノードのスケジューリング」をご参照ください。

パラメーター

説明

リソースグループ

関連付けたサーバーレスリソースグループを選択します。

インスタンス生成モード

[T+1 翌日] または [公開後すぐに生成] を選択できます。

説明
  • HTTP トリガーノードはゼロロードノードであり、ノードコンテンツを記述する必要はありません。

  • HTTP トリガーノードの上流にノードがない場合、デフォルトの上流ノードはビジネスフローのルートノードになります。

HTTP トリガーノードの公開

  1. スケジューリング設定が完了したら、完成した HTTP トリガーノードを本番環境に送信して公開できます。詳細については、「ノード/ワークフローの公開」をご参照ください。

  2. 公開されたタスクは、設定したスケジュールに従って定期的に実行されます。[オペレーションセンター] > [ノード O&M] > [定期実行ノード O&M] > [定期実行ノード] で公開された定期タスクを表示し、タスクの O&M 操作を実行できます。詳細については、「オペレーションセンター入門」をご参照ください。

他のスケジューリング環境でのトリガー設定

外部スケジューリング環境でトリガーを設定する場合、取得した HTTP トリガーノードインスタンスのパラメーターを次のいずれかの方法で設定し、TriggerSchedulerTaskInstance 操作を呼び出して HTTP トリガーノードをトリガーする必要があります。

HTTP トリガーノードのインスタンスパラメーターの取得

HTTP トリガーノードの設定時に選択したインスタンス生成モードに基づいて、[オペレーションセンター] で HTTP インスタンスのパラメーター情報を表示および記録できます。

説明
  • T+1 翌日:翌日にオペレーションセンターに移動して、HTTP インスタンスのパラメーター情報を表示および記録する必要があります。

  • 公開後すぐに生成:すぐに [オペレーションセンター] に移動して、HTTP インスタンスのパラメーター情報を表示および記録できます。

  1. オペレーションセンターページに移動します。

    DataWorks コンソールにログインします。上部のナビゲーションバーで目的のリージョンを選択します。左側のナビゲーションウィンドウで、[データ開発と O&M] > [オペレーションセンター] を選択します。表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、[オペレーションセンターへ移動] をクリックします。

  2. 左のナビゲーションバーで、[定期実行ノード O&M] > [定期実行インスタンス] をクリックして、[定期実行インスタンス] ページに移動します。

  3. リストから作成した HTTP トリガーノードインスタンスを見つけ、インスタンスの [タスク ID][スケジュール時刻] を記録します。

    説明

    HTTP トリガーノードインスタンスの名前にマウスカーソルを合わせると、インスタンスの [タスク ID] が表示されます。

方法 1: Java 呼び出し

  1. Java SDK をインストールします。詳細については、「IDE で Alibaba Cloud SDK for Java を使用する」をご参照ください。

    DataWorks SDK for Java を使用するには、以下の Project Object Model (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("Scheduled timestamp: " + cycTime);
            // OpenAPI 設定オブジェクトを初期化
            Config config = new Config();
            config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")); // 環境変数から AccessKey ID を取得
            config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); // 環境変数から AccessKey Secret を取得
            config.setEndpoint(endpoint);
            // Alibaba Cloud クライアントインスタンスを作成
            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 トリガーノードが配置されているワークスペースのエンドポイント。詳細については、「Alibaba Cloud OpenAPI Developer Service Endpoints」をご参照ください。

    ALIBABA_CLOUD_ACCESS_KEY_ID

    宛先の HTTP トリガーノードが属する Alibaba Cloud アカウントの AccessKey ID

    1. AccessKey ペアの取得。

      DataWorks コンソールにログインします。右上のプロファイル画像にポインターを合わせ、[AccessKey 管理] をクリックして AccessKey IDAccessKey Secret を取得します。

    2. 環境変数の設定。 取得した AccessKey ID と AccessKey Secret を現在の環境の環境変数として設定します。後で環境変数を読み取ることで AccessKey 情報を動的に取得でき、プレーンテキストでの保存によるセキュリティリスクを回避できます。詳細については、「アクセス認証情報の管理」をご参照ください。

    ALIBABA_CLOUD_ACCESS_KEY_SECRET

    宛先の HTTP トリガーノードが属する Alibaba Cloud アカウントの AccessKey Secret

方法 2: Python 呼び出し

  1. Python SDK をインストールします。詳細については、「SDK の統合」をご参照ください。

    次のコマンドを実行して、DataWorks SDK for Python をインストールします:

    pip install alibabacloud_dataworks_public20240518==6.2.0
  2. サンプルコード。

    TriggerSchedulerTaskInstance デバッグページ にアクセスし、[SDK サンプル] タブで完全な Python の例を表示できます。

    image

方法 3: API デバッグツール

TriggerSchedulerTaskInstance デバッグページ にアクセスし、以下のエリアで対応するパラメーターを設定し、下部の [API の呼び出し] をクリックします。

パラメーター

説明

TaskId

HTTP トリガーノードのインスタンスパラメーターの取得」ステップで取得した HTTP トリガーノードの [タスク ID]

EnvType

HTTP トリガーノードが配置されているプロジェクト環境。

本番環境の場合は、値を Prod に設定します。

開発環境の場合は、値を Dev に設定します。

TriggerTime

HTTP トリガーノードのインスタンスパラメーターの取得」ステップで取得した HTTP トリガーノードタスクの [スケジュール時刻]。時刻形式はミリ秒のタイムスタンプに変換する必要があります。

image

関連ドキュメント

DataWorks は HTTP トリガーノード機能を提供しており、テナント間シナリオでのタスクのトリガーと実行を実現できます。詳細については、「HTTP トリガーノードを使用してテナント間でノード実行をトリガーする」をご参照ください。