遍历
  for组件:v0.22.0+ 遍历组件。用于遍历数组、切片和结构体,也可用于重复执行指定节点或子规则链。
# 配置
| 字段 | 类型 | 说明 | 默认值 | 
|---|---|---|---|
| range | string | 遍历的目标表达式,示例:${msg.items},支持组件配置变量 | 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}- 消息ID${ts}- 消息时间戳${data}- 消息原始内容${msg}- 消息体(如果消息的dataType是json类型,可通过${msg.XX}访问字段)${metadata}- 消息元数据${msgType}- 消息类型${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)
  上次更新: 2025/09/03, 10:09:04