规则引擎系列—初识规则引擎

  • Post author:
  • Post category:其他


什么是规则引擎

规则引擎由

推理引擎

发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。这是来自百度百科的解释。

本质上规则引擎,是为了解决复杂业务规则决策,将复杂多变的业务规则,从代码内提炼出来,抽象为dsl语言或者可视化界面配置,用户角色:运营/产品/开发,可以动态调整dsl语言或者修改界面配置,从而将最新的规则推送给程序,使其快速支持业务的复杂多变的规则。

规则引擎解决什么问题

本质上是将复杂业务规则代码(if – else – then )从其代码中剥离出来,统一集中维护到一个地方,业务规则可视化,最理想的情况是界面上可动态调整,并且立即生效。

假如说你的规则非常复杂,例如风控内的评分卡的规则,单纯的写代码肯定也可以实现,但是硬编码一个评分卡还是比较费时费力的,同时无法实时动态调整,如果想要调整,需要经过开发,测试,发布环节。而规则引擎,可以将这套评分卡,配置到规则引擎,业务代码内完全不需要去care这些逻辑,只需要调用一下规则引擎的一个接口,即可返回最终的分数,岂不是方便,而且还支持产品或者运营进行在线调整,并且实时生效。如下图的评分卡规则:

规则引擎业界实践

图片来自:

https://www.ibm.com/developerworks/cn/java/j-java-rules/

IBM上的文章,一般写的都比较硬核,推荐阅读。


开源项目的实现主要包括:

Drools,目前最完整成熟的,也是大家一致认可的,但是体系庞大,比较重量级。

阿里的QL表达式引擎,

https://github.com/alibaba/qlExpress

GitHub上的Easy-Rule,

https://github.com/j-easy/easy-rules

美团实践,Crm业务线从0到1自己构建一套规则引擎:

https://cloud.tencent.com/developer/article/1058285

美团酒旅实践,最终放弃了Drools:

https://www.biaodianfu.com/meituan-rules-engine.html

网易考拉,风控线从0到1实现自己一套规则引擎:

https://juejin.im/post/5bd69af1e51d453975303cef


小公司可适配改造的开源福利,urule



https://github.com/youseries/urule

浅谈规则引擎的最佳实践

大厂有大厂的做法,基本是从0到1搞一套。小厂由于种种因素限制(个人能力,开发时间)等,很难从0到1搞一套,通常的做法是基于某套开源的框架,进行改造。我们小厂,基于urule系统进行了初步的改造,主要改造点是对urule的领域模型做了一套适配,即从风控的web端生成的Form对象,经过一系列adapter的转换,最终在urule系统内部生成自己的内部模型。同时对于决策流的执行,会记录每一个当流程节点的值,最终通过接口返回。根据流程节点的值,这样可以和风控侧的决策树进行关联。



版权声明:本文为y510662669原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。