遍历
for
组件:v0.22.0+ 遍历组件。用于遍历数组、切片和结构体,也可用于重复执行指定节点或子规则链。
# 配置
字段 | 类型 | 说明 | 默认值 |
---|---|---|---|
range | string | 遍历的目标表达式 | 1..3 |
do | string | 指定处理遍历元素的节点或子规则链 | s3 |
mode | int | 遍历结果合并方式,0 - 忽略,1 - 追加,2 - 覆盖,3 - 异步执行 | 0 |
range
- 支持遍历数组、切片、结构体。例如:
msg.items
遍历msg.items,1..5
遍历[]int{1,2,3,4,5} - 如果为空,则遍历整个msg
- 支持通过以下变量访问消息属性:
id
- 消息IDts
- 消息时间戳data
- 消息原始内容msg
- 消息体(如果消息的dataType是json类型,可通过msg.XX
访问字段)metadata
- 消息元数据type
- 消息类型dataType
- 数据类型
表达式示例:
msg.items
- 遍历msg.items数组1..3
- 遍历[1,2,3],do执行3次metadata.items
- 遍历metadata中的items字段
更多expr表达式语法参考:expr (opens new window)
do
- 节点ID:如"s1",item将从s1节点开始执行分支链,直到链执行完成后返回遍历起点
- 子规则链:格式为"chain:chainId",如"chain:rule01",item将从rule01子链开始执行,直到链执行完成后返回遍历起点
mode
- 0(忽略) - 不合并遍历结果,保持原始消息不变
- 1(追加) - 将每次遍历结果追加到数组中
- 2(覆盖) - 使用最后一次遍历结果覆盖原始消息
- 3(异步) - 异步执行每次遍历,不等待结果
提示
遍历过程中可通过以下metadata获取当前遍历信息:
_loopIndex
- 当前遍历的索引_loopItem
- 当前遍历的元素值_loopKey
- 当前遍历的键名(仅遍历结构体时有值)
注意:如果遍历对象是[]interface{}类型,item值会通过msg.Data传递给处理节点
# Relation Type
- Success: 遍历执行成功,消息发送到
Success
链路 - Failure: 遍历执行失败(如表达式错误),消息发送到
Failure
链路
# 执行结果
- 根据mode配置决定最终输出的消息内容
- 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/12/22, 03:38:12