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
  • 简体中文

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

  • 规则链

  • 标准组件

  • 扩展组件

  • 自定义组件

  • 组件市场

  • 可视化

  • AOP

  • 触发器

  • 高级主题

    • Config
    • Options
    • 共享数据
    • 执行规则链
    • 组件配置变量
      • 组件连接复用
      • 性能
    • RuleGo-Server

    • 问题

    目录

    组件配置变量

    某些场景下,需要统一修改组件配置,或者在组件运行时动态更换组件配置。可以使用内置的变量替换组件配置。使用方法:${key}、${key.subKey}。 变量分两大类:全局变量和组件运行时变量。

    # 全局变量

    全局变量: 在组件初始化时(组件执行Init方法时)执行替换逻辑,包含以下下变量:

    • global变量: 访问config.Properties的值,例如:${global.key}
    • vars变量: 访问规则链vars值,例如:${vars.key}

    全局变量: 所有组件配置字段都支持使用。

    # 组件运行时变量

    组件运行时变量: 在组件运行时(组件执行OnMsg方法时)执行替换逻辑,包含以下下变量:

    • id变量: 访问消息ID
    • ts变量: 访问消息时间戳
    • data变量: 访问消息原始内容
    • msg变量: 访问消息转换后的数据,如果消息的dataType是json类型,可以通过${msg.key}方式访问msg的字段
    • metadata变量: 访问消息元数据。例如:${metadata.key}
    • msgType变量: 访问消息类型
    • dataType变量: 访问数据类型
    • nodeId变量: v0.33.0+ 跨节点变量,访问指定节点的输出数据。例如:${node1.msg.temperature}、${node1.metadata.deviceId}、${node1.msgType}等

    组件运行时变量: 只有特定说明的组件配置字段才支持使用。

    # 跨节点变量详细说明

    跨节点变量允许在组件配置中访问规则链中任意已执行节点的输出数据,语法格式为:${nodeId.field}

    支持的字段包括:

    • ${nodeId.msg}: 访问指定节点的消息内容
    • ${nodeId.msg.fieldName}: 访问指定节点消息中的特定字段(当消息为JSON格式时)
    • ${nodeId.metadata}: 访问指定节点的元数据
    • ${nodeId.metadata.key}: 访问指定节点元数据中的特定键值
    • ${nodeId.msgType}: 访问指定节点的消息类型
    • ${nodeId.dataType}: 访问指定节点的数据类型
    • ${nodeId.id}: 访问指定节点的消息ID
    • ${nodeId.ts}: 访问指定节点的消息时间戳

    注意: 跨节点变量需要目标节点已经执行完成并产生输出。规则链初始化时,如果检测到组件配置中使用了 ${nodeId.xx.xx} 格式的跨节点变量,会自动建立相应的依赖关系以确保数据可用性。

    # 示例

    # 基础变量示例

    {
      "ruleChain": {
    	"id":"rule01",
        "name": "test",
        "configuration": {
          "vars": {
            "topicPrefix":"/device/msg"
          }
        }
      },
      "metadata": {
        "nodes": [
          {
            "id": "s2",
            "type": "mqttClient",
            "name": "push data",
            "configuration": {
              "server": "${global.mqttServer}",
              "topic": "${vars.topicPrefix}/${metadata.deviceId}"
            }
          }
        ],
        "connections": [
          {
          }
        ]
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28

    # 跨节点变量示例

    {
      "ruleChain": {
        "id": "rule02",
        "name": "cross-node-example"
      },
      "metadata": {
        "nodes": [
          {
            "id": "sensor1",
            "type": "jsTransform",
            "name": "传感器数据处理",
            "configuration": {
              "jsScript": "msg.temperature = 25.5; msg.humidity = 60; return {msg: msg, metadata: metadata, msgType: msgType};"
            }
          },
          {
            "id": "sensor2",
            "type": "jsTransform",
            "name": "另一个传感器",
            "configuration": {
              "jsScript": "msg.pressure = 1013.25; return {msg: msg, metadata: metadata, msgType: msgType};"
            }
          },
          {
            "id": "combiner",
            "type": "jsTransform",
            "name": "数据合并",
            "configuration": {
              "jsScript": "var combined = {temperature: ${sensor1.msg.temperature}, humidity: ${sensor1.msg.humidity}, pressure: ${sensor2.msg.pressure}, timestamp: ${sensor1.ts}}; return {msg: combined, metadata: metadata, msgType: msgType};"
            }
          },
          {
            "id": "logger",
            "type": "log",
            "name": "记录日志",
            "configuration": {
              "jsScript": "return 'Combined data - Temp: ${sensor1.msg.temperature}°C, Humidity: ${sensor1.msg.humidity}%, Pressure: ${sensor2.msg.pressure}hPa';"
            }
          }
        ],
        "connections": [
          {
            "fromId": "sensor1",
            "toId": "combiner",
            "type": "Success"
          },
          {
            "fromId": "sensor2",
            "toId": "combiner",
            "type": "Success"
          },
          {
            "fromId": "combiner",
            "toId": "logger",
            "type": "Success"
          }
        ]
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    在 GitHub 上编辑此页 (opens new window)
    上次更新: 2025/09/02, 11:02:23
    执行规则链
    组件连接复用

    ← 执行规则链 组件连接复用→

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

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