跳转至

规则引擎概述

YiCONNECT 规则引擎是一个高度可定制和可配置的系统,用于复杂事件处理。通过规则引擎,您可以过滤、丰富和转换由物联网设备和相关资产发起的传入消息。您还可以触发各种操作,例如通知或与外部系统的通信。

关键概念

规则引擎消息

规则引擎消息是一种可序列化、不可变的数据结构,表示系统中的各种消息。例如:

  • 来自设备的传入遥测属性更新或RPC 调用;
  • 实体生命周期事件:创建、更新、删除、分配、取消分配、属性更新;
  • 设备状态事件:连接、断开、活动、非活动等;
  • 其他系统事件。

规则引擎消息包含以下信息:

  • 消息ID:基于时间的通用唯一标识符;
  • 消息的发起者:设备、资产或其他实体标识符;
  • 消息类型:“遥测后”或“不活动事件”等;
  • 消息的有效负载:带有实际消息有效负载的 JSON 正文;
  • 元数据:包含有关消息的附加数据的键值对列表。

规则节点

规则节点是规则引擎的基本组件,一次处理单个传入消息并生成一个或多个传出消息。规则节点是规则引擎的主要逻辑单元。规则节点可以过滤、丰富、转换传入消息、执行操作或与外部系统通信。

规则节点连接

规则节点可以连接到其他规则节点。每个关系都有关系类型,用于标识关系的逻辑含义的标签。当规则节点生成传出消息时,它始终指定用于将消息路由到下一个节点的关系类型。

典型的规则节点关系是“成功”和“失败”。表示逻辑运算的规则节点可以使用“True”或“False”。一些特定的规则节点可能使用完全不同的关系类型,例如:“Post Telemetry”、“Attributes Updated”、“Entity Created”等。

某些规则节点支持自定义连接名称。只需输入您的自定义连接名称,然后单击“创建新连接!” 关联:

图像

所有连接名称都 区分大小写

规则链

规则链是规则节点及其关系的逻辑组。例如,下面的规则链将:

  • 将所有遥测消息保存到数据库;
  • 如果消息中的温度字段高于 50 度,则发出“高温警报”;
  • 如果消息中的温度字段低于-40度,则发出“低温警报”;
  • 如果脚本中存在逻辑或语法错误,则将执行温度检查脚本的失败记录到控制台。

图像

租户管理员能够定义一个 根规则链 ,也可以选择定义多个其他规则链。根规则链处理所有传入消息,并可能将它们转发到其他规则链进行额外处理。其他规则链也可以将消息转发到不同的规则链。

例如,下面的规则链将:

  • 如果消息中的温度字段高于 50 度,则发出“高温警报”;
  • 如果消息中的温度字段低于 50 度,则清除“高温警报”;
  • 将有关“已创建”和“已清除”警报的事件转发到处理相应用户通知的外部规则链。

图像

消息处理结果

消息处理有三种可能的结果:成功、失败和超时。当处理链中的最后一个规则节点成功处理消息时,消息处理尝试被标记为“成功”。如果其中一个规则节点产生消息处理“失败”,并且没有规则节点来处理该失败,则消息处理尝试被标记为“失败”。当总处理时间超过可配置阈值时,消息处理尝试被标记为“超时”。

请参见下图,让我们回顾一下可能的情况:

图像

如果“Transformation”脚本失败,消息不会被标记为“Failed”,因为有一个“Save to DB”节点与“Failure”关系连接。如果“转换”脚本成功,它将通过 REST API 调用推送到“外部系统”。如果外部系统过载,REST API 调用可能会“挂起”一段时间。我们假设消息包处理的总超时时间为 20 秒。我们忽略转换脚本的执行时间,因为它小于 1 毫秒。因此,如果“外部系统”在20秒内回复,则该消息将被成功处理。类似地,如果“保存到数据库”调用成功,则消息将被成功处理。但是,如果外部系统在 20 秒内未回复,消息处理尝试将被标记为“超时”。类似地,如果“保存到数据库”调用失败,该消息将被标记为失败。

配置

每个规则节点可能具有取决于规则节点实现的特定配置参数。例如,“过滤器 - 脚本”规则节点可通过处理传入数据的自定义 JS 函数进行配置。“外部-发送电子邮件”节点配置允许指定邮件服务器连接参数。

可以通过双击规则链编辑器中的节点来打开规则节点配置窗口:

图像

测试脚本功能

一些规则节点具有特定的 UI 功能,允许用户测试 YICONNECTEL/JS 功能。单击 “测试过滤器函数” 后,您将看到 JS 编辑器,它允许您替换输入参数并验证函数的输出。

图像

您可以定义:

  • 左上角字段中的消息类型。
  • 左侧消息部分中的消息负载。
  • 右侧元数据部分中的元数据
  • 过滤器部分中的实际 YICONNECTEL/JS 脚本

按下后,测试输出将返回到右侧输出部分。

调试

YiCONNECT 提供了查看每个规则节点传入和传出消息的功能。要启用调试,用户需要确保在主配置窗口中选中“调试模式”复选框。

启用调试后,只要对应的关系类型,用户就可以看到传入和传出的消息信息。有关示例调试消息视图,请参见下图:

图像

导入导出

您可以将规则链导出为 JSON 格式并将其导入到同一个或另一个 YiCONNECT 实例。

为了导出规则链,您应该导航到 “规则链” 页面,然后单击位于特定规则链卡上的导出按钮。

图像

类似地,要导入规则链,您应该导航到“ 规则链” 页面,然后单击屏幕右下角的大“+”按钮,然后单击导入按钮。