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

    • 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)
  • 🌊StreamSQL
  • ❓问答

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

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

  • 规则链

  • 标准组件

    • 标准组件概述
    • 公共

      • 节点引用
      • 节点组
      • 迭代器
      • 遍历
      • 并行网关
      • 汇聚
      • 条件分支
      • 包容分支
      • 中断(break)
      • While循环
        • 配置
        • Relation Type
        • 执行结果
        • 迭代上下文变量
        • 终止循环
        • 配置示例
      • 结束节点
    • 过滤器

    • 动作

    • 转换器

    • 外部的

    • 流

  • 扩展组件

  • 自定义组件

  • 组件市场

  • 可视化

  • AOP

  • 触发器

  • 高级主题

  • RuleGo-Server

  • 问题

目录

While循环

while组件:条件循环节点。只要满足指定的条件,就会重复执行目标节点或规则链。

# 配置

字段 类型 说明 默认值
condition string 循环条件表达式,使用 el 表达式。例如 msg.count==nil \|\| msg.count < 5。
do string 每次迭代执行的节点ID或子规则链ID。
mode int 循环结束后结果处理方式,0 - 忽略(输出原始消息),1 - 追加合并,2 - 覆盖传递 0

mode

  • 0(忽略) - 不修改原始消息,输出进入循环前的原始消息内容。
  • 1(追加) - 将每次循环迭代产生的 msg.Data 合并为一个 JSON 数组作为最终输出,保留最后一次循环的 metadata。
  • 2(覆盖) - 使用最后一次循环迭代产生的结果(Data 和 Metadata)直接覆盖并输出。

提示

与 For 节点的区别: While 节点的每次迭代必须将上一次的结果(包含被修改的 metadata 等)传递给下一次迭代,以推动 condition 的条件发生变化(避免死循环)。它是一种状态连续的条件循环。 而 For 节点通常在每次迭代时提供隔离的上下文。

# Relation Type

  • Success: 循环结束后,消息将沿Success链路径传递。
  • Failure: 如果表达式执行出错或迭代过程中出错,消息将沿Failure链路径传递。

# 执行结果

循环内部,上一次迭代的执行结果作为下一次迭代的输入。 当条件不满足导致循环结束时,根据配置的 mode 输出最终消息:

  • 如果 mode=0,直接向后输出刚进入组件时的原始消息。
  • 如果 mode=1,将各次迭代产生的结果组装为数组并覆盖到最后一条消息上输出。
  • 如果 mode=2,直接向后输出最后一次迭代的结果。

# 迭代上下文变量

在迭代过程中,组件会设置以下元数据变量:

  • _loopIndex: 当前迭代索引(从0开始)。

# 终止循环

如果在迭代过程中,消息元数据包含 _break 且值为 true,则会立即终止循环。

# 配置示例

{
  "id": "s1",
  "type": "while",
  "name": "While循环",
  "configuration": {
    "condition": "msg.count==nil || msg.count < 5",
    "do": "s2"
  }
}
1
2
3
4
5
6
7
8
9
在 GitHub 上编辑此页 (opens new window)
上次更新: 2026/04/17, 09:15:29
中断(break)
结束节点

← 中断(break) 结束节点→

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

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