4 報警系統QuickAlarm之報警規則解析

2021-08-16 04:25:41 字數 2736 閱讀 9102

前面兩篇分別說了報警執行器和報警規則的定義及使用者擴充套件載入,接下來就是比較核心的一塊了,如何將報警規則和報警執行器關聯起來,即當發生報警時,應該call哪乙個報警執行器

在正式進入之前,有必要額外宣告一下,因為目前的v1版本,沒有開放報警規則的自定義,也就是說,目前只支援預設的報警規則,所以接下來的主要內容將集中在

如果對於報警規則,依然不是很清晰的,可以閱讀一下《報警系統quickalarm之報警規則的設定與載入》

這裡簡單的進行說明,系統中預設的報警規則結構為:

通過前面的報警規則的簡單說明,基本上也可以撈出報警規則的解析原則了

上面是乙個簡單的解析規則,當然實際上和這個差不多,但有一些問題需要額外注意

只想選擇一種報**式,是否可以支援?

多重報**式同時呼叫怎麼處理?(如我希望用簡訊提示說有問題,同時用郵件包含詳細的異常堆疊)

頻率限制

報警型別沒有設定報警規則如何處理?

報警規則中使用了乙個未註冊的報警執行器會怎樣?

再次將報警規則類拿出來看一下

/**

* 報警使用者

*/private listusers;

/** * 報警的閥值

*/private listalarmthreshold;

/** * 最小的報警數

*/private

int minlimit;

/** * 最大的報警數

*/private

int maxlimit;

/** * 報警型別

*/private string alarmlevel;

/** * true 表示當報警超過當前的閥值之後, 將提公升報警的程度

*/private

boolean autoincemergency;

針對上面的問題,逐一說明

基本上前面已經將整個邏輯都說了,所以實際的編碼反而比較清晰了

/**

* 獲取具體的報警執行器

* * 1. 未開啟嚴重等級上公升時, 直接返回

* 2. 開啟之後, 判斷當前的計數 範圍

* *@param alarmconfig 報警配置項, 內部所有的引數都不可能為null

*/public

static executehelper getexecute(final alarmconfig alarmconfig,

int count)

// 未開啟報警公升級, 直接返回

if (!alarmconfig.isautoincemergency())

// 報警等級開啟上公升之趨勢

// 1. 獲取設定的預設等級

// 2. 判斷當前的報警次數, 選擇對應的報警型別

// 3. 選擇具體的報警型別

string defaultlevel = alarmconfig.getalarmlevel();

string selectlevel = null;

listselectuser = alarmconfig.getusers();

listlist = alarmconfig.getalarmthreshold();

boolean usenew = false;

boolean containdefaultlevel = false;

for (alarmthreshold alarmthreshold : list)

}for (alarmthreshold alarmthreshold : list)

if (count < alarmthreshold.getthreshold())

selectlevel = alarmthreshold.getalarmlevel();

// 選擇新的報警型別時, 需要更新報警使用者

selectuser = alarmthreshold.getusers();

}// 閥值列表中不包含預設報警型別,則根據新的來

if (!containdefaultlevel && selectlevel != null)

// 如果閥值列表中包含了預設報警型別, 且已經超過預設閥值

if (usenew && selectlevel != null) else

}

具體的實現基本和我們前面分析的一樣,但有乙個地方需要額外注意(吐槽:上面這個實現有點繞,後面想辦法規避下,搞得不太好理解了)

另外乙個問題就是,上面的實現沒有支援可以同時選擇多個報警執行器的情況

因為考慮到後面肯定會對報警規則的定義和解析放開,所以先實現了乙個簡單的場景,具體的放在後面處理

到這裡報警規則和報警執行器之間的解析關係已確定,剩下的東西就簡單了,乙個維持報警頻率計數,乙個報警執行緒池,再加上乙個對外介面的封裝而言

基本上,到這裡主要的核心邏輯已經完成,小結一下本系統中的核心設計理念 – 一切可自定義(當然目前差得有點遠)

報警系統quickalarm總綱

報警系統quickalarm之報警執行器的設計與實現

報警系統quickalarm之報警規則的設定與載入

報警系統quickalarm之報警規則解析

報警系統quickalarm之頻率統計及介面封裝

報警系統quickalarm使用手冊

資料報警系統

做演算法的人經常要處理大量的資料資訊,因此建立乙個資料報警系統是十分關鍵的,我們的直觀做法就是監控mysql資料庫裡的資料是不是正常。用python連線資料庫,import mysql,from mysql import connector,conn mysql.connector.connect ...

汽車安全行駛報警系統

作品介紹 在車輛迅速普及的當下,減少交通事故的發生成為人們越來越關注的問題之一。駕駛員不安全行為主要有酒駕 超時疲勞駕駛 反向行駛 注意力分散等,這些不安全的駕駛行為非常容易引起交通事故,造成不可挽回的後果。汽車安全行駛報警系統 具有檢測酒駕與疲勞駕駛的功能。通過指紋識別與採集來識別駕駛員的身份資訊...

學校一鍵報警系統

關於學校安裝 一鍵緊急報警系統 既是上級教育部門對學校安全防範的要求,也是上級公安部門對公安機關科技強警 服務民生的要求。根據國家教育部 公安部要求建立乙個科技化 資訊化程度較高的一鍵緊急報警系統 一鍵報警需求裝置美觀需求 報警裝置外觀應能夠與校園環境有機融合,美觀大方,不顯得突兀,裝置通常安裝在室...