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

CloudFlow:インラインモード

最終更新日:Jan 12, 2025

デフォルトでは、マップステートはインラインモードで実行されます。インラインモードは、データをバッチ処理し、データの変換と処理を効率化するために使用できます。このモードは単一ノードに焦点を当てており、コレクション内の各要素を処理する必要があるシナリオに適しています。

概要

マップステートは、入力の配列タイプの パラメーター をトラバースし、配列内のすべての要素に対して プロセッサ ステートを並列に実行するために使用されます。マップステートは、プログラミング言語の foreach ステートメントに似ています。ただし、マップの反復は並列に実行されます。

マップステートが実行されると、入力パラメーター内のすべての要素のプロセッサステートが同時に実行されます。デフォルトでは、すべてのブランチの結果を含む map[string]any 出力が、すべてのブランチが実行された後に返されます。次に、システムは出力コンストラクターを使用して結果をさらに処理します。

次の表に、インラインモードのフィールドを示します。

フィールド

タイプ

必須

説明

Name

string

はい

ステートの名前。

my-state-name

Description

string

いいえ

ステートの説明。

ここに記述します

Type

string

はい

ステートのタイプ。

Map

InputConstructor

map[string]any

いいえ

入力コンストラクター。

詳細については、入力と出力 をご参照ください。

ItemsPath

string

はい

入力内の配列を抽出するために使用される式。

詳細については、ItemsPath をご参照ください。

Processor

Processor

はい

反復プロセッサ。

詳細については、Processor をご参照ください。

OutputConstructor

map[string]any

いいえ

出力コンストラクター。

詳細については、State OutputConstructor をご参照ください。

Next

string

いいえ

現在のステートが完了した後に実行される次のステート。 End フィールドの値が true の場合は、このフィールドを指定する必要はありません。

my-next-state

End

bool

いいえ

ステートが現在のスコープの終端ステートであるかどうかを指定します。

true

Retry

Retry

いいえ

エラー再試行ポリシー。

詳細については、エラー処理 をご参照ください。

Catch

Catch

いいえ

エラーキャッチポリシー。

詳細については、エラー処理 をご参照ください。

MaxConcuccency

int

いいえ

最大同時実行レベル。

28

インラインモードの重要なフィールド

ItemsPath

入力内の配列を抽出するために使用される式。 ItemsPath 式の実行後に JSON 配列が返された場合、その配列に対して反復処理が行われます。配列内の各要素は、処理のために ItemProcessor に渡されます。次の例に示すように、$Context および $Input 式変数を使用できます。

$Input.FieldA

Processor

反復プロセッサ。このフィールドには、次の表に示す 2 つのフィールドが含まれています。

フィールド

タイプ

必須

説明

States

array

はい

ステートの配列。

Processor:
   StartAt: Pass1
   States:
     - Type: Pass
       Name: Pass1  # Pass1
       End: true

StartAt

string

はい

ワークフローの実行を開始するステート。

開始タスク

MaxConcuccency

同時実行されるサブフローの最大数。このフィールドの最大値は 40 です。

サンプルコード

次のサンプルフローでは、マップステートを定義しています。 MapProcessor には Pass ステートが含まれています。

Type: StateMachine
Name: my-wkfl
SpecVersion: v1
StartAt: Map1
States:
  - Type: Map
    Name: Map1
    End: true
    InputConstructor:
      FieldA: 
        - a : b
        - c : d
        - e : f
    ItemsPath: $Input.FieldA
    Processor:
      StartAt: Pass1
      States:
        - Type: Pass
          Name: Pass1
          End: true

次のサンプルコードは、フローの入力構築結果の例を示しています。

{
    "FieldA": [
        {
            "a": "b"
        },
        {
            "c": "d"
        },
        {
            "e": "f"
        }
    ]
}

マップの場合、システムはすべての反復プロセッサの出力をマージします。デフォルトでは、Items キーワードがキーとして使用され、マージされた結果が値として使用されます。次のサンプルコードは、Map1 の出力の例を示しています。これは、フローが実行された後の最終出力でもあります。

{
    "Items": [
        {
            "a": "b"
        },
        {
            "c": "d"
        },
        {
            "e": "f"
        }
    ]
}