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

DataWorks:HTTP トリガーノード

最終更新日:Jun 25, 2026

DataWorks では、HTTP トリガーノードを使用して、OpenAPI を呼び出すことで、ローカルシステムやクロステナント環境などの外部環境からワークフロー内のノードとその下流ノードをトリガーできます。これにより、ローカルシステムからタスクをトリガーしたり、クロステナントのタスク依存関係を処理したりできます。

製品概要

HTTP トリガーノードは、DataWorks の OpenAPI であるTriggerSchedulerTaskInstance を使用して、このノードとその下流ノードのスケジューリングをトリガーできる特殊な仮想ノードです。

トリガーメカニズム

image

HTTP トリガーノードは、上流ノードが成功し、外部システムがスケジューリングコマンドを送信した後にのみ、下流ノードをトリガーします。HTTP トリガーノードの使用を示す図については、使用例をご参照ください。

使用例

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

image

図の説明

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

  2. システムは、スケジュール時刻に基づいてスケジュールされたインスタンスを自動的に生成します。これらのインスタンスから、タスク ID やトリガー時刻など、HTTP トリガーノードに関する情報を取得できます。

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

トリガー条件

HTTP トリガーノードは、次の条件が満たされている場合にのみトリガーされます。

  • HTTP トリガーノードのスケジュールされたインスタンスが存在する必要があります。このインスタンスは、運用センターの Cycle Examples ページで確認できます。インスタンスは、TriggerSchedulerTaskInstance API によって正常にトリガーされるまで、[トリガー待ち] 状態のままです。その下流ノードは、TriggerSchedulerTaskInstance API が正常に呼び出されて HTTP トリガーノードをトリガーするまでブロックされたままになります。その時点で、下流ノードは順番に実行されます。

  • HTTP トリガーノードが依存するすべての上流ノードが正常に実行されている必要があります。つまり、それらのインスタンスが成功状態である必要があります。

  • HTTP トリガーノードのスケジュールされたインスタンスのスケジュール時刻に達している必要があります。

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

  • HTTP トリガーノードが凍結されていない必要があります。

  • トリガー待ち状態の HTTP トリガーノードインスタンスのみをトリガーできます。すでに正常にトリガーされたインスタンスは、再度トリガーできません。

適用シナリオ

  • 外部ファイル駆動型スケジューリング: 外部スクリプト (Python など) を使用して、Excel や CSV ファイルなどのファイルから日付または条件情報を読み取ります。トリガー条件が満たされると、DataWorks の OpenAPI であるTriggerSchedulerTaskInstance を呼び出して HTTP トリガーノードをトリガーし、外部データに基づく自動スケジューリングを実装します。

  • クロステナントタスク依存関係: 異なるテナントの DataWorks インスタンス間にタスク依存関係が存在する場合、HTTP トリガーノードを使用してテナント間でタスクをトリガーできます。詳細については、「HTTP トリガーノードを使用してテナント間でノード実行をトリガーする」をご参照ください。

DataWorks Professional Edition 以上をご利用の場合は、チェックノードを使用して同様の外部条件チェックを実装することもできます。

注意事項

  • HTTP トリガーノードは、上流ノードが正常に実行され、外部環境がスケジューリングコマンドを送信した後にのみ、下流ノードをトリガーします。

  • 上流ノードの実行が完了する前に外部環境がスケジューリングコマンドを送信した場合、HTTP トリガーノードは下流ノードをトリガーしません。システムは外部環境からのスケジューリングコマンドを保持し、上流ノードの実行が完了した後、HTTP トリガーノードを介して下流ノードをトリガーします。

    説明

    外部環境からのトリガーコマンドは24時間のみ保持されます。上流ノードが24時間以内に実行を完了しない場合、トリガーコマンドは失われ、外部環境によって送信されたスケジューリングコマンドは無効になります。

  • 現在の HTTP トリガーノードインスタンスが正常にトリガーされた後は、再度トリガーすることはできません。

前提条件

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

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

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

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

制限事項

  • HTTP トリガーノード機能は、[DataWorks エンタープライズ版] 以降のエディションでのみ利用可能です。DataWorks エディションの詳細については、「DataWorks エディション」をご参照ください。

  • HTTP トリガーノードはタスクのトリガーにのみ使用され、コンピューティングタスクとしては使用できません。実行するタスクノードを HTTP トリガーノードの下流ノードとして設定し、タスクをトリガーして実行する必要があります。

HTTPトリガーノードの作成

HTTPトリガーノードの作成

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

HTTPトリガーノードの構成

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

パラメーター

説明

[Resource Group for Scheduling]

関連付けられているサーバーレスリソースグループを選択します。

[Instance generation method]

T +1 generated next day または Instant generation after publishing を選択できます。

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

  • HTTP トリガーノードに上流ノードがない場合、ワークフローのルートノードがデフォルトの上流ノードとして使用されます。

HTTPトリガーノードのデプロイ

  1. スケジュール設定が完了したら、HTTP トリガーノードを送信して本番環境にデプロイします。詳細については、「ノードのデプロイ」をご参照ください。

  2. タスクがデプロイされると、スケジュール設定に基づいて定期的に実行されます。デプロイされた定期実行タスクをOperation and Maintenance Center > ノード O&M > Auto Triggered Task O&M > Auto Triggered Taskで表示し、タスクに対して O&M 操作を実行できます。詳細については、「定期実行タスクの管理」をご参照ください。

外部スケジューリング環境でのトリガー構成

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

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

HTTP トリガーノードの構成時に選択したインスタンス生成方式に基づいて、オペレーションセンターで HTTP トリガーノードインスタンスパラメーターを確認して記録します。

説明
  • T+1 翌日生成: 翌日、オペレーションセンターで HTTP インスタンスパラメーターを確認し、記録する必要があります。

  • 公開後即時生成:オペレーションセンターですぐに HTTP インスタンスパラメーターを確認し、記録できます。

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

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

  2. 左側のナビゲーションペインで、Auto Triggered Task O&M > Cycle Examples をクリックして、Cycle Examples ページに移動します。

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

    説明

    HTTP トリガーノードインスタンスの名前にカーソルを合わせると、インスタンスのタスク IDを確認できます。

方法1:Java

  1. Java SDK をインストールします。詳細については、「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("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形式の文字列です。API を呼び出す前に、この値をミリ秒タイムスタンプに変換する必要があります。

    endpoint

    対象の HTTP トリガーノードが存在するワークスペースのエンドポイントです。詳細については、「Alibaba Cloud OpenAPI Developer Portal のエンドポイント」をご参照ください。

    ALIBABA_CLOUD_ACCESS_KEY_ID

    対象の HTTP トリガーノードが属する Alibaba Cloud アカウントのAccessKey IDです。

    1. AccessKey 情報を取得します。

      DataWorks コンソールにログインし、上部のナビゲーションバーの右上隅にあるプロフィールアイコンにカーソルを合わせ、クリックして [アクセスキー管理] ページに移動し、AccessKey IDAccessKey Secret を取得します。

    2. 環境変数を構成します。 取得した AccessKey ID と AccessKey Secret を現在の環境の環境変数として構成します。コード内で環境変数を読み取ることで AccessKey 情報を動的に取得でき、平文保存によるセキュリティリスクを回避できます。詳細については、「環境変数の構成」をご参照ください。

    ALIBABA_CLOUD_ACCESS_KEY_SECRET

    対象の HTTP トリガーノードが属する Alibaba Cloud アカウントのAccessKey Secretです。

方法2:Python

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

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

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

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

    デバッグページの左側で、リクエストパラメーターTaskId(整数)、EnvType(文字列)、TriggerTime(整数) を構成します。右側で、言語としてPythonを選択すると、完全な SDK サンプルコードが表示されます。[サンプルの実行]をクリックすると、オンラインでデバッグできます。

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

TriggerSchedulerTaskInstance のデバッグページ に移動し、対応するセクションで次のパラメーターを構成して、[送信]をクリックして呼び出しを開始できます。

パラメーター

説明

TaskId

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

EnvType

HTTP トリガーノードが存在するプロジェクト環境です。

本番環境の場合はProdを使用します。

開発環境の場合はDevを使用します。

TriggerTime

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

関連ドキュメント

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