本文介紹了并行狀態及其相關使用示例。
基本概念
并行狀態用來并行執行多個狀態。它定義了多個分支(Branches),每個分支包含一系列狀態。
執行并行狀態會并發執行所有分支包含的狀態。當所有分支執行結束后,默認將輸出一個包含所有分支結果的map[string]any,然后可以通過輸出構造器將結果進行進一步處理。
并行狀態最大分支數限制為50。
并行狀態包含以下屬性。
字段 | 類型 | 是否必選 | 描述 | 示例值 |
Name | string | 是 | 狀態名稱。 | my-state-name |
Description | string | 否 | 狀態描述。 | describe it here |
Type | string | 是 | 狀態類型。 | Parallel |
InputConstructor | map[string]any | 否 | 輸入構造器。 | 請參見輸入和輸出 |
Branches | ParallelBranch | 是 | 并行分支。 | |
OutputConstructor | map[string]any | 否 | 輸出構造器。 | 請參見狀態輸出構造器 |
Next | string | 否 | 當前狀態的下一狀態。當End取值為true時,無需指定。 | my-next-state |
End | bool | 否 | 是否為當前作用域的終結節點。 | true |
Retry | Retry | 否 | 重試配置 | 請參見 錯誤處理 |
Catch | Catch | 否 | 捕獲配置 | 請參見 錯誤處理 |
ParallelBranch
字段 | 類型 | 是否必選 | 描述 | 示例值 |
States | array | 是 | 內部嵌套的狀態數組。 | |
StartAt | string | 是 | 內部嵌套狀態數組的執行起點。 | my start task |
使用示例
下面的示例流程定義了一個并行步驟,這個并行步驟包含兩個分支,每個分支又包含了一個傳遞步驟。
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
- StartAt: Pass2
States:
- Type: Pass
InputConstructor:
FieldA: 321
Name: Pass2
End: true
Pass1的輸出如下。
{ "FieldA": 123 }
Pass2的輸出如下。
{ "FieldA": 321 }
Parallel1的輸出如下,每個Branch會提供默認的名稱,按照"Branch<Index>"的格式組織結果。
{ "Branch0": { "FieldA": 123 }, "Branch1": { "FieldA": 321 } }