遍历
for
组件:v0.22.0+ 遍历组件的组件。用于遍历数组,切片和结构体,也用于重复执行从指定节点开始的链或子规则链。
# 配置
字段 | 类型 | 说明 | 默认值 |
---|---|---|---|
range | string | 遍历的目标表达式 | 1..3 |
do | string | 指定处理遍历元素的节点或子规则链 | s3 |
mode | int | 遍历结果合并方式,0 - 忽略,1 - 追加,2 - 覆盖 | 0 |
range
- 支持遍历数组,切片,结构体。例如:msg.items 遍历msg.items,1..5 遍历[]int{1,2,3,4,5}
- 如果空,遍历整个msg
- 通过
id
变量访问消息ID - 通过
ts
变量访问消息时间戳 - 通过
data
变量访问消息原始内容 - 通过
msg
变量访问消息体,如果消息的dataType是json类型,可以通过msg.XX
方式访问msg的字段。例如:msg.items
- 通过
metadata
变量访问消息元数据。例如metadata.customerName
- 通过
type
变量访问消息类型 - 通过
dataType
变量访问数据类型
表达式例子:
- msg.items 遍历 msg.items
- 1..3 遍历[]int{1,2,3},do执行3次
更多expr表达式语法参考: expr (opens new window)
do
- 例如:"s1",item将从s1的分支链开始执行,直到链执行完成,再回到遍历的起点
- 也可以item交给子规则链处理,用法:chain:chainId,例如:chain:rule01,item将从rule01子链开始执行,直到链执行完成,再回到遍历的起点
提示
- 通过metadata._loopIndex 获取当前遍历的index
- 通过metadata._loopItem 获取当前遍历的item
- 通过metadata._loopKey 获取当前遍历的key,只有遍历结构体才有值
- 如果遍历对象是[]interface{}类型,item值会通过msg.Data,传递到处理节点
# Relation Type
- Success: 执行成功,把消息发送到
Success
链 - Failure: 执行失败,把消息发送到
Failure
链
# 执行结果
- 如果
sync=true
,合并每个遍历结果交给下一个节点,否则不改变msg.Data msg.metadata
:会被每次遍历组件修改。
# 配置示例
{
"id": "s1",
"type": "for",
"name": "Iteration",
"configuration": {
"range": "msg.items",
"do": "s3"
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
在 GitHub 上编辑此页 (opens new window)
上次更新: 2024/10/23, 10:13:01