添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
关于规则引擎

关于规则引擎

很早之前就知道Drools,这几天正好有个项目,里面用了大量的规则定义,就想是否能采用Drools来解决。

在github上分析了规则引擎项目,包括:

Easy-rules

github.com/j-easy/easy-

通过程序代码来完成规则引擎,没有外部配置。从例子来看,都还比较简单。

github.com/Hale-Lee/Rul

最好使用的规则引擎之一,可以直接使用SQL语句定义规则,简化了编码的负荷,也可以使用XML, drl文件配置规则,还支持drools文件导入。

RuleBook

github.com/rulebook-rul

100% Java, Lambda Enabled, Lightweight Rules Engine with a Simple and Intuitive DSL,和spring有很好的集成。


这些引擎的基本思路都是按Martin Fowler的文章 " Should I use a Rules Engine? " 的指导来开发。和Drools比较起来,这几个项目都简单不少。

从某种意义上来说,程序即使规则的组合。使用规则引擎,基本的出发点是解决业务规则的多多变性问题,如果在进一步考虑规则的可配置型,并且是界面友好的可配置,这样的系统就比较复杂了,可以参考美团的实践,

其实还有一种更加灵活的变通解决方案,就是利用Java的Script引擎来直接执行JavaScript脚本,将输入和输入都定义成一个Map<String ,Object>,规则判断都可以通过JavaScript来编写

这种方式虽然更加灵活,但并不能解决规则本身的复用性问题。但在实际应用中,规则都是和具体流程绑定,规则本身的复用性价值有多大呢?


基于JavaScrip的引擎可以参考以下两个项目:

json-rules-engine

github.com/CacheControl

A rules engine expressed in JSON

Node-rules

github.com/mithunsathee

Node-rules is a light weight forward chaining rule engine written in JavaScript.

发布于 2019-01-05 19:33