全部產品
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
        }
    }