データシステムを構築する際、異なるプラットフォームにまたがる依存関係を持つノードが存在する場合があります。トリガーノードを使用することで、これらの依存関係を管理できます。たとえば、システム A でアルゴリズムが開発され、Dataphin の定期タスクをそのアルゴリズムの出力に基づいて実行する必要がある場合などです。このトピックでは、トリガーノードの開発方法について説明します。
前提条件
外部トリガーノードを使用するには、以下の前提条件を満たす必要があります。
Dataphin OpenAPI 機能を購入済みであること。
トリガーリクエストを送信する環境が Dataphin へのネットワーク接続性を有していること。
トリガーノードの基本的な特徴
トリガーノードと他のコンピュートノードには、以下の類似点と相違点があります。
トリガーノードの定期インスタンスは、以下の条件が満たされたときに実行を開始します。
現在のシステム時刻が、インスタンスのスケジュールされた実行時間以降であること。これは他のコンピュートノードと同じです。
他のコンピュートタスクと同様に、すべての先祖ノードの実行ステータスが [成功] であること。
外部トリガーリクエストを受信済みであること。これはトリガーノードに固有の条件です。
トリガーノードのデータバックフィルインスタンスは、外部トリガーリクエストに依存しません。これは他のコンピュートノードと同じです。
トリガー方法
Dataphin は、OpenAPI を介してのみ外部システムからのトリガーリクエストの送信をサポートしています。これを外部トリガーと呼びます。
外部トリガー
外部トリガーを使用するには、次の手順に従います。
トリガー情報の取得
外部トリガーリクエストを送信する前に、以下の情報を取得する必要があります。
ノード ID (node_id):送信済みのトリガーノードの [プロパティ] パネルの [基本情報] セクションでノード ID を確認します。
プロジェクト ID (project_id):[開発] ページのブラウザの URL でプロジェクト ID を確認します。たとえば、URL が
https://www.aliyun.com/dev/codeManage/698348****632?env=DEV&projectId=6982117****30048&tenantId=309107012の場合、プロジェクト ID は6982117****30048です。テナント ID (tenant_id):[開発] ページのブラウザの URL でテナント ID を確認します。たとえば、URL が
https://www.aliyun.com/dev/codeManage/698348****632?env=DEV&projectId=6982117****30048&tenantId=309***012の場合、テナント ID は309***012です。
トリガーノードコードの記述
このトピックでは、Java コードを例として使用します。
重要必要な JAR パッケージは Alibaba Cloud ヘルプデスクから入手してください。
DefaultProfile profile = DefaultProfile.getProfile("<ご利用のリージョン>", "<Dataphin accessKey>", "<Dataphin secret>"); DefaultProfile.addEndpoint("<ご利用のリージョン>", "dataphin-public", "<ご利用の openapi エンドポイント>"); profile.getHttpClientConfig().setIgnoreSSLCerts(true); DefaultAcsClient client = new DefaultAcsClient(profile); ExecuteTriggerNodeRequest request = new ExecuteTriggerNodeRequest(); // トリガーされるノードが配置されているテナントの ID を設定します。 request.setOpTenantId(0L); // トリガーされる定期インスタンスのデータタイムスタンプを設定します。フォーマットは yyyy-MM-dd です。 request.setBizDate("<bizdate>"); // トリガーされるノードの ID を設定します。 request.setNodeId("<node_id>"); // トリガーされるノードが配置されているプロジェクトの ID を設定します。 request.setProjectId(0L); // 環境タイプを設定します。 request.setEnv("PROD"); ExecuteTriggerNodeResponse response = client.getAcsResponse(request); System.out.println(response.getCode());トリガーノードのコードが正常に実行され、Dataphin がトリガーリクエストを受信すると、トリガーノードのステータスが [成功] に変わります。