Serverless Workflow は複数の Alibaba Cloud サービスを統合し、タスクステップでそれらを実行ユニットとして使用できます。サービス統合は Flow Definition Language (FDL) で定義されます。[Task] ステップでは、resourceArn でターゲットサービスを、pattern で統合モードを指定します。
サポートされている Alibaba Cloud サービスの一覧については、「サポートされている Alibaba Cloud サービス」をご参照ください。
統合モード
Serverless Workflow は 3 つの統合モードをサポートしています。
-
リクエスト/レスポンスモードでは、Serverless Workflow がサードパーティ サービスを呼び出し、HTTP レスポンスを受信した後に次のステップに進みます。これはデフォルトの統合モードです。
FDL ステップでは、
resourceArnを使用してターゲットサービスを指定し、pattern: requestResponseを使用して統合モードを指定します。このパラメーターはオプションです。省略した場合、Serverless Workflow はデフォルトのリクエスト/レスポンスモードを使用し、API コールが返された直後に次のステップに進みます。次の例では、Serverless Workflow が統合サービスである子フローを使用します。version: v1 type: flow steps: - type: task name: testSubflow resourceArn: acs:fnf:::flow/flowABC # 子フローを記述します。 pattern: requestResponse # 統合モードを記述します: デフォルト (リクエスト/レスポンス) モード。 - type: pass name: dummyこの例では、
testSubflowステップがflowABCフローをトリガーすると、実行は、flowABCフローがまだ実行中である可能性がある状態で、次のステップであるdummyに進みます。 -
同期モード: Serverless Workflow は、タスクを開始するための非同期 API を提供するサービスと連携します。タスクを送信すると、Serverless Workflow は次のステップに進む前にタスクが完了するまで待機します。
同期モードをサポートするサービスは、通常、タスクを開始するための非同期 API を公開します。Serverless Workflow はタスクを送信し、それが完了するまで待機してから次のステップに進みます。
FDL ステップでは、
resourceArnを使用して対象のサービスを指定し、pattern: syncを使用して統合モードを指定します。次の例では、Serverless Workflow が統合サービスである子フローを使用します。version: v1 type: flow steps: - type: task name: testTask resourceArn: acs:fnf:::flow/flowABC # 子フローを記述します。 pattern: sync # 統合モードを記述します: 同期。 - type: pass name: dummyこの例では、
testTaskステップが実行されると、flowABCフローがトリガーされます。ワークフローは、flowABCフローが完了した後にのみ、次のステップであるdummyに進みます。 -
コールバック待機モード: Serverless Workflow はサービスを呼び出し、タスクトークンを渡します。フローは、そのタスクトークンを含むコールバック指示を受信するまで一時停止します。
FDL ステップでは、
resourceArnで対象サービスを、pattern: waitForCallbackで統合モードを指定します。次の例では、Serverless Workflow が統合サービスである子フローを使用します。version: v1 type: flow steps: - type: task name: testSubflow resourceArn: acs:fnf:::flow/flowABC # 子フローを記述します。 pattern: waitForCallback # 統合モードを記述します: コールバック待機。 - type: pass name: dummyこの例では、
testSubflowステップが実行されると、flowABCフローがトリガーされます。フローは、ReportTaskSucceedAPI またはReportTaskFailedAPI からコールバックを受信するまで一時停止します。コールバックが処理されると、フローはdummyステップに進みます。一方、flowABCフローは、すでに完了しているか、まだ実行中である可能性があります。
コンテキストオブジェクト
コンテキストオブジェクトは、フロー実行インスタンス内で利用可能な内部 JSON オブジェクトです。フローとそのステップに関する情報が含まれています。inputMappings を使用して、コンテキストデータを特定の変数にマッピングします。以下の例は、コンテキストオブジェクトの構造を示しています。
"context": {
"flow": {
// 現在のフローの一意の ID と名前。どちらも文字列です。
"id": "val1",
"name": "val2"
},
"execution": {
// 現在の実行の名前。
"name": "val3"
},
"step": {
// 現在のステップの名前。
"name": "val4",
// 現在のステップのイベント ID。
"eventId": "val5",
// 現在のループ反復番号。これは foreach ステップで利用可能です。
"IterationIndex": "val6"
},
"task": {
// このステップの識別子。文字列で、コールバック待機モードで利用可能です。
"token": "val7"
}
}
たとえば、Serverless Workflow サービスを統合する場合、子フローでコールバックを実行するために、呼び出し元のステップの親フロー情報と taskToken を取得する必要がある場合があります。 次の例では、これらのフィールドを取得する方法を示します。
...
inputMappings:
- target: current_flow_name
source: $context.flow.name
- target: current_execution_name
source: $context.execution.name
- target: current_step_task_token
source: $context.task.token
統合クラウドサービス
|
ソリューション |
requestResponse |
sync |
waitForCallback |
|
Function Compute (FC) |
サポート |
非サポート |
非サポート |
|
Simple Message Queue (formerly MNS) キュートリガー |
サポート |
非サポート |
サポート |
|
Simple Message Queue (formerly MNS) トピックトリガー |
サポート |
非サポート |
サポート |
|
サーバーレスワークフロー (SWF) |
サポート |
サポート |
サポート |