规则引擎比较(仅个人观点):Drools、RuleBook、Easy Rules、OpenL Tablets、Jess
- 硬编码
- 基础功能易实现,扩展功能需要自己开发,自由
- Drools
- 很强大的brms系统
- 生态也很不错
- 使用复杂
- 参考:https://github.com/kiegroup/drools&&https://www.drools.org/
- AgendaFilter筛选规则参考:https://blog.csdn.net/a294634473/article/details/89456645
- RuleBook
- 基于java8 lambda 模式的规则引擎,使用上也是比较灵活的,
- 参考:https://github.com/deliveredtechnologies/rulebook
- Easy Rules
- 轻量级框架,学习成本低,傻瓜式的基于pojo的规则引擎
- 使用简单,也比较强大,
- 支持bdd模式的规则处理,对于java 系统的集成很友好
- 支持基于文件的规则加载
- 接口可扩展,可自己添加基于db以及s3模式的处理,内置的Listener也是很不错的监控点,方便我们进行规则审计存储
- 几个主要的类或接口:Rule,RulesEngine,RuleListener,Facts
- 几个主要的注解:@Action,@Condition,@Fact,@Priority,@Rule
- 参考:https://github.com/j-easy/easy-rules
- OpenL Tablets
- 国内资料不是很多,但是官方文档还是很不错的
- 参考:https://github.com/openl-tablets/openl-tablets
- Jess
- ILOG JRules:商用
- Visual Rules:商用
规则引擎 | Drools | RuleBook | Easy Rules |
---|---|---|---|
可执行复杂事件处理的规则引擎 | 支持Lambda的轻量级规则引擎 | 简单轻量级的规则引擎 | |
JBoss、Red Hat | 不详 | 个人 | |
github | github | github | github |
star | 3.7k | 578 | 3.1k |
版本支持 | 7.55.0.Final 5天前 | 0.11 2018年12月5号 | 4.1.0 2020年12月7号 |
编程语言 | JAVA | JAVA | JAVA |
算法 | RETE算法 | - | - |
核心概念 | Fact | Given、Result | Facts |
rule | Rule | Rule | |
module | RuleBookRunner | RulesEngine | |
100条 | 419ms | 704ms | 426ms |
1000条 | 1932ms | 3137ms | 3459ms |
10000条 | 11641ms | 24014ms | 8172ms |
100000条 | 98140ms | 33722ms |