什麼是規則引擎?
參照痴者工良的翻譯: https://www.cnblogs.com/whuanle/p/16830333.html
在企業專案中,關鍵或核心部分總是業務邏輯或業務規則,也就是 CRUD,這些系統都有一個共同的特徵是,某個模組中的一些或許多規則或策略總會發生變化,例如購物網站的顧客折扣、物流企業的運價計算等。隨著這些變化而來的是大量的重複工作,如果系統沒有足夠的抽象,那麼每當增加一種規則時,開發者需要在規則、迴歸測試、效能測試等方面的變化中編寫程式碼。
市面上規則引擎有很多,如:RulesEngine、GRule、liteFlow……
但我都不喜歡,以下有幾點原因:
1、沒有視覺化編輯;
2、不能倒推數量;
3、不能復原計算邏輯;
4、檔案不全或學習成本高。
為何我執著這幾點呢?
一、視覺化編輯的優點
視覺化編輯可以看成一張思維導圖,每個節點都能有下一個節點,並且節點上都有條件公式,這樣就成了一個完整規則。普通人都看懂各個節點的關係。
還可以匯出圖片,與業務人員進行溝通討論。
二、倒推生產數量
在製造業內,如紙箱製造,紙很容易損壞,要生產1000只,就要倒推工序,每個工序需要多少材料。而市面上的規則引擎都不能滿足。
三、視覺化復原計算邏輯過程
當價格計算特別複雜,客服過來讓開發人員來解釋這件商品為何這麼低的價格時,作為開發人員,研究的是程式碼,又不研究價格,那怎麼辦?只得進行偵錯,一步步偵錯,查到原因來跟客服溝通。如果這種情況過多,開發就完全成為客服的工具人了。
有些專案會使用計算引擎,這種情況下,偵錯復原計算邏輯中,老難了。讓人頭痛的是無效斷點。價格計算邏輯特別複雜時,通常公式套另一個公式,或者一個公式套著三四個公式,又因加了快取資料加快執行速度這個邏輯,我們查了一個公式,用了一個斷點,結果跑到另一個公式的條件檢測上去了。當我們又想查另一個公式時,結果發現值已快取,跳不進去了,被迫得進行第二次偵錯。
所以視覺化復原很重要!!!
有視覺化復原計算邏輯過程,我們可以快速判斷規則節點執行是否正確:
方便查詢下一公式計算過程,以及可以看到哪個節點設定了這個公式
當我們雙擊計算名稱,我們還能看到判斷條件,以及不符合條件。
我們雙擊節點也能看到節點的判斷條件,及不符合條件。
寫一個規則引擎需要哪些元件?
規則引擎核心元件有圖形編輯器、程式碼編輯器、計算引擎。
圖形編輯器推薦X6,開源免費,體積小
程式碼編輯器推薦ACE,開源免費,體積小,能與antlr4結合,提示錯誤資訊。
計算引擎推薦ToolGood.Algorithm,開源免費,功能強大,支援EXCEL函數。
繁雜的計算引擎推薦Jint,開源免費,補充繁雜的計算過程。
注:ToolGood.Algorithm需要魔改,因為原版支援自定義函數,因為自定義函數名是不確定的,錯誤的公式就會檢測不出來。
注2:用python寫測試程式碼真的很爽。。。
後話:
我認為規則引擎分兩種:
第一種是用於執行的規則引擎,推薦執行後返回狀態碼,程式再依據狀態碼執行下一步,這種有一個好處,可以復原執行邏輯過程。
第二種是用於計算公式的規則引引擎,如計算價格之類的,規則走通後,計算價格。
------------------------------------------------------------------------------------------------------------------------------------------
檢驗下載,百度網路硬碟:https://pan.baidu.com/s/138R4d172-drb731GoTI6Vg?password=92i2
注:百度網路硬碟內的不是最新的,且不要用於正式環境