判断(switch)节点
更新时间:2024-07-05
概述
switch 节点会根据不同条件选择不同的下一个节点,类似于编程语言中的 switch-case。工作流服务会按 switch 节点内 condition 的定义顺序依次匹配,若无匹配到且定义了 default 参数,则会根据 default 参数绝对下一个要执行的节点。
参数
以下为 pass 节点所包含的参数字段:
字段 | 类型 | 描述 |
---|---|---|
type(必需) | string | 节点类型,值为 "switch" |
name(必需) | string | 节点名称 |
conditions(必需) | array of condition | 条件匹配数组,数组元素见下表 condition |
default(可选) | object | conditions 未匹配到时,使用此字段内指定的节点,object 内只有一对 kv,即 "next: stateName" |
description(可选) | string | 节点描述信息 |
stateDataFilter(可选) | object | 节点输入输出过滤 |
条件匹配元素 condition 定义如下:
字段 | 类型 | 描述 |
---|---|---|
condition(必需) | string | jq 表达式,结果必须为布尔值 |
next(必需) | string | 下一个节点名称 |
注:switch 节点不允许额外指定 next 或 end 参数。
示例
示例工作流定义如下,读取节点输入数据中的 .ready 字段值,根据值的不同去执行 fail 或 succeed 节点。
name: demo
start: checkReady
states:
- type: switch
name: checkReady
conditions:
- condition: .ready == "yes"
next: handleReady
- condition: .ready == "no"
next: handleNotReady
default:
next: handleReady
- type: fail
name: handleNotReady
- type: succeed
name: handleReady