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

DataWorks:セルフマネージドサービスに基づく拡張機能の開発とデプロイ

最終更新日:Mar 18, 2025

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 を使用してイベントメッセージを消費する方法を示しています。

image
説明

拡張機能が拡張ポイントイベントによってトリガーされると、イベントプロセスは [チェック中] 状態になります。拡張機能が 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 に送信します。

  1. 拡張機能のコードを開発します。

    イベントメッセージを解析する

    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 フィールドに対応しています。詳細については、「開発リファレンス:イベントメッセージとイベントメッセージの形式」トピックの「付録:メッセージ形式」セクションを参照してください。

  2. 拡張機能を実行可能な .jar ファイルとしてパッケージ化します。

ステップ 3:拡張機能をデプロイする

拡張機能のコードを開発およびデバッグした後、コードパッケージをアプリケーションサービスとして Alibaba Cloud Elastic Compute Service (ECS) インスタンスまたは別のクラウドサービスにデプロイする必要があります。

DataWorks

コードを開発した後、DataWorks で拡張機能を登録および管理できます。

ステップ 1:拡張機能を登録する

拡張機能を使用する前に、DataWorks に拡張機能を登録し、後続のコード開発のために拡張コードを取得する必要があります。拡張機能を登録するには、次の手順を実行します。

  1. オープン プラットフォームページに移動します。

    DataWorks コンソールにログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションペインで、[その他] > [オープン プラットフォーム] を選択します。[開発者バックエンド] タブが表示されます。

  2. 拡張機能を登録します。

    1. 表示されるページの左側のナビゲーションペインで、[拡張機能] をクリックします。

    2. [拡張機能の一覧] セクションで [拡張機能の登録] をクリックします。[拡張機能の登録] ウィザードの [デプロイ方法の選択] ステップで、[拡張機能のデプロイ方法を選択] パラメーターを [セルフマネージドサービスに基づいてデプロイ] に設定し、[拡張機能の登録] ステップでパラメーターを設定します。

      パラメーター

      パラメーター

      説明

      拡張機能名

      拡張機能を識別するために使用されるカスタム拡張機能の名前。

      処理済み拡張ポイント

      拡張機能でチェックする拡張ポイントイベントのタイプ。サポートされている拡張ポイントイベントの詳細については、「拡張機能」を参照してください。ビジネス要件に基づいてこのパラメーターを設定できます。

      説明
      • このパラメーターを設定した後、システムは自動的に [イベント] パラメーターと [適用可能なサービス] パラメーターを設定します。

      • 拡張ポイントイベントは、テナントレベルのイベントとワークスペースレベルのイベントに分類されます。拡張機能を登録するときは、1 つのタイプのイベントのみを選択できます。 DataWorks でサポートされている拡張ポイントイベントのタイプの詳細については、「開発リファレンス:イベントメッセージとイベントメッセージの形式」を参照してください。

      • Function Compute に基づいてデプロイされた拡張機能は、データダウンロードの事前イベントのみを処理できます。

      所有者

      拡張機能の所有者。拡張機能のユーザーは、問題が発生した場合にできるだけ早く拡張機能の所有者に連絡できます。

      テスト用ワークスペース

      拡張機能をテストするために使用されるワークスペース。拡張機能が有効かどうかを確認するために、拡張機能を公開する必要はありません。テストワークスペースは、拡張機能が予期どおりに機能するかどうかを確認できるエンドツーエンドテストをサポートしているためです。

      テストワークスペースでは、開発者はイベントをトリガーして、DataWorks が EventBridge を使用して関連メッセージを拡張機能に送信するかどうか、および拡張機能がイベントをチェックしてチェック結果を DataWorks に送信するかどうかを確認できます。

      説明

      [処理する拡張ポイントイベント] がテナントレベルの拡張ポイントイベントの場合、[テスト用ワークスペース] パラメーターを設定する必要はありません。

      拡張機能の詳細アドレス

      拡張機能の詳細ページの URL。

      拡張機能を開発およびデプロイした後、拡張機能の動作を表示する Web ページを開発できます。ユーザーがこの Web ページにアクセスして拡張機能をよりよく理解して使用できるように、このパラメーターをページ URL に設定します。たとえば、ユーザーは Web ページにアクセスして、拡張機能によってプロセスがチェックおよびブロックされた理由を確認できます。

      拡張機能のドキュメントアドレス

      拡張機能のドキュメントページの URL。

      拡張機能を開発およびデプロイした後、ヘルプドキュメントページを開発できます。ユーザーが拡張機能のビジネスロジックとプロパティを理解できるように、このパラメーターをページ URL に設定します。

      拡張機能のパラメーター

      拡張機能の開発とアプリケーションの効率を向上させるために使用する拡張パラメーター。

      一般的なシナリオの組み込みパラメーターと、今後の参照用のカスタムパラメーターの両方を入力できます。

      key=value の形式で複数のパラメーターを入力できます。各パラメーターが別々の行を占めるようにしてください。

      説明

      たとえば、拡張機能の組み込みパラメーター extension.project.disabled を使用して、指定したワークスペースで拡張機能が有効にならないようにすることができます。これらのパラメーターの使用方法の詳細については、「高度な機能:拡張パラメーターの設定」を参照してください。

      拡張機能のオプション

      拡張機能の設定項目。設定項目は、ユーザーがビジネス要件に基づいて異なるワークスペースでカスタムプロセス管理を実装するために提供されます。拡張機能の開発者は、[拡張機能の登録] ダイアログボックスで各設定項目を JSON 文字列で定義する必要があります。

      たとえば、拡張機能の開発者は、このパラメーターに基づいてユーザーが SQL ステートメントの長さを管理できるようにすることができます。 JSON 形式の詳細については、「高度な機能:拡張機能のオプションの定義」を参照してください。

  3. [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 によってプッシュされたメッセージをフィルタリングするために、イベントタイプを使用できます。各イベントのタイプは異なります。
}
説明

イベントメッセージの内容は、イベントタイプによって異なります。イベントメッセージの詳細については、「開発リファレンス:イベントメッセージとイベントメッセージの形式」を参照ください。

カスタム拡張機能を開発するためのサンプルコード

拡張開発手順の注意事項を理解したら、ビジネス要件に基づいて拡張コードを開発できます。次のトピックでは、一般的なシナリオでの拡張機能の登録、開発、およびアプリケーションの例を示します。

参考資料