规则引擎概述
参考b站黑马博学谷Drools视频,侵权请联系删除
背景
- 硬编码实现业务规则难以维护;
- 硬编码实现业务规则难以应对变化;
- 业务规则发生变化需要修改代码,重启服务后才能生效。
通过规则引擎Drools可以解决上述问题。
什么是规则引擎
规则引擎,全称是业务规则管理系统。主要思想是将应用程序中的业务决策部分分离出来,使用预定义的语义模块编写业务规则,由用户或开发者在需要时进行配置、管理。
规则引擎不是一个技术框架,指的是一类系统,即业务规则管理系统。目前的规则引擎产品由:Drools,VisualRules,iLog等。
规则引擎实现了将业务决策从应用程序代码中分离出来,接受数据输入,解释业务规则,并根据业务规则做出业务决策。规则引擎其实就是一个输入输出平台。业务应用和规则引擎的关系如下图:
系统中引入规则引擎后,业务规则不再以程序代码的形式留在系统中,取而代之的是处理规则的规则引擎,业务规则存储在规则库中,完全独立于程序。业务人员可以像管理数据一样对业务规则进行管理,比如查询、添加、更新、统计、提交业务规则等,业务规则被加载到规则引擎中供应用系统调用。
规则引擎的优势
- 业务规则与系统代码分离,实现业务规则的集中管理;
- 在不重启服务的情况下可随时对业务规则进行扩展和维护;
- 可以动态修改业务规则,从而快速响应需求变更;
- 规则引擎是相对独立的,只关心业务规则,使得业务分析人员也可以参与编辑、维护系统的业务规则;
- 减少了硬编码业务规则的成本和风险;
- 使用规则引擎提供的规则编辑工具,使复杂的业务规则实现变得的简单。
规则引擎应用场景
对于一些存在比较复杂的业务规则并且业务规则会频繁变动的系统比较适合使用规则引擎。
- 风险控制系统一风险贷款、风险评估
- 反欺诈项目一银行贷款、征信验证
- 决策平台系统一财务计算
- 促销平台系统—满减、打折、加价购
Drools介绍
Drools是一款由JBoss组织提供的基于java语言开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存放在文件或特定的存储介质中(如数据库),使得业务规则的变更不需要修改项目代码或重启服务器就可以在线上环境立即生效。
Drools api开发步骤如下图: