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

本文深入探讨了规则引擎的概念,其核心在于将复杂的业务规则从代码中抽离,实现动态调整与快速响应业务变化。通过可视化界面配置或DSL语言,非技术角色如运营和产品能直接调整规则,即时生效。文章还列举了业界实践,包括Drools、阿里QL表达式引擎、美团和网易考拉的自研规则引擎案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是规则引擎

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

本质上规则引擎,是为了解决复杂业务规则决策,将复杂多变的业务规则,从代码内提炼出来,抽象为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

小公司可适配改造的开源福利,urulehttps://github.com/youseries/urule

浅谈规则引擎的最佳实践

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值