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

:サービスオーケストレーションの使用

最終更新日:Jan 11, 2025

DataService Studio のサービスオーケストレーション機能を使用すると、ノードを有向非巡回グラフ (DAG) にドラッグしてワークフローを設定できます。ビジネスロジックに基づいて、API と関数をシリアル、パラレル、またはブランチ構造で配置できます。

前提条件

  • DataWorks Enterprise Edition 以降がアクティブ化されていること。詳細については、「DataWorks エディションの課金」をご参照ください。

  • DataWorks ワークスペースが中国 (上海) リージョンに作成されていること。サービスオーケストレーション機能はアップグレード中です。機能がアップグレードされるまでお待ちください。

背景情報

ワークフローを実行して API を呼び出すと、DataWorks はワークフロー内のノードを順番に実行し、ノード間でパラメーターを渡し、各ノードのステータスを変更します。サービスオーケストレーション機能は、複数の API または関数を呼び出すプロセスを簡素化し、開発および O&M コストを削減します。このようにして、ビジネス開発に集中できます。

サービスオーケストレーション機能には、次の利点があります。

  • API 開発コストの削減

    ノードを DAG にドラッグした後、コードを記述することなく、API と関数をシリアル、パラレル、またはブランチ構造で配置できます。これにより、API 開発のコストが削減されます。

  • API と関数の呼び出しパフォーマンスの向上

    ワークフローを使用すると、コンテナー内の複数の API と関数を呼び出すことができます。API と関数を呼び出すためのコードを記述するのと比較して、サービスオーケストレーション機能は API と関数の呼び出しレイテンシを削減し、呼び出しパフォーマンスを大幅に向上させます。

  • サーバーレスアーキテクチャ

    サービスオーケストレーション機能は、サーバーレスアーキテクチャに基づいて構築されています。サーバーレスアーキテクチャは、ビジネス要件に基づいた自動リソーススケーリングをサポートします。基盤となるランタイム環境に焦点を当てる必要はありません。ビジネスロジックのみに集中できます。

リクエストおよびレスポンスパラメーターの値

DataService Studio は、JSONPath を使用してパラメーター値を取得します。 JSONPath は、JSON ファイルからデータを抽出できるクエリ言語です。詳細については、「JSONPath」をご参照ください。

たとえば、3 つのノードが A、B、C の順に実行されるとします。ノード C は、ノード A とノード B のレスポンスパラメーターを使用する必要があります。

  • ノード A のレスポンスパラメーター: {"namea":"valuea"}

    ノード A のレスポンスパラメーターの値を取得するための式: ${A.namea}

  • ノード B のレスポンスパラメーター: {"nameb":"valueb"}

    ノード B のレスポンスパラメーターの値を取得するための式: $.nameb または ${B.nameb}

組み込みの [開始ノード] は、ワークフロー全体のリクエストパラメーターを提供します。たとえば、ワークフローのリクエストパラメーターは {"namewf":"valuewf"} です。ワークフローのすべてのノードは、${START.namewf} 式を使用してリクエストパラメーターの値を取得できます。

説明

[開始ノード][終了ノード] は、ワークフローの組み込みノードです。ノードの名前を変更することはできますが、削除することはできません。ワークフローの [開始ノード] は、ワークフローのノード 0 と同等です。

パラメーター

  • ワークフローのリクエストパラメーター

    ワークフローの設定タブで、右側のナビゲーションペインの [リクエストパラメーター] タブをクリックします。次に、[手動追加] モードまたは [自動解析] モードでリクエストパラメーターを設定できます。

    • [手動追加]: [パラメーターの追加] をクリックし、ワークフローのリクエストパラメーターを手動で追加します。

    • [自動解析]: ワークフローの最初のノードが API ノードである場合、[リクエストパラメーターを自動的に解析] をクリックして、この API ノードのリクエストパラメーターをワークフローのリクエストパラメーターに自動的にマッピングします。

  • API ノードのリクエストパラメーター

    API ノードをクリックします。表示されるパネルで、[入力リクエストパラメーター] をクリックし、リクエストパラメーターの値を指定します。

    • リクエストパラメーターの値を指定しない場合、DataService Studio は親ノードによって返される JSON 文字列の最初のレイヤーにある同じパラメーターの値を取得し、その値をリクエストパラメーターに割り当てます。

      説明

      現在のノードがワークフローの最初のノードである場合、このノードのリクエストパラメーターの値は、ワークフローの同じパラメーターに割り当てられます。

    • リクエストパラメーターの値を指定した場合、DataService Studio は指定した値を使用します。

      説明

      指定された祖先ノードによって返される特定のパラメーターの値を参照するには、JSONPath 式を使用する必要があります。

  • API ノードのレスポンスパラメーター

    API ノードをクリックします。表示されるパネルで、[出力結果の設定] を選択し、JSON 式を使用してノードの出力をカスタマイズします。次のサンプルコードは例を示しています。

    {
      "return1":"$.data.rows.user_id", // return1 を data.rows.user_id に設定
      "return2":"$.data.rows.user_name" // return2 を data.rows.user_name に設定
    }
  • Python ノードのリクエストパラメーター

    Python ノードをクリックします。表示されるパネルで、[リクエストパラメーター] フィールドにリクエストパラメーターを指定します。

  • Python ノードのレスポンスパラメーター

    Python ノードをクリックします。表示されるパネルで、[出力結果の設定] を選択し、JSON 式を使用してノードの出力をカスタマイズします。次のサンプルコードは例を示しています。

    {
      "return1":"$.data.rows.user_id", // return1 を data.rows.user_id に設定
      "return2":"$.data.rows.user_name" // return2 を data.rows.user_name に設定
    }

次の表は、パラメーター値を取得するために使用される一般的な JSONPath 式を示しています。

JSONPath 式

リクエストパラメーターでの役割

レスポンスパラメーターでの役割

$.

親ノードの出力のルートオブジェクトを取得します。

現在のノードの出力のルートオブジェクトを取得します。

$.param

親ノードの出力の param パラメーターの値を取得します。

現在のノードの出力の param パラメーターの値を取得します。

${START}

[開始ノード] の出力を取得します。

${NodeID}

指定された ID を持つノードの出力を取得します。

${NodeID.param}

指定された ID を持つノードの出力の param パラメーターの値を取得します。

  1. DataService Studio ページに移動します。

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

  2. API を登録します。

    この例では、登録方法を使用して API を作成します。

    1. 左側のナビゲーションペインで、image アイコンをクリックして [サービス開発] ページに移動します。

    2. image アイコンにポインターを移動し、[API の作成] > [API の登録] を選択します。

    3. [API の登録] ダイアログボックスで、ビジネス要件に基づいてパラメーターを設定します。詳細については、「API の登録」をご参照ください。

    4. [OK] をクリックします。

  3. 関数を登録します。

    1. [サービス開発] タブで、新建 アイコンにポインターを移動し、[関数の作成] > [python 関数の作成] を選択します。

      目的のビジネスプロセスを展開し、[関数] を右クリックして、[関数の作成] > [python 関数の作成] を選択することもできます。

    2. [python 関数の作成] ダイアログボックスで、ビジネス要件に基づいてパラメーターを設定します。詳細については、「関数の管理」をご参照ください。

    3. [OK] をクリックします。

    4. 関数の設定タブで、[コードの編集] セクションに次のコードを入力します。

      # -*- coding: utf-8 -*-
      # event (str) : フィルター内では API の結果、それ以外の場合はパラメーター
      # context : 環境情報、一時的に使用しない
      # インポートモジュール制限: json,time,random,pickle,re,math
      import json
      def handler(event,context):
          # 文字列を JSON オブジェクトにロード
          obj = json.loads(event)
          # ここにコードを追加
          # 追加終了
          return obj
    5. [環境設定] セクションで、[メモリ] パラメーターと [関数のタイムアウト] パラメーターを設定します。

    6. ツールバーの 保存 アイコンをクリックします。

  4. ワークフローを作成します。

    1. [サービス開発] タブで、新建 アイコンにポインターを移動し、[ワークフローの作成] を選択します。

      目的のビジネスプロセスを展開し、[ワークフローの作成] を右クリックして、[ワークフローの作成] を選択することもできます。

    2. [ワークフローの作成] ダイアログボックスで、ビジネス要件に基づいてパラメーターを設定します。

      服务编排

      パラメーター

      説明

      [API 名]

      API の名前。名前は 4 ~ 50 文字で、英字、数字、アンダースコア (_) を使用できます。名前は英字で始める必要があります。

      [API パス]

      API を保存するパス。例: /user

      説明

      パスは最大 200 文字で、英字、数字、スラッシュ (/)、アンダースコア (_)、ハイフン (-) を使用できます。パスはスラッシュ (/) で始める必要があります。

      [プロトコル]

      API で使用するプロトコル。有効な値: [HTTP] および [HTTPS]

      HTTPS を使用して API を呼び出す必要がある場合は、API が API Gateway に公開された後、API Gateway コンソールで API に独立ドメイン名を関連付ける必要があります。また、API Gateway コンソールに Secure Sockets Layer (SSL) 証明書をアップロードする必要があります。詳細については、「API の HTTPS ベースの呼び出しを有効にする」をご参照ください。

      [リクエストメソッド]

      リクエストメソッド。有効な値: [GET] および [POST]

      [レスポンスコンテンツタイプ]

      API のレスポンス形式。値を [JSON] に設定します。

      [表示範囲]

      API が表示されるユーザーの範囲。有効な値:

      • [ワークスペース]: API は現在のワークスペースのすべてのメンバーに表示されます。

      • [プライベート]: API は所有者のみに表示され、API の権限を他のメンバーに付与することはできません。

        説明

        このパラメーターを [プライベート] に設定すると、ワークスペース内の他のメンバーは API リストで API を表示できません。

      [ラベル]

      API に追加するタグ。[ラベル] ドロップダウンリストからタグを選択します。

      説明

      タグは最大 20 文字で、英字、数字、アンダースコア (_) を使用できます。ワークフローには最大 5 つのタグを設定できます。

      [説明]

      API の説明。説明は最大 2,000 文字です。

      [保存先フォルダー]

      ワークフローを保存するフォルダー。

    3. [OK] をクリックします。

  5. ワークフローを設定します。

    1. ワークフローの設定タブで、ノードを DAG にドラッグし、ノードを接続します。次の図は例を示しています。

      连线

    2. [API1] ノードをクリックします。表示されるパネルで、[API の選択] ドロップダウンリストから登録した API を選択し、[出力結果の設定] を選択して、{"user_id":"$.data[0].id"} と入力します。

      配置

      JSONPath 式を使用してレスポンスパラメーターを設定します。パラメーターの値を取得するための構文は ${NodeA.namea} で、リクエストパラメーターを設定する場合と同じです。{"user_id":"$.data[0].id"} は、data 配列の最初の要素の id パラメーターの値を user_id パラメーターに割り当てます。その後、API1 ノードは JSON 形式で {"user_id":"value"} を返します。

    3. [PYTHON1] ノードをクリックします。表示されるパネルで、[関数の選択] ドロップダウンリストから登録した関数を選択します。

    4. [SWITCH1] ノードをクリックします。表示されるパネルで、[分岐条件の設定] をクリックします。

      親ノードのレスポンスパラメーターに基づいて条件式を入力できます。たとえば、${ノード ID.パラメーター}>1 または $.パラメーター>1 形式で式を入力できます。条件式は、次の演算子をサポートしています: ==!=>=><=<&&!()+-*/%

      この例では、user_id パラメーターは API1 ノードのレスポンスパラメーターであり、SWITCH1 ノードのリクエストパラメーターとして使用されます。

      分岐ノード 1: $.user_id != 1 は、user_id パラメーターの値が 1 でない場合に分岐ノード 1 が実行されることを示します。
      分岐ノード 2: $.user_id == 1 は、user_id パラメーターの値が 1 の場合に分岐ノード 2 が実行されることを示します。

    5. [終了] ノードをクリックします。次に、右側のナビゲーションペインの [レスポンスパラメーター] タブをクリックし、レスポンスパラメーターを設定します。

  6. ワークフローをテストします。

    1. 右上隅の [テスト] をクリックします。

    2. [API のテスト] ダイアログボックスで、[決定] をクリックします。

    3. 設定タブの下部にある [操作ログ] タブと [実行結果] タブで、実行ログと実行結果を表示します。