全部產品
Search
文件中心

CloudFlow:內聯模式

更新時間:Oct 25, 2024

Map狀態預設以內聯模式運行,內聯模式可以用於批量處理資料,簡化資料的轉換與處理流程,適用於操作集合內的每個元素,強調單一節點的處理。

基本概念

迭代狀態遍曆輸入中的某個數群組類型參數,對於數組中的每個元素,並存執行其處理器(Processor)狀態。迭代狀態類似於程式設計語言中的foreach,不同之處是這裡的迭代是並存執行的。

執行並行迭代步驟會並發執行輸入參數中的每個元素的處理器狀態。當所有分支執行結束後,預設將輸出一個包含所有分支結果的map[string]any,然後通過輸出構造器將結果進行進一步處理。

內聯模式包含以下屬性:

欄位

類型

是否必選

描述

樣本值

Name

string

狀態名稱。

my-state-name

Description

string

狀態原因。

describe it here

Type

string

狀態類型。

Map

InputConstructor

map[string]any

輸入構造器。

請參見輸入和輸出

ItemsPath

string

用於提取輸入數組的運算式。

請參見ItemsPath

Processor

Processor

迭代處理器。

請參見Processor

OutputConstructor

map[string]any

輸出構造器。

請參見狀態輸出構造器

Next

string

目前狀態的下一狀態。當End取值為true時,無需指定。

my-next-state

End

bool

是否為當前範圍的終結節點。

true

Retry

Retry

用於定義錯誤重試策略。

請參見錯誤處理

Catch

Catch

用於定義錯誤捕獲策略。

請參見錯誤處理

MaxConcuccency

int

用於配置最大並發數。

28

內聯模式的關鍵字段

ItemsPath

用於提取輸入數組的運算式。該運算式執行後返回JSON Array,則可以進行迭代,將其中每個元素傳入ItemProcessor進行處理;可使用運算式變數$Context和$Input,樣本如下:

$Input.FieldA

Processor

迭代處理器。包含以下兩個欄位:

欄位

類型

是否必選

描述

樣本值

States

array

內部嵌套的狀態數組。

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

StartAt

string

內部嵌套狀態數組的執行起點。

my start task

MaxConcuccency

MaxConcurrency支援對子工作流程執行的並發配置,最大並發數可達到40。

使用樣本

以下樣本流程定義一個迭代狀態,這個迭代步驟處理器包含一個通過狀態。

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"
        }
    ]
}

針對Map,系統會對所有迭代Processor的輸出結果進行合并,預設以關鍵字 "Items" 作為Key,合并後的結果作為Value;Map1的輸出結果如下所示, 自動添加此輸出也是最後流程執行的輸出。

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