設備預警規則設計(使用表達式引擎)

      一位領導一再強調每個人都是產品,確實作爲一個多年編碼的程序員,我們都需要有這樣的格局眼光。之前要求聯動預警可以拖拽配置,這裏就分享一下個人的設計想法。

一、技術實現準備

規則解析:使用表達式引擎JEXL(號稱目前最快,靈活)

拖拽實現:前端說有插件(H5還是很強大)

拖拽配置:抽象出一個簡易的設計界面(對元素抽象處理)

二、界面設計

產品御用設計界面Axure用的真差,將就看吧。界面也畫的粗,有個大致意思吧。主要有三個界面:

  1. 設備功能配置

配置各類設備的功能,指令下發平臺、功能碼等信息

  1. 上報數據格式設置

平臺推送數據格式配置,方便推送數據存儲、解析、爲聯動規則提供字段來源

  1. 預警可視化配置

抽象的簡易設計界面,配合前端實現拖拽配置預警、聯動。注意提供聯動測試按鈕,也就是根據上報格式設置的json串模擬一條上報數據,調用上報數據接收接口。

         大致界面

 

設備功能配置

 

上報數據格式設置

 

預警可視化配置

三、設計思路解釋

1、設備功能配置、上報數據格式設置都是爲拖拽配置提供配置基礎的。上報數據格式另外其實也爲推送數據提供存儲便利,上報數據採用主數據行存儲,從數據列存儲,比如主數據存字段是比較固定的字段,從數據爲擴展字段,可冗餘設備上報數據差異。

上報數據格式:

{"deviceCode":[{"val":"設備編碼"},{"val":"abc0001"}],"dy":[{"val":"電壓"},{"val":"250V"}],"dl":[{"val":"電流"},{"val":"25A"}],"maxDy":[{"val":"最大電壓"},{"val":"300V"}]}

平臺推送過來除了告知值,同時告知字段意思,這個平臺對接設備肯定是知道的,業務系統就不一定知道了。

2、拖拽的設備可設置廠家、型號、編碼,都可爲空,根據這裏設置的廠家、型號找上報數據格式,如果都爲空默認使用配置的通用格式對數據進行解析。(如果上報數據格式設置沒有配置全面,可能沒有對應的格式)

針對接收上報數據過程中沒有匹配到格式,應該設計一個專門的異常管理模塊,方便運維人員健壯配置。

  1. 被聯動動作來源設備功能配置,也是根據廠家、型號進行查詢,下拉選擇,如果廠家、型號空,則默認自行根據上報數據設備編碼查詢到的廠家、型號匹配查找。(如果設備功能配置沒有配置全面,可能出現沒有匹配到,聯動失敗)

針對聯動失敗的,也歸併到異常管理模塊,記錄數據,方便運維開發找原因。

  1. 聯動箭頭元素的設置,規則字段也是來源上報數據格式設置。後臺上報數據解析使用表達式引擎對設置的規則進行解析,觸發本級聯動與下級設備聯動。

表達式解析異常的,也歸併到異常管理模塊,記錄數據,方便運維開發找原因。

四、設計總結

         1、拖拽元素抽象的還不夠,部分點可能沒有想到

         2、設備功能配置,有參的功能配置還要考慮,沒有想到好的設計辦法

3、數據採取主從行列方式存儲,表連接查詢、列表展示將增加前端展示的難度。主從字段要提前分明,後期有連接查詢需求可將從列變更到主列字段。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章