内联模式

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