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

CloudFlow:概要

最終更新日:Jan 12, 2025

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 または ReportTaskFailed API 操作の呼び出しによって実装されるコールバックを待機します。ワークフローがコールバックリクエストを受信して処理すると、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

サポートされています

サポートされています

サポートされています