このトピックでは、並列状態について説明し、関連する例を示します。
概要
並列状態は、複数の子状態を並列に実行するために使用されます。並列状態は複数のブランチを定義し、各ブランチには一連の子状態が含まれています。
並列状態が実行されると、すべてのブランチに含まれる子状態が同時に実行されます。すべてのブランチが実行された後、デフォルトでは、すべてのブランチの結果を含む map[string]any 出力が返されます。次に、システムは出力コンストラクターを使用して結果をさらに処理します。
並列状態には最大 50 個のブランチを設定できます。
次の表は、並列状態に含まれる属性について説明しています。
属性 | データ型 | 必須 | 説明 | 例 |
Name | string | はい | 状態の名前。 | my-state-name |
Description | string | いいえ | 状態の説明。 | ここに記述します |
Type | string | はい | 状態のタイプ。 | Parallel |
InputConstructor | map[string]any | いいえ | 入力コンストラクター。 | 詳細については、「入力と出力」をご参照ください。 |
Branches | ParallelBranch | はい | 並列に実行されるブランチ。 | 詳細については、「ParallelBranch」をご参照ください。 |
OutputConstructor | map[string]any | いいえ | 出力コンストラクター。 | 「入力と出力」トピックの「状態の OutputConstructor」セクションをご参照ください。 |
Next | string | いいえ | 現在の状態が完了した後に実行される次の状態。 End 属性が true の場合、この属性を指定する必要はありません。 | my-next-state |
End | bool | いいえ | 現在のスコープを終了するかどうかを指定します。 | true |
Retry | Retry | いいえ | 再試行ポリシーに関する情報。 | 詳細については、「エラー処理」をご参照ください。 |
Catch | Catch | いいえ | キャッチポリシーに関する情報。 | 詳細については、「エラー処理」をご参照ください。 |
ParallelBranch
属性 | データ型 | 必須 | 説明 | 例 |
States | array | はい | ワークフローに含まれる状態の配列。 | このトピックの「ユースケース」セクションをご参照ください。 |
StartAt | string | はい | ワークフローの実行を開始する状態。 | my start task |
ユースケース
次のサンプルワークフローは、並列状態を定義しています。並列状態には 2 つのブランチが含まれており、各ブランチには Pass 子状態が含まれています。
Type: StateMachine
Name: my-wkfl
SpecVersion: v1
StartAt: Parallel1
States:
- Type: Parallel
Name: Parallel1
End: true
Branches:
- StartAt: Pass1
States:
- Type: Pass
Name: Pass1
End: true
OutputConstructor:
FieldA: 123 // FieldA
- StartAt: Pass2
States:
- Type: Pass
InputConstructor:
FieldA: 321 // FieldA
Name: Pass2
End: true次のコードは、Pass1 子状態の出力を示しています。
{ "FieldA": 123 }次のコードは、Pass2 子状態の出力を示しています。
{ "FieldA": 321 }次のコードは、Parallel1 状態の出力を示しています。デフォルト名がブランチに割り当てられます。出力は Branch<Index> の形式で構成されます。
{ "Branch0": { "FieldA": 123 }, "Branch1": { "FieldA": 321 } }