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

CloudFlow:Serverless Workflow との統合

最終更新日:Jun 04, 2026

Serverless Workflow の子フロー機能を使用すると、あるフロー内から別のフローを実行できます。このページでは、Serverless Workflow における子フローの利用シーン、統合モード、コンテキストオブジェクト、および入出力ルールについて説明します。

利用シーン

次のいずれかの要件がある場合は、Serverless Workflow の統合をご利用ください。

  • 大規模なフローを、より小さく管理しやすいフローに分割する。
  • 複数のフロー間で共通のステップを再利用する。
  • 単一フローの制限(例:最大イベント数(デフォルト:5,000)、最大実行時間(1 年))を回避する。
  • コントロールステップ内の障害ポイントを処理する。たとえば、並列ステップを子フローとして作成し、親フロー内でその実行時の障害をハンドルします。

統合モード

Serverless Workflow の統合には、リクエスト/レスポンス(requestResponse)、同期(sync)、コールバック待ち(waitForCallback)の 3 つのモードがあります。

  • リクエスト/レスポンス(requestResponse)モード
    親フローは子フローを開始した直後に次のステップに進みます。
    version: v1
    type: flow
    steps:
      - type: task
        name: fnfInvoke
        resourceArn: acs:fnf:::flow/subflow_demo_child
        pattern: requestResponse # オプション。デフォルトモードです。
        inputMappings: # inputMappings を指定しない場合、親フローのパラメーターがデフォルトのマッピングルールに基づいて子フローの入力として使用されます。
          - target: childName # サービス中で子フローの実行名を設定するために使用します。
            source: $input.childName
        serviceParams:  # Serverless Workflow 統合用のサービスパラメーター。このパラメーターはオプションです。省略した場合、ランダムな文字列が実行名として使用され、InputMappings に対応するパラメーターが子フローの入力として使用されます。
          Input: $  # マップされた入力を子フローの起動時の入力パラメーターとして使用します。
          ExecutionName: $.childName # serviceParams 内で変数を使用する場合は、その変数が inputMappings に存在することを確認してください。
  • 同期(sync)モード

    親フローは子フローを開始し、完了を待ってから次のステップに進みます。

    version: v1
    type: flow
    steps:
      - type: parallel
        name: parallelTask
        branches:
          - steps:
            # このステップは、sync モードで Serverless Workflow と統合する方法を示しています。inputMappings を子フローの入力として使用し、親フローの入力から子フローの実行名を動的に指定します。
            - type: task
              name: fnfSync
              resourceArn: acs:fnf:::flow/subflow_demo_child
              pattern: sync
              inputMappings: # inputMappings を指定しない場合、親フローのパラメーターがデフォルトのマッピングルールに基づいて子フローの入力として使用されます。
                - target: childSyncName # 子フローの実行名。子フローの実行名を指定するには、inputMappings で目的の名前をマップし、この例のように serviceParams で使用します。
                  source: $input.childSyncName
              serviceParams:  # Serverless Workflow 統合用のサービスパラメーター。
                Input: $  # マップされた inputMappings を子フローの起動時の入力パラメーターとして使用します。他の入力指定方法の動作や構文を確実に理解している場合を除き、この方法を使用してください。
                ExecutionName: $.childSyncName # serviceParams 内で変数を使用する場合は、その変数が inputMappings に存在することを確認してください。
  • コールバック待ち(waitForCallback)モード

    親フローは子フローを開始し、コールバック通知を受信するまで一時停止します。

    version: v1
    type: flow
    steps:
      - steps:
        # このステップは、waitForCallback モードで Serverless Workflow と統合する方法を示しています。inputMappings を子フローの入力として使用し、親フローの入力から子フローの実行名を動的に指定します。
        - type: task
          name: fnfWaitForCallback
          resourceArn: acs:fnf:::flow/subflow_demo_child
          pattern: waitForCallback
          inputMappings: # inputMappings を指定しない場合、親フローのパラメーターがデフォルトのマッピングルールに基づいて子フローの入力として使用されます。
            - target: task_token # コールバックを子フロー内で使用できるようにするため、task_token を明示的にカスタム名でマップします。
              source: $context.task.token  # コンテキストオブジェクトからこのタスクを表すタスクトークンを取得します。
            - target: childCallbackName
              source: $input.childCallbackName
          serviceParams:  # Serverless Workflow 統合用のサービスパラメーター。
            Input: $  # マップされた inputMappings を子フローの起動時の入力パラメーターとして使用します。
            ExecutionName: $.childCallbackName # serviceParams 内で変数を使用する場合は、その変数が inputMappings に存在することを確認してください。

コンテキストオブジェクト

親フローを識別するために、子フローに $context.execution.name および $context.flow.name を渡します。waitForCallback モードでは、コールバックのために親フローの実行識別子を子フローに渡すために $context.task.token を使用します。

子フローの入出力ルール

  • リクエスト/レスポンスモード

    子フローはタスクの入力を受け取り、$Input からアクセスできます。

    出力は StartExecution API の応答となり、子フロー自身の出力は親フローによって無視されます。デフォルトで利用可能な値は、$local.ExecutionName$local.FlowName、および $local.RequestId の 3 つです。これらの値を処理するには、親フローのステップで outputMappings を使用します。

       - type: task
         pattern: requestResponse
         ...
         outputMappings: # requestResponse モードで利用可能なパラメーター:$local.ExecutionName、$local.FlowName、$local.RequestId。
           - target: subflow_children_request_id
             source: $local.RequestId # 子フローを開始する際のリクエスト ID。
           - target: subflow_children_exec_name
             source: $local.ExecutionName # 子フローの実行名。
           - target: subflow_children_flow_name
             source: $local.FlowName # 子フローのフロー名。
  • 同期モード

    子フローはタスクの入力を受け取り、$Input からアクセスできます。

    子フローの OutputDescribeExecution API 応答から取得)が親フローのステップ出力となります。この出力をさらに処理するには、outputMappings を使用します。

  • コールバック待ちモード

    子フローはタスクの入力を受け取り、$Input からアクセスできます。

    コールバックデータがステップ出力となります。ReportTaskSucceeded の場合、Output パラメーターの値がステップ出力になります。ReportTaskFailed の場合、Error および Cause パラメーターの値がステップ出力になります。この出力をさらに処理するには、outputMappings を使用します。