DataWorks で実行される操作を管理するためのカスタムロジック(特定の操作のブロックなど)を拡張機能に設定できます。拡張機能は、特定のイベントに関する処理結果を返し、DataWorks でのプロセス制御を実装します。このトピックでは、セルフマネージドサービスに基づいて拡張機能を開発およびデプロイする方法について説明します。
背景情報
前提条件
イベントメッセージサブスクリプション 機能が有効になっています。セルフマネージドサービスに基づく拡張機能の開発とデプロイは、EventBridge のイベントメッセージ配信機能に依存します。 DataWorks からのイベントメッセージを受信するために EventBridge でイベントバスを指定し、イベントバスからのイベントメッセージを受信するためにオンプレミスまたはクラウドベースのサービスを指定してください。
制限事項
DataWorks Enterprise Edition のユーザーのみが拡張機能モジュールを使用できます。
拡張機能モジュールは、次のリージョンで使用できます:中国 (北京)、中国 (杭州)、中国 (上海)、中国 (張家口)、中国 (深圳)、中国 (成都)、米国 (シリコンバレー)、米国 (バージニア)、ドイツ (フランクフルト)、日本 (東京)、中国 (香港)、シンガポール。
注意事項
[オープン プラットフォーム管理者]、[テナント管理者]、Alibaba Cloud アカウント、および [aliyundataworksfullaccess] ポリシーがアタッチされている RAM ユーザーのみが、開発者バックエンドに対する読み取りおよび書き込み権限を持っています。権限管理の詳細については、「グローバルレベルのサービスに対する権限の管理」および「RAM ポリシーを使用した DataWorks サービスおよび DataWorks コンソール内のエンティティに対する権限の管理」をご参照ください。
DataWorks Enterprise Edition の有効期限が切れると、拡張機能は無効になり、拡張ポイントイベントをチェックするためにトリガーできなくなります。拡張機能がイベントをチェックするためにトリガーされ、DataWorks Enterprise Edition の有効期限が切れる前にチェックが完了しない場合、チェックは終了し、結果は「チェック合格」として返されます。
プラットフォーム for AI ノード、do-while ノード、for-each ノードなどの複合ノードが拡張チェックをトリガーする場合、後続の操作を実行する前に、複合ノードのすべての内部ノードがチェックに合格するまで待機する必要があります。
同じ拡張ポイントイベントに複数の拡張機能を関連付けることができます。このように、イベントが発生したときに、関連付けられた拡張機能がトリガーされます。
プロセス
次の図は、セルフマネージドサービスに基づいて開発およびデプロイされた拡張機能が、EventBridge を使用してイベントメッセージを消費する方法を示しています。
拡張機能が拡張ポイントイベントによってトリガーされると、イベントプロセスは [チェック中] 状態になります。拡張機能が API オペレーションを呼び出すことによって処理結果を DataWorks に送信した後、DataWorks はプロセスをブロックするかどうかを決定します。
ユーザー
DataWorks にセルフマネージドサービスに基づく拡張機能をデプロイする前に、拡張機能を開発し、オンプレミスまたはクラウドベースのサービスにデプロイする必要があります。付録:DataWorks オープン プラットフォームサンプルコードライブラリを参照して、プロジェクトコードを初期化し、GitHubからオープン プラットフォームのサンプルコードを取得できます。イベントバスからイベントメッセージを受信するために使用するサービスのタイプに基づいて、拡張機能を開発およびデプロイする必要があります。
ステップ 1:拡張機能の依存関係を設定する
拡張機能を開発する場合は、pom.xml ファイルに次の依存関係を追加する必要があります。 EventBridge を使用すると、さまざまなタイプのイベントターゲットを使用してイベントを処理および消費できます。指定した イベントターゲットに基づいて、他の依存関係を設定できます。
DataWorks 依存関係ライブラリ
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dataworks_public20200518</artifactId>
<version>5.6.0</version>
</dependency>依存関係のパッケージ化
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>ステップ 2:拡張機能を開発する
EventBridge のイベントバスによってルーティングされたイベントメッセージは、オンプレミスまたはクラウドベースのサービスにプッシュされます。サービスは、イベントバスによってプッシュされた DataWorks イベントメッセージを受信し、特定の DataWorks API オペレーションを呼び出して、処理結果を DataWorks に送信します。
拡張機能のコードを開発します。
イベントメッセージを解析する
DataWorks のイベントメッセージの形式については、「開発リファレンス:イベントメッセージとイベントメッセージの形式」トピックの 付録:メッセージ形式 セクションを参照してください。イベントメッセージでは、
dataフィールドにメッセージの内容が指定されています。実際の開発では、data.eventCodeフィールドを使用してメッセージタイプを確認し、idフィールドを使用してメッセージの詳細を取得できます。説明DataWorks オープン プラットフォームの OpenEvent モジュールは、EventBridge を使用して DataWorks イベントメッセージを配信します。拡張機能を開発する前に、DataWorks で イベントメッセージサブスクリプション 機能を有効にする必要があります。
処理ロジックを記述する
ビジネス要件に基づいて、イベントバスによってプッシュされたイベントメッセージの処理ロジックを記述します。拡張機能のコードを開発する場合は、次の方法を使用して、開発効率とアプリケーション効果を向上させることができます。
拡張パラメーターを使用します。たとえば、
extension.project.disabledパラメーターを設定して、指定したワークスペースで拡張機能が有効にならないようにすることができます。詳細については、「高度な機能:拡張パラメーターの設定」をご参照ください。DataStudio の拡張ポイントイベントの GetIDEEventDetail オペレーションで
MessageIdパラメーターを設定して、拡張ポイントイベントのスナップショットを取得します。
説明MessageIdパラメーターは、イベントメッセージの id フィールドに対応しています。詳細については、「開発リファレンス:イベントメッセージとイベントメッセージの形式」トピックの 付録:メッセージ形式 セクションを参照してください。拡張機能の処理結果を DataWorks に返す
拡張機能がデプロイされているサービスは、API オペレーションを呼び出して、拡張機能で指定された拡張ポイントイベントの処理結果を DataWorks に返すことができます。 API オペレーションは、拡張ポイントイベントが属する DataWorks サービスによって異なります。
DataStudio の拡張ポイントイベント:UpdateIDEEventResult API オペレーションを呼び出して、処理結果を返します。
オペレーションセンターの拡張ポイントイベント:UpdateWorkbenchEventResult API オペレーションを呼び出して、処理結果を返します。
その他の DataWorks サービスの拡張ポイントイベント:CallbackExtension API オペレーションを呼び出して、処理結果を返します。
特定の API オペレーションは、次のレスポンスパラメーターを返します。
CheckResult:イベントメッセージの処理結果。有効な値:
OK:拡張ポイントイベントは拡張機能のチェックに合格します。FAIL:拡張ポイントイベントは拡張機能のチェックに失敗します。サービスが予期どおりに実行されるように、報告されたエラーをできるだけ早くチェックして処理する必要があります。WARN:拡張ポイントイベントは拡張機能のチェックに合格しますが、イベントに対して警告が報告されます。
ExtensionCode:拡張機能のコード。拡張機能を登録した後、[拡張機能] ページの [拡張機能の一覧] セクションで拡張機能のコードを表示できます。
MessageId:メッセージの ID。このパラメーターは、イベントメッセージの id フィールドに対応しています。詳細については、「開発リファレンス:イベントメッセージとイベントメッセージの形式」トピックの「付録:メッセージ形式」セクションを参照してください。
拡張機能を実行可能な
.jarファイルとしてパッケージ化します。
ステップ 3:拡張機能をデプロイする
拡張機能のコードを開発およびデバッグした後、コードパッケージをアプリケーションサービスとして Alibaba Cloud Elastic Compute Service (ECS) インスタンスまたは別のクラウドサービスにデプロイする必要があります。
DataWorks
コードを開発した後、DataWorks で拡張機能を登録および管理できます。
ステップ 1:拡張機能を登録する
拡張機能を使用する前に、DataWorks に拡張機能を登録し、後続のコード開発のために拡張コードを取得する必要があります。拡張機能を登録するには、次の手順を実行します。
オープン プラットフォームページに移動します。
DataWorks コンソールにログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションペインで、 を選択します。[開発者バックエンド] タブが表示されます。
拡張機能を登録します。
表示されるページの左側のナビゲーションペインで、[拡張機能] をクリックします。
[拡張機能の一覧] セクションで [拡張機能の登録] をクリックします。[拡張機能の登録] ウィザードの [デプロイ方法の選択] ステップで、[拡張機能のデプロイ方法を選択] パラメーターを [セルフマネージドサービスに基づいてデプロイ] に設定し、[拡張機能の登録] ステップでパラメーターを設定します。
[OK] をクリックします。
説明拡張機能を登録した後、[拡張機能] ページの [拡張機能の一覧] セクションで拡張機能を表示できます。
ステップ 2:拡張機能を公開する
DataWorks で拡張機能を開発、デプロイ、および登録した後、拡張機能をテストし、レビューのために拡張機能を送信してから、拡張機能を公開する必要があります。その後、拡張機能の所有者以外の管理者は、管理センターで拡張機能を有効にできます。詳細については、「拡張機能の使用」を参照してください。
付録:EventBridge に送信されるイベントメッセージの形式
次のサンプルコードは、完全なイベントメッセージの例を示しています。 data パラメーターは、イベントメッセージの内容を指定します。 EventBridge は、コンテンツに基づいて他の情報を提供します。
{
"datacontenttype": "application/json;charset=utf-8", //data フィールドのコンテンツタイプ。datacontenttype は application/json コンテンツタイプのみをサポートします。
"aliyunaccountid": "1111",//Alibaba Cloud アカウントの ID。
"aliyunpublishtime": "2024-07-10T07:25:34.915Z",//EventBridge がイベントメッセージを受信した時刻。
"data": {
"tenantId": 28378****10656,//テナントの ID。DataWorks の各 Alibaba Cloud アカウントは、テナントに対応しています。各テナントには独自のテナント ID があります。テナント ID を表示するには、DataStudio ページの右上隅にあるユーザー名をクリックし、[メニュー] セクションで [ユーザー情報] をクリックします。
"eventCode": "xxxx"//
},
"aliyunoriginalaccountid": "11111",
"specversion": "1.0",
"aliyuneventbusname": "default",//DataWorks イベントメッセージを受信するために使用されるイベントバスの名前。
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",//イベント ID。ID は、イベントの一意の識別子です。
"source": "acs.dataworks",//イベントソース。イベントを生成したサービスを示します。この例では、イベントメッセージは DataWorks によってプッシュされます。
"time": "2024-07-10T15:25:34.897Z",//イベントが生成された時刻。
"aliyunregionid": "cn-shanghai",//イベントが受信されたリージョン。
"type": "dataworks:ResourcesUpload:UploadDataToTable"//イベントタイプ。EventBridge コンソールで DataWorks によってプッシュされたメッセージをフィルタリングするために、イベントタイプを使用できます。各イベントのタイプは異なります。
}イベントメッセージの内容は、イベントタイプによって異なります。イベントメッセージの詳細については、「開発リファレンス:イベントメッセージとイベントメッセージの形式」を参照ください。
カスタム拡張機能を開発するためのサンプルコード
拡張開発手順の注意事項を理解したら、ビジネス要件に基づいて拡張コードを開発できます。次のトピックでは、一般的なシナリオでの拡張機能の登録、開発、およびアプリケーションの例を示します。
参考資料
さまざまなタイプのイベントのメッセージ形式については、「開発リファレンス:イベントメッセージとイベントメッセージの形式」を参照してください。
OpenEvent モジュールを使用すると、EventBridge を使用して拡張ポイントイベントをサブスクライブできます。詳細については、「OpenEvent」を参照してください。
DataWorks 拡張機能で処理できる拡張ポイントイベントの詳細については、「拡張機能」を参照してください。
Function Compute に基づいて拡張機能をデプロイすることもできます。詳細については、「Function Compute に基づく拡張機能の開発とデプロイ」を参照してください。