规则引擎学习

一、什么是规则引擎
全称为 业务规则管理系统 ,英文名为 BRMS(即 Business Rule Management System)。规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块(注:领域特定语言)编写业务决策(业务规则)。由用户或开发者在需要时进行配置、管理。 需要注意的是规则引擎并不是一个具体的技术框架,而是指的一类系统,即业务规则管理系统。

规则引擎实现了将业务决策从应用程序代码中分离出来,接收数据输入,解释业务规则,并根据业务规则做出业务决策。规则引擎其实就是一个输入输出平台,通过接受动态数据流入根据内部的规则得出决策结果的处理器,以抽离业务逻辑保证其独立维护和动态更新。

二、为什么需要规则引擎
2.1 从开发人员视角来看
在没有规则引擎的时代,有些逻辑比较复杂的业务,只有不断的增添 if-else 去满足我们这个复杂的业务场景,对于开发者来说还好,对于后面接手的同学一看到处都是 if-else,体验过的同学就会知道,当然 if-else 可以通过一些模式去优化,比如使用策略模式,或者使用一些注解进行扩展点优化,这样的确可以解决一部分代码不清晰的问题,但是依然无法解决开发缓慢,需要上线等问题。 举个例子,在风控系统中,因为风控的逻辑在不断的发生一个改变,如果我们在代码中去写死,那么发生一个改变就改一下代码,上一下线,这明显是我们不能接受的。所以我们需要规则引擎去改变这个现状,通过高效可靠的方式去做这些业务规则的改变。

核心问题域有了:大量无法避免的 if-else 充斥在我们的系统中,对于系统的维护造成了威胁。(系统架构的质量属性:可扩展性、研发质量&效率 严重受损):

1、无法直观表达现有业务逻辑,新人入手困难

2、新增&改动逻辑困难,极难扩展

3、容易出现 case 遗漏,质量堪忧

4、兜底&通用处理成本高,系统鲁棒性差

5、每次变更逻辑时都需要经历一次完整的研发-测试-发布-回测-灰度 等漫长的研发活动,效率成本堪忧

所以隔离这部分无法避免的业务决策逻辑,让逻辑变得纯粹可独立维护,所有逻辑一目了然动态可配,就是规则引擎要做的事儿。

2.2 从业务人员角度来看
业务人员独立配置业务规则,开发人员无需理解,让业务人员的规则和真正的实际情况一致。
增加业务的透明程度,业务人员配置了之后其他业务人员也能够知道,以前只能通过代码扣扣相传。
规则高效改动和上线,一般业务人员提出需求之后都是希望能尽快上线,但是之前都需要有代码开发,项目上线等环节,现在业务人员配置好了之后即配即用。
减少业务人员和开发人员的矛盾,开发人员通常会因为一些时间因素或者一些理解不到位导致业务人员的规则实现有偏差,最后业务同学会对开发同学产生一些小小的矛盾,这下完全业务配置解除开了之后,只要不断的升级规则引擎,业务规则就不会再对开发人员有依赖。

使用规则引擎的优势
业务规则与系统代码分离,实现业务规则的集中管理
在不重启服务的情况下可随时对业务规则进行扩展和维护
可以动态修改业务规则,从而快速响应需求变更
规则引擎是相对独立的,只关心业务规则,使得业务分析人员也可以参与编辑、维护系统的业务规则
减少了硬编码业务规则的成本和风险
使用规则引擎提供的规则编辑工具,使复杂的业务规则实现变得的简单
三、规则引擎执行过程示意图


四、规则引擎应用场景
对于一些存在比较复杂的业务规则并且业务规则会频繁变动的系统比较适合使用规则引擎,如下:

风险控制系统----风险贷款、风险评估
反欺诈项目----银行贷款、征信验证
决策平台系统----财务计算
促销平台系统----满减、打折、加价购
市面上常见的规则引擎
只记录常见的规则引擎会,不断更新,对相关项目的实际使用另行更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值