學習規則引擎——什麼是規則引擎

概念

規則引擎是根據一些演算法執行規則的一些列軟體系統。規則引擎整合了傳入系統的Fact集合和規則集合,從而去觸發一個或多個業務操作。

在某些條件下,執行某些任務。

在規則引擎出現之前,開發者往往在程式碼層進行硬編碼,充斥著大量的if/else。而業務上這些規則往往是靈活多變,生命週期很短。每次在需求改變的時候就會經過標準的軟體開發流程(需求->開發->測試->上線),很不適應業務的變化,比如雙十一活動規則,可能前一天的優惠規則和後一天的優惠規則都不一樣,等開發好了,優惠規則又變了。其次,大量的規則混合到一起,複雜度增大,難以維護。修改一個規則,很可能要讀幾千行程式碼才能找到修改點。雖然我們可以合理地利用一些設計模式來最佳化程式碼的可讀性,但是無法保證所有開發者都會按照相同的方式來去編碼(個人認為用專案規範和review來管理程式碼的開發,可以一定程度減少問題,但很難完全規避)。另外對於業務方來說,大量的規則,也需要進行梳理,管理。所以需要一個這樣的系統來對規則進行統一規劃。

特點

高靈活性

:在規則儲存在知識庫中,可以在規則變動輕易做出修改。

容易掌控

:規則比過程程式碼更易於理解,因此可以有效地來彌補業務分析師和開發人員之間的溝通問題。

降低複雜度

:在程式中編寫大量的判斷條件,很可能會造成一場噩夢。使用規則引擎卻能夠透過一致的表示形式,更好地處理日益複雜的業務邏輯。

可重用性

:規則集中管理,可提高業務規則的可重用性。而且,傳統的程式碼程式通常會新增不必要的變數,很難進行重複利用。

在業務規則沒有太多變動,業務規則比較簡單的情況下,是沒有必要使用規則引擎的。

市面上有哪些規則引擎

Drools

Drools規則引擎是一款開源的規則引擎(

https://drools。org/

)。Drools規則引擎可透過儲存、處理和評估資料來執行業務規則和決策模型。Drools規則引擎最基礎的功能是將輸入的資料或Fact物件和規則條件進行匹配,並根據匹配結果決定如何執行規則。

OpenL Tablets

OpenL Tablets(http://openl-tablets。org/)是基於Excel文件的業務規則管理系統和業務規則引擎。基於獨特的概念,OpenL Tablets有助於將包含業務邏輯規範的業務文件視為可執行原始碼。

Easy Rules

Easy Rules(https://github。com/j-easy/easy-rules)是一個簡單但功能強大的Java規則引擎。Easy Rules提供了Rule抽象以建立具有條件和操作的規則,並提供了RuleEngine API,該API透過一組規則去評估條件並執行操作。

RuleBook

RuleBook是一個規則引擎,旨在以Java開發人員熟悉的方式建立規則。RuleBook還允許你使用易於使用的啟用Lambda的特定領域語言或自定義的POJO來指定規則。

Aviator表示式求值引擎

Aviator是一個高效能、輕量級的java語言實現的表示式求值引擎,主要用於各種表示式的動態求值。

MVEL表示式解析器

MVEL在很大程度上受到Java語法的啟發,作為一個表示式語言,也有一些根本的區別,旨在更高的效率,例如:直接支援集合、陣列和字串匹配等操作以及正則表示式。 MVEL用於執行使用Java語法編寫的表示式。

URule

URule是一款基於RETE演算法純Java的規則引擎產品。在URule當中提供了嚮導式規則集、指令碼式規則集、決策表、交叉決策表(PRO版)、決策樹、評分卡及決策流共七種型別的規則定義方式,配合基於WEB的設計器,可快速實現規則的定義、維護與釋出。商業版(http://www。bstek。com)功能更強大,同時提供了開源版(https://gitee。com/youseries/urule?_from=gitee_search)

規則引擎介紹就到這裡了,感興趣可以繼續看我後面的文章對這幾個引擎的使用。