本文主要内容如下:
1.什么是规则引擎;
2.为什么要使用规则引擎;
3.规则引擎的应用场景有哪些;
4.规则引擎的技术选型有哪些;
5.规则引擎的原理又是怎样的;
6.我对规则引擎有哪些实践经验;
7.以Drools为例的代码示例;
8.总结。
一、什么是规则引擎?
规则引擎是用于自动管理某些高度可变过程的模块,其基本概念包含将过程中涉及的对象与实现这些过程的逻辑分离。
逻辑通过编写规则进行定义。对于每个过程,规则引擎将识别要应用的规则以及要对其执行操作的对象。如果逻辑发生了变化,那么可以更改规则而不必干预系统体系结构。
简而言之,规则引擎是一种可降低复杂业务逻辑组件复杂性、降低应用程序的维护和可扩展性成本的组件。
二、为什么要使用规则引擎?
规则引擎可以很好地诠释一点,“专业的人,做专业的事情”(即业务人员和研发人员各司其职,各自做好在各自领域所擅长的事情)。
除此之外,还有如下优点:
1.业务规则与数据分离;
2.速度和可扩展性;
3.业务知识集中化;
4.解释能力;
5.可理解的规则。
缺点的话,我觉得最大的缺点:“就是为了规则引擎而规则引擎,忽略真实的应用场景(是否刚需)。”
三、规则引擎的应用场景有哪些?
1.流程分支非常复杂,规则变量庞大;
2.有不确定性的需求,变更频率较高;
3.需要快速做出响应和决策;
4.规则变更期望脱离于开发人员,脱离coding。
适用行业领域(很多领域),例如工业、电商、金融证券、物联网、外卖等。
四、规则引擎的技术选型有哪些?
1.Drools;
2.Easy-Rules;
3.QLExpress;
4.Ilog JRules;
5.OpenL Tablets;
6.RuleBook;
7.URule。
上述规则引擎的技术选型,大部分基于Java开源生态。从我个人的经验角度出发,规则引擎的技术选型我比较倾向于使用Drools。因为它符合我在youcongtech,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。