名称
场景
核心技术
优点
缺点
应用案例
难度
Drools
1、业务代码和业务规则分离
2、适用于大型应用系统
模式匹配:Rate OO 算法
1、将初始数据(fact)输入Working Memory。
2、使用Pattern Matcher比较规则(rule)和数据(fact)。
3、如果执行规则存在冲突(conflict),即同时激活了多个规则,将冲突的规则放入冲突集合。
4、解决冲突,将激活的规则按顺序放入Agenda。
5、使用规则引擎执行Agenda中的规则。重复步骤2至5,直到执行完毕所有Agenda中的规则。
1、功能完善
2、具有监控
3、操作平台等功能
4、支持DMN
5、文档完善
1、学习成本高
2、比较重,复杂度高
3、独立系统很难进行二次开发
4、以内存实现时间窗功能,无法支持较长跨度的时间窗
5、不二次开发很难融入京东技术生态
携程
🌟🌟🌟🌟🌟
EasyRules
1、业务代码和业务规则分离
2、适用于大型应用系统
表达式语言(MVEL/SpEL)
1、使用MVEL表达式模式开发时,可以直接编写java代码直接编译执行,更好的支持扩展
2、使用SpEL,模式时可以进行yml文件编写,更好支持脚本模式开发,yml格式文件更加易读
1、 轻量
2、 易学
3、支持复合规则
4、定义规则方式多样
5、支持复杂业务场景
6、可集成至京东技术生态
1、不支持DMN
2、活跃度较低
3、文档较少
Apache Nifi
🌟🌟🌟
Aviator
1、各种表达式的动态求值
Aviator会将表达是编程字节码,交给JVM去执行。 AviatorEvaluator(执行器)支持两种模式进行表达式执行: 1、以执行速度优先: AviatorEvaluator.setOptimize(AviatorEvaluator.EVAL); 2、编译速度优先,这样不会做编译优化: AviatorEvaluator.setOptimize(AviatorEvaluator.COMPILE); AviatorEvaluator在执行表达式执行结果,可以进行对表达式缓存,使用了LRU算法,进行缓存淘汰。
1、轻量级
2、高性能
3、文档完善
4、社区活跃
5、可扩展
6、易学
7、可集成至京东技术生态
1、不支持DMN
2、支持业务场景较简单
美团酒旅实时数据规则引擎
🌟🌟
URule
1、业务代码和业务规则分离
2、适用于大型应用系统
1、应用Rete算法做为核心算法,生成可视化Rete树,规则文件校验,模型版本控制
2、使用JSR 170进行规则内容存储管理
1、功能完善
2、支持规则集,决策树,决策表
3、文档完备(有视频教程)
4、易集成
5、易改造
1、社区不活跃
2、应用案例较少
3、源码应用技术栈相对落后
中小公司