规则编排使用指南

功能概述

规则编排将原来的数据转发、设备联动和定时任务统一到一个可视化设计页面中。使用时从左侧组件库拖入节点,在画布上连接节点,并在右侧配置节点参数,即可完成自动化规则。

一个规则编排可以同时包含多个互不连接的流程。例如,可以在同一张画布中同时配置:

  • 温度超过阈值后下发设备指令。
  • 每天定时执行设备控制。
  • 通过按钮手动执行一组动作。
  • 将设备日志、设备告警或设备状态转发到外部系统。

每组互相连接的节点会被识别为一个独立流程。多个流程可以使用不同的触发方式,并统一保存在同一个规则编排中。

img_1.png

1. 规则编排列表

进入“规则引擎 > 规则编排”后,页面以卡片形式展示已有规则。可以按编排名称、触发方式和状态进行查询。

1.1 卡片信息

每张规则卡片会展示以下内容:

信息说明
状态草稿表示规则仅保存但未运行,启用中表示规则已生效
流程数量当前规则编排中包含的独立流程数量
触发方式属性触发、定时触发、手动触发或数据源转发
动作类型当前规则中使用的设备指令、延时、HTTP、MQTT、Kafka 等动作
数据源或关联设备转发流程显示数据源范围,其他流程显示涉及的设备
Cron规则包含定时触发时显示定时表达式
备注创建规则时填写的补充说明

1.2 列表操作

  • 新建编排:进入空白设计页创建规则。
  • 设计页:打开已有规则,查看或修改节点和连线。
  • 启用/停用:控制整个规则编排是否运行。
  • 执行:仅当规则中包含手动触发流程时显示,可执行全部手动流程,也可选择其中一个流程单独执行。
  • 删除:删除规则编排。删除后无法恢复,建议先确认规则已不再使用。

2. 新建规则编排

点击“新建编排”进入设计页,先在顶部填写编排名称,备注为可选项。

设计页由三个主要区域组成:

  1. 左侧“组件库”:提供触发源、数据源、条件和执行动作。
  2. 中间“画布”:放置节点、连接流程并调整布局。
  3. 右侧“节点配置”:选中节点后填写该节点的参数。

img.png

2.1 画布基本操作

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

img_2.png

2.2 连线与执行顺序

节点的执行顺序由连线决定:

  • 一个节点只连接一个下游节点时,按连线顺序依次执行。
  • 一个节点同时连接多个下游节点时,多个下游分支并行执行。
  • 多个上游节点连接到同一个下游节点时,下游节点会在所有上游分支完成并通过后执行。
  • 条件节点判断不通过时,仅阻断该条件节点后面的分支。
  • 流程不能形成环路,所有非起始节点都必须能够从触发源或数据源到达。

触发流程中只能有一个触发节点,并且至少要有一个执行动作。转发流程可以有一个或多个数据源,但数据源后面只能连接消息转发节点。

3. 触发源节点

触发源用于决定流程何时开始执行。规则编排支持属性触发、定时触发和手动触发。

3.1 属性触发

属性触发用于监听设备上报数据。当后续条件组中引用的设备属性满足条件时,流程开始执行。

使用步骤:

  1. 拖入“属性触发”节点。
  2. 在其后连接至少一个“条件组”节点。
  3. 在条件中选择设备和属性,设置运算符及阈值。
  4. 在条件组后连接需要执行的动作。

属性触发必须在条件组中至少引用一台设备,否则平台无法确定要监听哪些设备。

常见用法:设备 A 温度大于 30℃ 时,向设备 B 下发开启空调指令。

3.2 定时触发

定时触发用于按照固定时间计划执行流程,支持周期任务和一次性任务。

周期任务的配置步骤:

  1. 拖入“定时触发”节点。
  2. 点击“定时规则”右侧的“配置”。
  3. 在定时规则配置窗口中生成 Cron 表达式。
  4. 点击“确定”保存表达式。

一次性任务的配置步骤:

  1. 开启“一次性任务”。
  2. 选择具体执行时间。
  3. 配置并连接后续动作。

一次性任务执行到点后会自动停用。执行时间以平台服务器时间和时区为准。

img_3.pngimg_4.png

3.3 手动触发

手动触发用于需要人工确认后再执行的流程,例如一键开灯、批量重启设备或临时推送消息。

规则保存后,可以在规则列表页或设计页顶部点击“手动执行”:

  • 选择“全部手动流程”可执行当前编排中的全部手动流程。
  • 选择具体流程可只执行一个手动流程。

新建规则尚未保存时不能手动执行。

4. 数据源节点

数据源节点用于实时接收平台数据并转发到外部系统,包括设备日志、设备告警和设备状态。

数据源转发内容典型用途
设备日志设备每次上报的属性和消息数据将遥测数据同步到业务系统或消息队列
设备告警平台生成的设备告警记录将告警推送到通知、工单或第三方告警平台
设备状态设备上线、离线事件监控设备连接状态或同步资产在线状态

配置数据源时需要先选择产品范围,再选择设备范围:

  • 所有设备:匹配所选产品下的全部设备,之后新增的设备也会自动纳入。
  • 部分设备:只转发手动选择的设备数据。

数据源后面只能连接 HTTP、MQTT Broker、MQTT Client、RabbitMQ、Kafka 或 RocketMQ 节点,不能连接条件组、设备指令、告警信息或延时节点。

数据源配置面板中的“查看转发消息格式”可以查看该类数据实际发送的 JSON 结构,第三方系统对接时应以这里展示的字段为准。

img_5.png

5. 条件组节点

条件组是流程中的判断关卡。条件满足时继续执行下游节点,不满足时停止该分支。

每条条件需要配置:

  1. 设备。
  2. 设备属性。
  3. 运算符。
  4. 比较阈值。

支持的运算符包括:>>==!=<<=、包含、不包含、在范围、不在范围。

使用“在范围”或“不在范围”时,用英文逗号分隔两个值,例如 10,20。使用“包含”或“不包含”时,阈值填写需要匹配的字符串。

5.1 多条件组合

  • 同一组内可以选择“组内 AND”或“组内 OR”。
  • 添加多个条件组后,可以选择组与组之间“全部满足 AND”或“任一满足 OR”。
  • 需要分阶段判断时,也可以在画布上串联多个条件组节点。

例如:

  • 组 1:设备 A 温度大于 30℃,并且湿度大于 80%。
  • 组 2:设备 B 运行状态等于故障。
  • 组间选择 OR,表示任意一组满足就继续执行。

img_6.png

6. 执行动作节点

6.1 设备指令

设备指令用于向指定设备下发功能或属性控制。

配置步骤:

  1. 选择目标设备。
  2. 选择设备功能。
  3. 检查自动生成的入参 JSON,并按实际需要修改参数值。
  4. 根据需要设置“完成后等待”,控制下一个节点延迟多久执行。

入参必须是合法 JSON,键名应使用设备物模型中定义的参数标识符。

6.2 告警信息

告警信息用于生成一条规则联动告警记录,需要配置告警标题、告警等级和告警消息。告警消息为必填项。

告警消息支持变量模板:

  • {{设备SN.属性标识符}}:读取指定设备最近一次上报的属性值。
  • {{deviceSn}}:本次触发来源的设备 SN。
  • {{ruleName}}:当前规则编排名称。
  • {{triggerTime}}:触发时间。

例如:设备温度已达到 {{sn001.temperature}} ℃

告警信息节点后还可以继续连接转发节点,将本规则生成的告警记录推送到外部系统。

6.3 延时

延时节点用于暂停指定毫秒数后再继续执行,适合以下场景:

  • 开启设备后等待几秒,再下发下一条指令。
  • 多步控制之间预留设备响应时间。
  • 控制消息发送频率。

延时时间必须大于 0。

7. 消息转发节点

消息转发节点既可以连接在数据源后,也可以连接在触发流程的动作链中。转发内容取自上游节点:数据源后转发原始数据,告警信息后转发生成的告警记录,其他触发流程则发送包含规则和触发信息的 JSON 数据。

7.1 HTTP 转发

需要配置完整请求地址、请求方式和可选请求头。支持 POSTPUTGET

  • 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 结构解析消息。

修改规则后需要重新启用吗?

在设计页点击“保存并启用”会用新配置更新并启动规则。仅点击“保存草稿”会将规则保存为草稿状态,不再运行。