開源物聯網平臺Thingsboard——(核心章節)第四節規則引擎詳解

一、規則引擎是什麼?

  • 官方解釋:“規則引擎由推理引擎發展而來,是一種嵌入在應用程序中的組件,實現了將業務決策從應用程序代碼中分離出來,並使用預定義的語義模塊編寫業務決策。接受數據輸入,解釋業務規則,並根據業務規則做出業務決策。”
  • Thingsboard解釋:Thingsboard平臺的核心處理引擎,好比一臺車子的發動機,是基於事件構建的工作流,是一個高度可定製的框架,用於複雜事件的處理。
開源物聯網平臺Thingsboard——(核心章節)第四節規則引擎詳解

thingsboard規則引擎


二、Thingsboard 規則引擎能力是什麼?

  • 1、在設備數據(實時數據/屬性數據)保存到數據庫之前,支持對接收的遙測數據或屬性數據進行攔截驗證和修改;
  • 2、將設備遙測數據(實時數據)或者設備屬性從設備複製到相關資產,以便可以彙總遙測;
  • 3、自定義告警規則/函數,進行設備告警觸發、更新、清除;
  • 4、根據設備生命週期事件觸發操作。如設備上線、設備離線狀態,創建告警事件;
  • 5、加載所需的其他處理數據。在客戶設備或租戶屬性中定義的設備的負載溫度閾值;
  • 7、發生複雜事件時發送電子郵件,並使用“電子郵件模板”中其他實體的屬性;
  • 8、根據定義的條件進行遠程設備控制的RPC調用。
  • 9、將設備實時數據、遠程控制RPC指令,或者由規則引擎觸發的告警或者事件,推送到與外部消息中間件或者第三方系統(如Kafka,MQTT,RabbitMQ, Spark,AWS服務等等)

簡單的總結:能夠用於接收任何事件,可以是來自設備的,設備生命週期事件、REST API事件、RPC請求等的傳入;能夠處理單個傳入消息並生成一個或多個傳出消息,發往不同的規則鏈路進行消息的路由處理,同時可以過濾,豐富,轉換傳入消息,執行操作或與外部系統通信。

三、規則引擎的組成有哪幾部分?

1.規則消息(Message)

  • 作用:用於接收任何事件,可以是來自設備的,設備生命週期事件、REST API事件、RPC請求等的傳入
  • 特點:可以被序列化的有著規定的數據結構,表示系統中的各種消息
  • 消息組成:消息ID(MessageId),基於時間的通用唯一標識符;消息發起者(Originator of the Message),Device,Asset或者其他Entity標識符;消息類型(Type Of the Message),遙測或者不活動的事件;消息負載(Payload of the message),帶有實際消息有效負載的json報文;元數據(Metadata),鍵值對的列表以及消息有關的其他數據。
  • 消息類型:類型太多不一一列舉。如有需要請私信。文檔免費共享。
開源物聯網平臺Thingsboard——(核心章節)第四節規則引擎詳解

消息類型

2.規則節點(Rule Node)

  • 是什麼?規則節點是規則引擎的基本組件,它一次處理單個傳入消息並生成一個或多個傳出消息。規則節點是規則引擎的主要邏輯單元。規則節點可以過濾,豐富,轉換傳入消息,執行操作或與外部系統通信。
  • 作用:規則節點可以過濾,豐富,轉換傳入消息,執行操作或與外部系統通信。提供節點自定義能力,實現數據的運算。
  • 節點間的關係:規則節點可能與其他規則節點相關。每個關係都有關係類型,這是用於標識關係的邏輯含義的標籤。當規則節點生成傳出消息時,它總是指定用於將消息路由到下一個節點的關係類型。
  • 規則節點類型:

a、過濾節點(用於消息過濾和路由,過濾成功走真鏈、錯誤走假鏈)。示例1:script(腳本過濾器節點)使用javascript條件進行消息過濾(消息msg,metadata消息元數據,msgType消息類型);示例2:switch(交換節點)將傳入消息路由到一個或多個輸出鏈,節點執行已配置的JavaScript函數。

開源物聯網平臺Thingsboard——(核心章節)第四節規則引擎詳解

過濾節點


b、屬性集節點:用於更新傳入消息的元數據。比如1:消息發起方用戶屬性(customer attributes),將消息發起方屬性信息或者遙測數據加入Metadata元數據中。比如2:設備屬性(device attributes),將消息發起方的設備屬性或者遙測數據加入metadata。


開源物聯網平臺Thingsboard——(核心章節)第四節規則引擎詳解

屬性集節點

c、變換節點:用戶更改創立的消息字段,比如,發起方、類型、有效負載,元數據。比如1:腳本轉換節點(script),作用:修改消息內容(msg(消息負載),msgType(消息類型),metadata(元數據)),可增加,可改。比如2:轉換到電子郵件節點(to email),通過使用從消息元數據派生的值填充電子郵件字段,將消息轉換為電子郵件消息。設置“ SEND_EMAIL”輸出消息類型,以後可以被“ 發送電子郵件節點”接受。可以將所有電子郵件字段配置為使用元數據中的值。


開源物聯網平臺Thingsboard——(核心章節)第四節規則引擎詳解

變換節點

d、動作節點:根據傳入的消息執行各種動作。比如1:create alarm(創建告警),通過過濾節點中的過濾腳本判斷後,對滿足條件的消息進行告警的觸發。比如2:log(創建日誌),對於系統中的關鍵系統進行日誌輸出,比如3:rpc call request(遠程RPC調用),監控系統rpc請求,下發控制命令請求。


開源物聯網平臺Thingsboard——(核心章節)第四節規則引擎詳解

動作節點

e、外部節點:提供將消息及數據路由到外部中間件,或者其他第三方雲平臺中。用於與外部系統進行交互。實例1:kafka(kafka消息中間件),MQTT(外部MQTT代理),RabbitMQ,支持將系統中的數據發佈到kafka/MQTT代理/RabbitMQ中,供第三方消費者訂閱數據。實例2:send email (向外部發送郵件)。實例3:aws sns:將消息發佈到aws sns(亞馬遜簡單消息通知服務,是一種發佈\\訂閱模式的消息收發服務)。


開源物聯網平臺Thingsboard——(核心章節)第四節規則引擎詳解

外部節點


3.規則鏈(Rule Chain)

  • 是什麼?規則鏈是規則節點及其關係的邏輯組。接收來自節點的出站消息將其發送至下一個節點。
  • 用法:租戶管理員可以定義一個“ 根”規則鏈,還可以定義多個其他規則鏈。根規則鏈處理所有傳入的消息,並將其轉發到其他規則鏈以進行其他處理。其他規則鏈也可以將消息轉發到不同的規則鏈。

四、使用特點

  • 組態化拖拽式佈局編輯

每個規則節點可以具有取決於規則節點實現的特定配置參數。例如,“過濾器-腳本”規則節點可通過處理傳入數據的自定義JS函數進行配置。


開源物聯網平臺Thingsboard——(核心章節)第四節規則引擎詳解

組態化拖拽式佈局


  • 基於調試—事件模式的規則測試

每個規則節點可以設置為調試模式,啟用之後,在事件中可以查看到入站-出站消息


開源物聯網平臺Thingsboard——(核心章節)第四節規則引擎詳解

調試-事件模式


  • JavaScript函數測試臺

一些規則節點具有特定的UI功能,允許用戶測試JS函數。單擊“ 測試過濾器功能”後,您將看到JS編輯器,可使用該編輯器替換輸入參數並驗證函數的輸出。


開源物聯網平臺Thingsboard——(核心章節)第四節規則引擎詳解

js函數測試臺

  • 規則節點可自定義:

如果thingsboard現有的規則處理節點,無法處理有些定製化業務場景,比如:對於數據進行分類統計,或者分組統計、或者將數據推送到外部Hadoop生態去存儲、或者將指定一段時間的數據,生成文件導出,推送到遠程服務器上之類的小場景,可以通過自定義規則節點實現。官方預留擴展開發的接口,很容易構建自己的處理邏輯。

5、總結:

  • 本次對於thingsboard的規則引擎的基本概念、可以使用的能力、規則引擎的組成,以及各個規則節點的用法、規則模型的使用特點做了簡單的介紹。相信通過本次的講解,對於規則引擎的基礎、能力、用法有了大概的瞭解,具體的規則引擎的實戰講解,規劃在設備物聯接入之後,再進行演示。謝謝大家瀏覽,望大家持續關注,支持原創,成就更好的自己!

下一節,開源物聯網平臺Thingsboard——(核心章節)第五節設備物聯接入。


分享到:


相關文章: