RuleGo RuleGo
🏠首页
  • 快速入门
  • 规则链
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 可视化
  • RuleGo-Server
  • RuleGo-MCP-Server
  • AOP
  • 触发器
  • 高级主题
  • 性能
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 组件市场
  • 概述
  • 快速入门
  • 路由
  • DSL
  • API
  • Options
  • 组件
🔥编辑器 (opens new window)
  • 可视化编辑器 (opens new window)
  • RuleGo-Server (opens new window)
  • ❓问答

    • FAQ
💖支持
👥加入社区
  • Github (opens new window)
  • Gitee (opens new window)
  • GitCode (opens new window)
  • 更新日志 (opens new window)
  • English
  • 简体中文
🏠首页
  • 快速入门
  • 规则链
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 可视化
  • RuleGo-Server
  • RuleGo-MCP-Server
  • AOP
  • 触发器
  • 高级主题
  • 性能
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 组件市场
  • 概述
  • 快速入门
  • 路由
  • DSL
  • API
  • Options
  • 组件
🔥编辑器 (opens new window)
  • 可视化编辑器 (opens new window)
  • RuleGo-Server (opens new window)
  • ❓问答

    • FAQ
💖支持
👥加入社区
  • Github (opens new window)
  • Gitee (opens new window)
  • GitCode (opens new window)
  • 更新日志 (opens new window)
  • English
  • 简体中文

广告采用随机轮播方式显示 ❤️成为赞助商
  • 快速入门

  • 规则链

  • 标准组件

    • 标准组件概述
    • 过滤器

    • 动作

      • 记录日志
      • 函数处理
      • 延迟
      • 节点组
      • 迭代器
      • 遍历
        • 配置
        • Relation Type
        • 执行结果
        • 配置示例
      • 命令
      • 汇聚
    • 转换器

    • 外部的

    • 流

  • 扩展组件

  • 自定义组件

  • 组件市场

  • 可视化

  • AOP

  • 触发器

  • 高级主题

  • RuleGo-Server

  • 问题

目录

遍历

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 - 消息ID
    • ts - 消息时间戳
    • 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
在 GitHub 上编辑此页 (opens new window)
上次更新: 2025/04/02, 01:29:50
迭代器
命令

← 迭代器 命令→

Theme by Vdoing | Copyright © 2023-2025 RuleGo Team | Apache 2.0 License

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式