没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
38页
- Drools规则引擎 - 问题引出 - 电商平台促销活动 - 规则引擎概述 - 什么是规则引擎 - 规则引擎方案对比 - 使用规则引擎的优势 - 规则引擎应用场景 - Drools介绍 - 开发实现 - 规则引擎构成 - 相关概念说明 - 规则引擎执行过程 - Drools基础语法 - **规则文件的构成** - 规则体语法结构 - Drools高级语法 - 规则文件编码建议 - Drools实践方案
资源推荐
资源详情
资源评论
Drools 规则引擎
问题引出
电商平台促销活动
活动规则是根据用户购买订单的金额给用户送相应的积分,购买的越多送的积分越多,用
户可以使用积分来兑换相应的商品。
用户购买的金额和对应送多少积分的规则如下:
规则编
号
名称
描述
1
100 元以下
不加分
2
100 元-500 元
加 100 分
3
500 元-1000 元
加 500 分
4
1000 元
加 1000 分
如何实现上面的业务逻辑呢?
我们最容易想到的就是使用分支判断(if else)来实现,例如通过如下代码来检查相关积分赠
送规则:
public void execute() throws Exception {
List<Order> orderList = getInitData();
for (int i=0; i<orderList.size(); i++){
Order order = orderList.get(i);
if (order.getAmout() <= 100){
order.setScore(0);
addScore(order);
}else if(order.getAmout() > 100 && order.getAmout() <= 500){
order.setScore(100);
addScore(order);
}else if(order.getAmout() > 500 && order.getAmout() <= 1000){
order.setScore(500);
addScore(order);
}else{
order.setScore(1000);
addScore(order);
}
}
}
通过上面的伪代码我们可以看到,我们的业务规则是通过 Java 代码的方式实现的。这种
实现方式存在如下问题:
1、硬编码实现业务规则难以维护
2、硬编码实现业务规则难以应对变化
3、业务规则发生变化需要修改代码,重启服务后才能生效
那么面对上面的业务场景,还有什么好的实现方式吗?--> 规则引擎。
规则引擎概述
什么是规则引擎
规则引擎,全称为业务规则管理系统,英文名为 BRMS(即 Business Rule Management
System)。规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义
的语义模块编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。
需要注意的是规则引擎并不是一个具体的技术框架,而是指的一类系统,即业务规则管理
系统。目前市面上具体的规则引擎产品有:drools、jRules、Aviator 等。
规则引擎实现了将业务决策从应用程序代码中分离出来,接收数据输入,解释业务规则,
并根据业务规则做出业务决策。规则引擎其实就是一个输入输出平台。
上面的积分业务场景使用规则引擎后效果如下
系统中引入规则引擎后,业务规则不再以程序代码的形式驻留在系统中,取而代之的是处
理规则的规则引擎,业务规则存储在规则库中,完全独立于程序。业务人员可以像管理数
据一样对业务规则进行管理,比如查询、添加、更新、统计、提交业务规则等。业务规则
被加载到规则引擎中供应用系统调用。
规则引擎方案对比
特性/规则引擎
Drools
jRules / ODM
Easy Rules
Aviator
开发语言
Java
Java
Java
Java
许可证
开源
商业
开源
开源
规则定义方式
规则、决策
表、决策树
规则、决策表、
事件
规则
表达式、函数
支持的规则类
型
复杂规则、事
件处理
复杂规则、事件
处理
简单规则
算术、逻辑、条
件表达式
规则编辑和管
理界面
Web 界面(KIE
Workbench)
商业产品提供
编程接口
编程接口
支持的语言绑
定
Java、mvel 等
Java、其他语言
绑定
Java
Java、JavaScript
等
性能
良好
良好
轻量级,适
用于简单规
则
非常快
扩展性
高
高
中
中
社区支持
活跃
商业产品,有官
方支持
不在更新
活跃
学习曲线
中等
中等
简单
简单
适用场景
复杂规则、业
务流程
复杂规则、业务
流程
简单规则
简单表达式求值
使用规则引擎的优势
使用规则引擎的优势如下:
1、业务规则与系统代码分离,实现业务规则的集中管理
2、在不重启服务的情况下可随时对业务规则进行扩展和维护
3、可以动态修改业务规则,从而快速响应需求变更
4、规则引擎是相对独立的,只关心业务规则,使得业务分析人员也可以参与编辑、维护
系统的业务规则
5、减少了硬编码业务规则的成本和风险
6、使用规则引擎提供的规则编辑工具,使复杂的业务规则实现变得的简单
规则引擎应用场景
对于一些存在比较复杂的业务规则并且业务规则会频繁变动的系统比较适合使用规则引
擎,如下:
1、风险控制系统----风险贷款、风险评估
2、反欺诈项目----银行贷款、征信验证
3、决策平台系统----财务计算
4、促销平台系统----满减、打折、加价购
Drools 介绍
drools 是一款由 JBoss 组织提供的基于 Java 语言开发的开源规则引擎,可以将复杂且多变
的业务规则从硬编码中解放出来,以规则脚本的形式存放在文件或特定的存储介质中(例
如存放在数据库中),使得业务规则的变更不需要修改项目代码、重启服务器就可以在线
上环境立即生效。
drools 官网地址:https://drools.org/
drools 源码下载地址:https://github.com/kiegroup/drools
在项目中使用 drools 时,即可以单独使用也可以整合 spring 使用。如果单独使用只需要
导入如下 maven 坐标即可:
// https://mvnrepository.com/artifact/org.drools/drools-compiler
<dependency>
<groupId>org.drools</groupId>
剩余37页未读,继续阅读
资源评论
代码匠心印记
- 粉丝: 483
- 资源: 30
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功