DataWorks では、HTTP トリガーノードを使用して、OpenAPI を呼び出すことで、ローカルシステムやクロステナント環境などの外部環境からワークフロー内のノードとその下流ノードをトリガーできます。これにより、ローカルシステムからタスクをトリガーしたり、クロステナントのタスク依存関係を処理したりできます。
製品概要
HTTP トリガーノードは、DataWorks の OpenAPI であるTriggerSchedulerTaskInstance を使用して、このノードとその下流ノードのスケジューリングをトリガーできる特殊な仮想ノードです。
トリガーメカニズム
HTTP トリガーノードは、上流ノードが成功し、外部システムがスケジューリングコマンドを送信した後にのみ、下流ノードをトリガーします。HTTP トリガーノードの使用を示す図については、使用例をご参照ください。
使用例
HTTP トリガーノードは、一般的に、外部環境と DataWorks スケジューリングシステム間の通信に使用します。
図の説明:
Data Studio で、HTTP トリガーノードを含むワークフローを作成し、各ノードの依存関係を設定して、ワークフローをオペレーションセンターにデプロイします。
システムは、スケジュール時刻に基づいてスケジュールされたインスタンスを自動的に生成します。これらのインスタンスから、タスク ID やトリガー時刻など、HTTP トリガーノードに関する情報を取得できます。
この情報を Java または Python コード、あるいは API デバッグページで利用して、OpenAPI を呼び出し、ノードをトリガーします。特定のインスタンスとその後続のワークフローをトリガーするには、
TriggerTimeパラメーターを固定値に設定します。すべてのインスタンスを動的にトリガーするには、TriggerTimeを動的変数に設定します。HTTP トリガーノードがトリガーコマンドを受信して検証すると、下流ノードが順番に実行されます。
トリガー条件
HTTP トリガーノードは、次の条件が満たされている場合にのみトリガーされます。
HTTP トリガーノードのスケジュールされたインスタンスが存在する必要があります。このインスタンスは、運用センターの Cycle Examples ページで確認できます。インスタンスは、TriggerSchedulerTaskInstance API によって正常にトリガーされるまで、[トリガー待ち] 状態のままです。その下流ノードは、
TriggerSchedulerTaskInstanceAPI が正常に呼び出されて 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トリガーノードのデプロイ
スケジュール設定が完了したら、HTTP トリガーノードを送信して本番環境にデプロイします。詳細については、「ノードのデプロイ」をご参照ください。
タスクがデプロイされると、スケジュール設定に基づいて定期的に実行されます。デプロイされた定期実行タスクをで表示し、タスクに対して O&M 操作を実行できます。詳細については、「定期実行タスクの管理」をご参照ください。
外部スケジューリング環境でのトリガー構成
外部スケジューリング環境でトリガー設定を構成する場合は、先ほど取得した HTTP トリガーノードインスタンスパラメーターを次のいずれかの方法で構成し、TriggerSchedulerTaskInstance API を呼び出して HTTP トリガーノードをトリガーする必要があります。
HTTPトリガーノードインスタンスパラメーターの取得
HTTP トリガーノードの構成時に選択したインスタンス生成方式に基づいて、オペレーションセンターで HTTP トリガーノードインスタンスパラメーターを確認して記録します。
T+1 翌日生成: 翌日、オペレーションセンターで HTTP インスタンスパラメーターを確認し、記録する必要があります。
公開後即時生成:オペレーションセンターですぐに HTTP インスタンスパラメーターを確認し、記録できます。
[オペレーションセンター] ページに移動します。
DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[オペレーションセンターに移動] をクリックします。
左側のナビゲーションペインで、 をクリックして、Cycle Examples ページに移動します。
リストで、作成した HTTP トリガーノードインスタンスを見つけて、インスタンスのタスク IDとスケジュール時刻を記録します。
説明HTTP トリガーノードインスタンスの名前にカーソルを合わせると、インスタンスのタスク IDを確認できます。
関連ドキュメント
DataWorks は、クロステナントシナリオでタスクをトリガーして実行するための HTTP トリガーノード機能を提供しています。詳細については、「HTTP トリガーノードを使用してテナント間でノード実行をトリガーする」をご参照ください。