规则编排使用指南
功能概述
规则编排将原来的数据转发、设备联动和定时任务统一到一个可视化设计页面中。使用时从左侧组件库拖入节点,在画布上连接节点,并在右侧配置节点参数,即可完成自动化规则。
一个规则编排可以同时包含多个互不连接的流程。例如,可以在同一张画布中同时配置:
- 温度超过阈值后下发设备指令。
- 每天定时执行设备控制。
- 通过按钮手动执行一组动作。
- 将设备日志、设备告警或设备状态转发到外部系统。
每组互相连接的节点会被识别为一个独立流程。多个流程可以使用不同的触发方式,并统一保存在同一个规则编排中。

1. 规则编排列表
进入“规则引擎 > 规则编排”后,页面以卡片形式展示已有规则。可以按编排名称、触发方式和状态进行查询。
1.1 卡片信息
每张规则卡片会展示以下内容:
| 信息 | 说明 |
|---|---|
| 状态 | 草稿表示规则仅保存但未运行,启用中表示规则已生效 |
| 流程数量 | 当前规则编排中包含的独立流程数量 |
| 触发方式 | 属性触发、定时触发、手动触发或数据源转发 |
| 动作类型 | 当前规则中使用的设备指令、延时、HTTP、MQTT、Kafka 等动作 |
| 数据源或关联设备 | 转发流程显示数据源范围,其他流程显示涉及的设备 |
| Cron | 规则包含定时触发时显示定时表达式 |
| 备注 | 创建规则时填写的补充说明 |
1.2 列表操作
- 新建编排:进入空白设计页创建规则。
- 设计页:打开已有规则,查看或修改节点和连线。
- 启用/停用:控制整个规则编排是否运行。
- 执行:仅当规则中包含手动触发流程时显示,可执行全部手动流程,也可选择其中一个流程单独执行。
- 删除:删除规则编排。删除后无法恢复,建议先确认规则已不再使用。
2. 新建规则编排
点击“新建编排”进入设计页,先在顶部填写编排名称,备注为可选项。
设计页由三个主要区域组成:
- 左侧“组件库”:提供触发源、数据源、条件和执行动作。
- 中间“画布”:放置节点、连接流程并调整布局。
- 右侧“节点配置”:选中节点后填写该节点的参数。

2.1 画布基本操作
- 从左侧组件库按住节点并拖到画布中,即可添加节点。
- 从上游节点右侧的输出端口拖出连线,连接到下游节点左侧的输入端口。
- 点击节点可在右侧修改配置。
- 点击节点或连线后可删除;也可以选中后按键盘删除键。
- 在画布空白处按住鼠标拖动可平移画布。
- 使用鼠标滚轮或右下角按钮缩放画布,点击重置按钮可恢复默认视图。
- 画布中互不连接的多组节点会分别成为多个流程。

2.2 连线与执行顺序
节点的执行顺序由连线决定:
- 一个节点只连接一个下游节点时,按连线顺序依次执行。
- 一个节点同时连接多个下游节点时,多个下游分支并行执行。
- 多个上游节点连接到同一个下游节点时,下游节点会在所有上游分支完成并通过后执行。
- 条件节点判断不通过时,仅阻断该条件节点后面的分支。
- 流程不能形成环路,所有非起始节点都必须能够从触发源或数据源到达。
触发流程中只能有一个触发节点,并且至少要有一个执行动作。转发流程可以有一个或多个数据源,但数据源后面只能连接消息转发节点。
3. 触发源节点
触发源用于决定流程何时开始执行。规则编排支持属性触发、定时触发和手动触发。
3.1 属性触发
属性触发用于监听设备上报数据。当后续条件组中引用的设备属性满足条件时,流程开始执行。
使用步骤:
- 拖入“属性触发”节点。
- 在其后连接至少一个“条件组”节点。
- 在条件中选择设备和属性,设置运算符及阈值。
- 在条件组后连接需要执行的动作。
属性触发必须在条件组中至少引用一台设备,否则平台无法确定要监听哪些设备。
常见用法:设备 A 温度大于 30℃ 时,向设备 B 下发开启空调指令。
3.2 定时触发
定时触发用于按照固定时间计划执行流程,支持周期任务和一次性任务。
周期任务的配置步骤:
- 拖入“定时触发”节点。
- 点击“定时规则”右侧的“配置”。
- 在定时规则配置窗口中生成 Cron 表达式。
- 点击“确定”保存表达式。
一次性任务的配置步骤:
- 开启“一次性任务”。
- 选择具体执行时间。
- 配置并连接后续动作。
一次性任务执行到点后会自动停用。执行时间以平台服务器时间和时区为准。


3.3 手动触发
手动触发用于需要人工确认后再执行的流程,例如一键开灯、批量重启设备或临时推送消息。
规则保存后,可以在规则列表页或设计页顶部点击“手动执行”:
- 选择“全部手动流程”可执行当前编排中的全部手动流程。
- 选择具体流程可只执行一个手动流程。
新建规则尚未保存时不能手动执行。
4. 数据源节点
数据源节点用于实时接收平台数据并转发到外部系统,包括设备日志、设备告警和设备状态。
| 数据源 | 转发内容 | 典型用途 |
|---|---|---|
| 设备日志 | 设备每次上报的属性和消息数据 | 将遥测数据同步到业务系统或消息队列 |
| 设备告警 | 平台生成的设备告警记录 | 将告警推送到通知、工单或第三方告警平台 |
| 设备状态 | 设备上线、离线事件 | 监控设备连接状态或同步资产在线状态 |
配置数据源时需要先选择产品范围,再选择设备范围:
- 所有设备:匹配所选产品下的全部设备,之后新增的设备也会自动纳入。
- 部分设备:只转发手动选择的设备数据。
数据源后面只能连接 HTTP、MQTT Broker、MQTT Client、RabbitMQ、Kafka 或 RocketMQ 节点,不能连接条件组、设备指令、告警信息或延时节点。
数据源配置面板中的“查看转发消息格式”可以查看该类数据实际发送的 JSON 结构,第三方系统对接时应以这里展示的字段为准。

5. 条件组节点
条件组是流程中的判断关卡。条件满足时继续执行下游节点,不满足时停止该分支。
每条条件需要配置:
- 设备。
- 设备属性。
- 运算符。
- 比较阈值。
支持的运算符包括:>、>=、=、!=、<、<=、包含、不包含、在范围、不在范围。
使用“在范围”或“不在范围”时,用英文逗号分隔两个值,例如 10,20。使用“包含”或“不包含”时,阈值填写需要匹配的字符串。
5.1 多条件组合
- 同一组内可以选择“组内 AND”或“组内 OR”。
- 添加多个条件组后,可以选择组与组之间“全部满足 AND”或“任一满足 OR”。
- 需要分阶段判断时,也可以在画布上串联多个条件组节点。
例如:
- 组 1:设备 A 温度大于 30℃,并且湿度大于 80%。
- 组 2:设备 B 运行状态等于故障。
- 组间选择 OR,表示任意一组满足就继续执行。

6. 执行动作节点
6.1 设备指令
设备指令用于向指定设备下发功能或属性控制。
配置步骤:
- 选择目标设备。
- 选择设备功能。
- 检查自动生成的入参 JSON,并按实际需要修改参数值。
- 根据需要设置“完成后等待”,控制下一个节点延迟多久执行。
入参必须是合法 JSON,键名应使用设备物模型中定义的参数标识符。
6.2 告警信息
告警信息用于生成一条规则联动告警记录,需要配置告警标题、告警等级和告警消息。告警消息为必填项。
告警消息支持变量模板:
{{设备SN.属性标识符}}:读取指定设备最近一次上报的属性值。{{deviceSn}}:本次触发来源的设备 SN。{{ruleName}}:当前规则编排名称。{{triggerTime}}:触发时间。
例如:设备温度已达到 {{sn001.temperature}} ℃。
告警信息节点后还可以继续连接转发节点,将本规则生成的告警记录推送到外部系统。
6.3 延时
延时节点用于暂停指定毫秒数后再继续执行,适合以下场景:
- 开启设备后等待几秒,再下发下一条指令。
- 多步控制之间预留设备响应时间。
- 控制消息发送频率。
延时时间必须大于 0。
7. 消息转发节点
消息转发节点既可以连接在数据源后,也可以连接在触发流程的动作链中。转发内容取自上游节点:数据源后转发原始数据,告警信息后转发生成的告警记录,其他触发流程则发送包含规则和触发信息的 JSON 数据。
7.1 HTTP 转发
需要配置完整请求地址、请求方式和可选请求头。支持 POST、PUT 和 GET:
- POST/PUT 将上游消息作为请求体发送。
- GET 不携带请求体。
- 请求头每行一条,格式为
Key: Value。
7.2 MQTT Broker
平台启动内置 MQTT Broker,下游系统连接平台配置的端口并订阅主题接收消息。
主要配置包括 TCP/WS 端口、WS 路径、匿名访问或账号密码、SSL/TLS、发布主题和 QoS。发布主题支持 {deviceSn} 占位符,例如 device/{deviceSn}/up。
生产环境启用 SSL/TLS 时应上传正式证书;页面提供的一键自签证书仅建议用于测试。
7.3 MQTT Client
平台作为 MQTT 客户端连接外部 Broker 并发布消息。支持 TCP、SSL/TLS、WS 和 WSS。
主要配置包括 Broker 地址、端口、WebSocket 路径、Client ID、账号密码、主题和 QoS。使用 SSL/WSS 时可以选择单向认证、双向认证 mTLS 或仅调试使用的不校验证书模式。
7.4 RabbitMQ
需要配置服务器地址、端口、VirtualHost、可选账号密码、Exchange 和 Routing Key。目标 Exchange 以及对应队列绑定关系需要提前在 RabbitMQ 中创建。
7.5 Kafka
需要配置 Broker 地址、端口和 Topic。如果 Kafka 未开启自动创建主题,需要先在 Kafka 中创建 Topic。
7.6 RocketMQ
需要配置 NameServer、端口、生产者组和 Topic。Topic 需要已存在,或由 Broker 开启自动创建。
7.7 复用已有连接
MQTT Broker、MQTT Client、RabbitMQ、Kafka 和 RocketMQ 节点支持复用同类型节点的连接配置。
选择“复用已有连接”后,只需配置当前节点自己的主题、Exchange 或 Routing Key 等消息级参数。连接参数会从来源节点复制并锁定。该功能是一次性复制,之后修改来源节点不会自动同步;需要同步时应重新选择来源节点。
8. 保存、启用与停用
设计完成后可以选择:
- 保存草稿:保存名称、备注、节点、连线和当前配置,但规则不运行。草稿允许暂时保存未完成的画布。
- 保存并启用:先校验所有流程,校验通过后保存并立即运行。
保存并启用前,平台会检查:
- 编排名称是否已填写。
- 每个触发流程是否只有一个触发节点并至少包含一个动作。
- 所有节点是否正确连接,是否存在悬空节点或环路。
- 属性触发是否配置了设备条件。
- 定时触发是否配置了 Cron 或一次性执行时间。
- 条件是否完整。
- 动作节点的必填参数是否完整。
- 数据源是否配置产品或设备范围,且下游是否为转发节点。
校验失败时,页面会提示具体原因,并在画布上标记有问题的节点。修正后再次点击“保存并启用”。
已启用的规则可以在列表页点击“停用”。停用后,属性监听、定时执行和数据转发都不会继续运行;再次启用后恢复。
9. 常用编排示例
9.1 设备联动
目标:设备 A 温度大于 30℃时,启动设备 B 的风扇并生成告警。
连线方式:
属性触发 -> 条件组(A 温度 > 30) -> 设备指令(B 启动风扇) -> 告警信息
9.2 定时控制
目标:每天早上 7 点开启设备,晚上 7 点关闭设备。
可以在同一编排中创建两个互不连接的流程:
定时触发(每天 07:00) -> 设备指令(开启)定时触发(每天 19:00) -> 设备指令(关闭)
9.3 数据转发
目标:将某产品下全部设备的日志同时转发到 Kafka 和 HTTP 接口。
连线方式:
设备日志 -> Kafka
同时从“设备日志”节点再连接一条分支到“HTTP 转发”,两个目的地会并行接收数据。
9.4 多动作顺序执行
目标:先开启设备 A,等待 3 秒,再启动设备 B。
连线方式:
手动触发 -> 设备指令(A 开启) -> 延时(3000 ms) -> 设备指令(B 启动)
10. 常见问题
为什么“保存草稿”成功,但规则没有执行?
草稿不会运行。确认画布配置完整后,需要点击“保存并启用”,或返回列表页点击“启用”。
为什么属性触发无法启用?
属性触发必须连接条件组,并且条件中至少选择一台设备及其属性。条件设备就是平台监听属性上报的来源。
为什么数据源后不能连接条件组或设备指令?
数据源流程专门用于实时转发,后面只能连接 HTTP、MQTT、RabbitMQ、Kafka 或 RocketMQ 等转发节点。需要条件判断和设备控制时,应新建一个属性触发、定时触发或手动触发流程。
多个动作是顺序执行还是同时执行?
由连线决定。动作串成一条链时按顺序执行;同一节点分出多条连线时,下游分支并行执行。
定时规则没有执行怎么办?
检查规则是否为启用状态、Cron 是否正确、一次性执行时间是否已经过期,并确认平台服务器时间和时区正确。
外部系统没有收到转发消息怎么办?
检查数据源产品和设备范围、转发节点地址和端口、Topic/Exchange/Routing Key、账号权限及网络连通性。还应先打开“查看转发消息格式”,确认外部系统按实际 JSON 结构解析消息。
修改规则后需要重新启用吗?
在设计页点击“保存并启用”会用新配置更新并启动规则。仅点击“保存草稿”会将规则保存为草稿状态,不再运行。