全部產品
Search
文件中心

CloudFlow:並行(Parallel)

更新時間:Sep 03, 2024

本文介紹了並行狀態及其相關使用樣本。

基本概念

並行狀態用來並存執行多個狀態。它定義了多個分支(Branches),每個分支包含一系列狀態。

執行並行狀態會並發執行所有分支包含的狀態。當所有分支執行結束後,預設將輸出一個包含所有分支結果的map[string]any,然後可以通過輸出構造器將結果進行進一步處理。

說明

並行狀態最大分支數限制為50。

並行狀態包含以下屬性。

欄位

類型

是否必選

描述

樣本值

Name

string

是

狀態名稱。

my-state-name

Description

string

否

狀態原因。

describe it here

Type

string

是

狀態類型。

Parallel

InputConstructor

map[string]any

否

輸入構造器。

請參見輸入和輸出

Branches

ParallelBranch

是

平行分支。

詳見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
        }
    }