随着互联网的不断发展,有很多平台存在比较复杂的业务规则并且这些规则会随着需求频繁变换,这时候就需要找到一个可以将活动规则和代码解耦的技术,那就是规则引擎。
规则引擎:全称为业务规则管理系统,英文名为BRMS。需要注意的是规则引擎,而是指的一类系统,即业务规则管理系统。
java开源的规则引擎有:Drools、Easy Rules、Mandarax、IBM ILOG。使用最为广泛并且开源的是Drools。
主要应用场景:
- 风控系统-------风险贷款、风险评估
- 反欺诈项目-----银行贷款、征信验证
- 决策平台-------财务计算
- 电商平台------满减、打折、加价购
Drools 是用 Java 语言编写的开放源码规则引擎,使用 Rete 算法对所编写的规则求值。Drools 允许使用声明方式表达业务逻辑。可以使用非 XML 的本地语言编写规则,将规则与业务代码解耦,规则以脚本的形式存储在一个文件中,使规则的变化不需要修改代码,重新启动机器即可在线上环境中生效。并且,还可以将 Java 代码直接嵌入到规则文件中,这令 Drools 的学习更加吸引人。
官网:http://www.drools.org/#
官方文档:http://www.drools.org/learn/documentation.html
原文链接:https://huaweicloud.csdn.net/63356f78d3efff3090b56d8f.html
电商平台促销积分规则
开发实现
第一步:创建Maven项目,添加Drools 规则引擎依赖。
第二步:根据drools要求创建resources/META-INF/kmodule.xml 配置文件
需要有一个配置文件告诉代码规则文件drl 在哪里,在drools中这个文件就是kmodule.xml。
第三步:创建业务实体对象
第四步:创建规则文件,在resources/rules/score-rules.drl
第五步:单元测试
效果截图:
电商平台促销积分规则
开发实现
第一步:创建Maven项目,添加Drools 规则引擎依赖。
第二步:根据drools要求创建resources/META-INF/kmodule.xml 配置文件
第三步:创建业务实体对象
第四步:创建规则文件,使用insert into 语句插入数据库()
数据库字段为 serialNo(主键)、rule(规则内容)
第五步:单元测试
附加
这里写一下对此字段的增删改查语法
原文链接:https://huaweicloud.csdn.net/63355c9ad3efff3090b5418d.html?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Eactivity-3-120262609-blog-126691379.pc_relevant_recovery_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Eactivity-3-120262609-blog-126691379.pc_relevant_recovery_v2&utm_relevant_index=6
效果截图:
Drools规则引擎构成
drools规则引擎由以下几部分构成:
- Working Memory(工作内存)
- Rules(规则库)
- Inference Engine(推理引擎)
- 其中Inference Engine(t推理引擎)又包含如下:
Fact: 事实,是指在drools 规则应用当中,将一个普通的JavaBean插入到Working Memory后的对象就是Fact对象,例如本案例中的Order对象就属于Fact对象。Fact对象是我们的应用和规则引擎进行数据交互的桥梁或通道。
Rules: 规则库,我们在规则文件中定义的规则都会被加载到规则库中。
Pattern Matcher: 匹配器,将Rule Base中的所有规则与Working Memory中的Fact对象进行模式匹配,匹配成功的规则将被激活并放入Agenda中。
Agenda: 议程,用于存放通过匹配器进行模式匹配后被激活的规则。
以上就是今天要讲的内容,本文仅仅简单介绍了Drools 规则引擎,而Drools 提供了大量能使我们快速便捷地处理数据的函数和方法。大家可以看一下原文链接,里边讲解了一些关于Drools 基础语法等内容。