Serverless Workflow は複数のAlibaba Cloudサービスと統合できます。統合後、これらのサービスは Serverless Workflow のタスクステップで実行されます。サービス統合モードは Flow Definition Language(FDL)で定義されます。[タスク] ステップでは、resourceArn を使用して統合するサービスを定義し、pattern を使用して使用する統合モードを定義できます。このトピックでは、統合モード、コンテキストオブジェクト、統合クラウドサービスなど、サービス統合に関する情報を説明します。
利用可能なクラウドサービスの詳細については、統合クラウドサービスをご参照ください。
統合モード
Serverless Workflow は、次の 3 つの統合モードをサポートしています。
リクエストレスポンスモード: このモードでは、サードパーティサービスを呼び出すと、Serverless Workflow は HTTP レスポンスを取得した直後に次のステップに進みます。これはデフォルトモードです。
FDL で定義されたワークフローステップでは、
resourceArnパラメーターはサービスを定義し、pattern: requestResponseパラメーターはサービス統合モードを定義します。 pattern: requestResponse パラメーターはオプションです。指定しない場合、デフォルトの統合モードが使用されます。このモードでは、Serverless Workflow は呼び出しレスポンスを受信した直後に次のステップに進みます。次の例は、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ステップに進みますが、flowABCはまだ実行中である可能性があります。同期モード: このモードでは、サービスは一般に非同期実行用の API を提供します。Serverless Workflow が API を呼び出した後、Serverless Workflow は関連するタスクが完了し、実行結果が返されるまで待機してから、次のステップに進みます。
特定の統合サービスの場合、Serverless Workflow は関連するタスクが完了するまで待機してから、次のステップに進みます。このタイプのサービスは、タスクを開始するための非同期 API を提供します。次のステップを開始する前に、タスクを送信し、タスクが完了するまで待機する必要があります。
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この例では、タスクステップが実行されると、Serverless Workflow 子ワークフローがトリガーされます。子ワークフローがトリガーされた後、ワークフローは子ワークフローの実行結果を待機してから、次のステップに進みます。
testTaskステップが実行されると、flowABC子ワークフローがトリガーされます。 flowABC がトリガーされた後、ワークフローはその実行結果を待機します。flowABCが完了すると、ワークフローはdummyステップに進みます。この時点で、flowABC は完了しています。コールバック待機モード: このモードでは、サードパーティサービスを呼び出してタスクトークンを渡すと、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子ワークフローがトリガーされます。 flowABC がトリガーされると、ワークフローは一時停止し、ReportTaskSucceedまたはReportTaskFailedAPI 操作の呼び出しによって実装されるコールバックを待機します。ワークフローがコールバックリクエストを受信して処理すると、flowABCが完了したかどうかに関係なく、dummyステップに進みます。コールバックはユーザーが開始します。
コンテキストオブジェクト
コンテキストオブジェクトは、ワークフロー実行インスタンス内の内部 JSON オブジェクトであり、実行とステップに関する情報が含まれています。このオブジェクトを使用すると、外部サービスからアクセスできます。アクセスを実装するには、コンテキストオブジェクトを入力マッピングの特定の変数にマッピングします。次の例は、使用可能なコンテキストオブジェクトの構造を示しています。
"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 を取得する必要があります。 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 統合クラウドサービス
サービス | リクエストレスポンスモード | 同期モード | コールバック待機モード |
Function Compute | サポートされています | サポートされていません | サポートされていません |
Simple Message Queue (formerly MNS) キュー | サポートされています | サポートされていません | サポートされています |
Simple Message Queue (formerly MNS) トピック | サポートされています | サポートされていません | サポートされています |
Serverless Workflow | サポートされています | サポートされています | サポートされています |