drools动态配置规则_关于规则引擎
很早之前就知道Drools,這幾天正好有個(gè)項(xiàng)目,里面用了大量的規(guī)則定義,就想是否能采用Drools來解決。
在github上分析了規(guī)則引擎項(xiàng)目,包括:
Easy-rules
https://github.com/j-easy/easy-rules
通過程序代碼來完成規(guī)則引擎,沒有外部配置。從例子來看,都還比較簡單。
https://github.com/Hale-Lee/RuleEngine
最好使用的規(guī)則引擎之一,可以直接使用SQL語句定義規(guī)則,簡化了編碼的負(fù)荷,也可以使用XML, drl文件配置規(guī)則,還支持drools文件導(dǎo)入。
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?"的指導(dǎo)來開發(fā)。和Drools比較起來,這幾個(gè)項(xiàng)目都簡單不少。
從某種意義上來說,程序即使規(guī)則的組合。使用規(guī)則引擎,基本的出發(fā)點(diǎn)是解決業(yè)務(wù)規(guī)則的多多變性問題,如果在進(jìn)一步考慮規(guī)則的可配置型,并且是界面友好的可配置,這樣的系統(tǒng)就比較復(fù)雜了,可以參考美團(tuán)的實(shí)踐,
從0到1:構(gòu)建強(qiáng)大且易用的規(guī)則引擎?mp.weixin.qq.com其實(shí)還有一種更加靈活的變通解決方案,就是利用Java的Script引擎來直接執(zhí)行JavaScript腳本,將輸入和輸入都定義成一個(gè)Map<String ,Object>,規(guī)則判斷都可以通過JavaScript來編寫
這種方式雖然更加靈活,但并不能解決規(guī)則本身的復(fù)用性問題。但在實(shí)際應(yīng)用中,規(guī)則都是和具體流程綁定,規(guī)則本身的復(fù)用性價(jià)值有多大呢?
基于JavaScrip的引擎可以參考以下兩個(gè)項(xiàng)目:
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.
總結(jié)
以上是生活随笔為你收集整理的drools动态配置规则_关于规则引擎的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webpack --- [4.x]你能
- 下一篇: webpack --- 在项目中使用R