thingsboard 规则引擎结点功能总结

本文总结了Thingsboard规则引擎的核心概念,包括Rule Engine Message、预定义的消息类型、规则结点及其关联、规则链。重点介绍了过滤型、增强型、变换型和动作型结点的功能,如Check Relation Filter Node、Device attributes、Script Transformation Node、创建/更新警报结点等。此外,还涵盖了与外部系统交互的结点,如AWS SNS、MQTT和REST API Call Node。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 概述

本文结合官方文档和v2.4.3版本源码总结了各规则引擎结点的功能。

官方文档的有些描述不太清楚,需要结合源码理清。

2. 核心概念

规则引擎是一个事件处理系统。

  • 能对由设备和资产上传的消息进行 filter, enrich, transform 处理
  • 并触发不同的动作,如 notification, 与外部系统交互等

2.1. Rule Engine Message 规则引擎消息

Rule Engine Message is a serializable, immutable data structure that represent various messages in the system. 例如:

  • 上传数据、属性更新、设备调用服务端 RPC
  • 实体生命周期事件: created, updated, deleted, assigned, unassigned, attributes updated;
  • 设备状态事件: connected, disconnected, active, inactive, etc;
  • 其它系统事件。

Rule Engine Message contains the following information:

  • Message ID: time based, universally unique identifier;
  • Originator of the message: Device, Asset or other Entity identifier;
  • Message Type: “Post telemetry” or “Inactivity Event”, etc;
  • Payload of the message: JSON body with actual message payload;
  • Metadata: List of key-value pairs with additional data about the message.

消息中包含以下信息:

  • Message ID: 基于时间的唯一 ID
  • 消息来源者:设备、资产(Asset) 、其它实体的 ID
  • 消息类型: Post telemetry, Inactivity Event
  • 消息体 Payload: JSON body.
  • Metadata: KV 键值对,消息的额外数据。

2.2. 预定义的消息类型

  • POST_ATTRIBUTES_REQUEST: Post attributes, 设备请求上传属性值,metadata 数据有: deviceName, deviceType, payload 例如 {"currentState": "IDLE"}
  • POST_TELEMETRY_REQUEST: Post telemetry, 设备请求上传遥测数据,metadata 数据有: deviceName, deviceType, ts(timestamp, 毫秒),payload 例如 {"temperature": 22}
  • TO_SERVER_RPC_REQUEST: RPC Request from Device, 设备(客户端)请求 RPC 调用,metadata 数据有: deviceName, deviceType, requestId(由客户端提供的 RPC 请求 ID),payload 例如 {"method": "getTime", "params": {"param1":"val1"}}
  • RPC_CALL_FROM_SERVER_TO_DEVICE: RPC Request to Device, 服务端请求 RPC 调用,metadata 数据有:requestUUID(服务端提供,用于区别应答),expirationTime, oneway(true 时无需应答,false 时需应用),payload 例如 {"method": "getGpioStatus", "params": {"param1": "val1"}}
  • ACTIVITY_EVENT: Activity Event, 设备切换为活跃状态,metadata 数据有 deviceName, deviceType
  • INACTIVITY_EVENT: Inactivity Event, 设备切换为非活跃状态。
  • CONNECT_EVENT: Connect Event, 设备已连接。
  • DISCONNECT_EVENT: Disconnect Event, 设备断开连接。
  • ENTITY_CREATED: Entity Created, 新实体已创建事件,metadata 数据有 userName(创建者名称), userId(创建者ID), payload 包含实体信息,如 {"id":{"entityType": "DEVICE", "id": "uuid"}, "createdTime": timestamp, ..., "name": "my-device", "type": "temp-sensor"}.
  • ENTITY_UPDATED.
  • ENTITY_DELETED.
  • ENTITY_ASSIGNED, Entity Assigned, 现有实体分配给客户事件,metadata 数据有 userName(操作者名称), userId, assignedCustomerName, assignedCustomerId.
  • ENTITY_UNASSIGNED.
  • ADDED_TO_ENTITY_GROUP.
  • REMOVED_FROM_ENTITY_GROUP.
  • ATTRIBUTES_UPDATED, Attributes Updated, 实体属性已更新事件,metadata 数据有 userName(操作者名称), userId, scope(SERVER_SCOPE 或 SHARED_SCOPE),payload 为已更新的属性键值对,如 {"softwareVersion": "1.2.3"}.
  • ATTRIBUTES_DELETED.
  • ALARM: Alarm Event, 当报警生成、更新、删除时产生该事件。
  • REST_API_REQUEST: REST API Request to Rule Engine,当用户执行 REST API 调用时产生该事件。

2.3. 规则结点 Rule Node

规则结点一次处理一个传入消息,并生成一个或多个输出消息。能过滤、增强、变换传入消息,执行动作或与外部系统交互。

2.4. 规则结点关联 Rule Node Relation

规则结点可关联到其它规则结点。每种关联都有关联类似 (Relation Type), 即表示该关联的逻辑意思的名称。规则结点在生成输出消息时,通过指定关联类型将生成的消息路由到下一个结点。

规则结点关联类型(即名称)可为 Success, Failure, 也可为 True, False, Post Telemetry, Attributes Updated, Entity Created 等。

2.5. 规则链

规则结点其及关联的逻辑组合。

租户管理员可定义一个根规则链(Root Rule Chain,默认规则链) 和多个其它规则链。

根规则链处理所有的输入消息,并可将消息转发到其它规则链。消息可在规则链间进行转发。

2.6. 规则结点类型

3. 体系结构

based on actor model and message queue:

规则引擎体系结构

4. 结点类型

4.1 Filter Node 过滤型结点

4.1.1. Check Relation Filter Node

消息发起者与当前结点中指定的实体关联性对比,比如结点中指定 Direction: From, Type: Asset, Asset: Field C, Relation type: Contains,
则当消息发起者是包含在 Field C 内的实体时,消息从 True 路流出,否则从 False 路流出。

4.1.2. Check Existence Fields Node

检测消息中的 data 和 metadata 中是否有相关字段。

4.1.3. Message Type Filter Node

检测消息类型。

4.1.4. Message Type Switch Node

根据消息类型路由到指定路径,未指定类型路径的消息路由到 Other 路径。

4.1.5. Originator Type Filter Node

检测输入消息中消息发起者的实体类型值,如果类型在结点中指定的类型中,则消息从 True 路流出,否则从 False 路流出。

4.1.6. Originator Type Switch Node

根据消息发起者的实体类型路由到指定路径。

4.1.7. Script Filter Node

结点中定义一个 bool 值 javascript 函数来过滤输入消息,函数有三个参数:

  • msg
  • metaData
  • msgType

例如:

function Filter(msg, metadata, msgType) {
   
    if(msgType === 'POST_TELEMETRY_REQUEST') {
   
        if(metadata.deviceType === 'vehicle') {
   
            return msg.humidity > 50;
        } else</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值