最近因为公司项目需要,开始了解easy-rules,写这篇文章相当于记录一下自己的学习过程,也是学习资料的汇总,希望也可以帮助一下和我一样学习的小白。
什么是规则引擎
将规则引擎想象成为一个以数据和规则作为输入的系统。它将这些规则应用于数据,并根据规则定义为我们提供输出。
我理解为就是将项目中写死的ifelse那些判断条件和结果拿出来,通过规则引擎去实现,增加它的动态性,就不需要一改动东西,就需要去找到代码去改动。
在以下几种情况时,更适合于引入规则引擎:
- 需求不能确定,变更频率较高
- 需要快速做出响应和决策
- 规则变更期望脱离开发人员,脱离coding
- 流程分支非常复杂,规则变量庞大,常规编码(if-else)难以实现,通过规则引擎将多变的规则与其他的业务逻辑进行剥离。
- 业务多,接入成本高
- 实现热部署,降低需求变动的成本
规则引擎有很多,Drools、RuleBook等,市场上用的比较多的还是Drools和easyrules,我们这次项目选用easyrules是因为它学习成本较低,而且所需业务场景也不复杂。
对比方面 | easyrules | drools |
---|---|---|
学习成本 | 低 | 高 |
维护成本 | 低 | 高 |
规则编排能力 | 较弱 | 强 |
执行效率 | 较低 | 高 |
是否开源 | 开源 | 开源 |
什么是 EasyRules
Easy Rules是一个简单而强大的Java规则引擎,提供以下功能:
轻量级框架和易于学习的API
基于POJO的开发与注解的编程模型
定义抽象的业务规则并轻松应用它们
支持从简单规则创建组合规则的能力
支持使用表达式语言(如MVEL和SpEL)定义规则的能力