drools动态配置规则_关于规则引擎
很早之前就知道Drools,這幾天正好有個項目,里面用了大量的規則定義,就想是否能采用Drools來解決。
在github上分析了規則引擎項目,包括:
Easy-rules
https://github.com/j-easy/easy-rules
通過程序代碼來完成規則引擎,沒有外部配置。從例子來看,都還比較簡單。
https://github.com/Hale-Lee/RuleEngine
最好使用的規則引擎之一,可以直接使用SQL語句定義規則,簡化了編碼的負荷,也可以使用XML, drl文件配置規則,還支持drools文件導入。
RuleBook
https://github.com/rulebook-rules/rulebook
100% Java, Lambda Enabled, Lightweight Rules Engine with a Simple and Intuitive DSL,和spring有很好的集成。
這些引擎的基本思路都是按Martin Fowler的文章"Should I use a Rules Engine?"的指導來開發。和Drools比較起來,這幾個項目都簡單不少。
從某種意義上來說,程序即使規則的組合。使用規則引擎,基本的出發點是解決業務規則的多多變性問題,如果在進一步考慮規則的可配置型,并且是界面友好的可配置,這樣的系統就比較復雜了,可以參考美團的實踐,
從0到1:構建強大且易用的規則引擎?mp.weixin.qq.com其實還有一種更加靈活的變通解決方案,就是利用Java的Script引擎來直接執行JavaScript腳本,將輸入和輸入都定義成一個Map<String ,Object>,規則判斷都可以通過JavaScript來編寫
這種方式雖然更加靈活,但并不能解決規則本身的復用性問題。但在實際應用中,規則都是和具體流程綁定,規則本身的復用性價值有多大呢?
基于JavaScrip的引擎可以參考以下兩個項目:
json-rules-engine
https://github.com/CacheControl/json-rules-engine
A rules engine expressed in JSON
Node-rules
https://github.com/mithunsatheesh/node-rules
Node-rules is a light weight forward chaining rule engine written in JavaScript.
總結
以上是生活随笔為你收集整理的drools动态配置规则_关于规则引擎的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webpack --- [4.x]你能
- 下一篇: webpack --- 在项目中使用R