理论基石
借用:《drools规则引擎技术指南》来说,
drools是:
开源项目,规则引擎技术,规则语法形成的规则文件,可以存在数据库等,通过drools包提供的接口,调用生成对应的结果,并且想要直到执行的过程和结果,可以设置监听器
为什么要使用:
一般的项目中没有引用规则引擎之前,通常的做法都是使用一个接口进行业务工作。首先要传进去参数,通过if…else或其他方式进行业务逻辑判断,其次要获取到接口执行完毕后的结果。引用规则引擎后就截然不同了,原有的if…else不复存在,代替它们的是规则引擎脚本,通过规则引擎实现可动态变化的“if …else”。规则引擎可以给项目带来什么?规则引擎的应用场景是什么?使用规则引擎的好处是什么?下面将进行详细介绍。
1. 规则引擎可以给项目带来什么
(1)给公司运营人员带来了什么?
① 将业务规则交于业务员来处理。
② 提高业务灵活性,业务员可以随时对公司业务进行修改(设计时要加权限)。
③ 增加业务处理的透明度,业务规则可以被管理。
④ 修改业务将不再通过开发人员,极大地减少了对IT人员的依赖。
⑤ 减少各部门之间的矛盾,各司其职。
(2)给公司IT部门带来了什么?
① 简化了系统的复杂度,使系统间变得简单、透明。
② 提高了系统的可维护性。
③ 减少了维护成本。
④ 规则引擎是相对独立的,只关心业务规则,并不关心与谁交接。
⑤ 减少了“硬代码[1]”业务规则的成本和风险。
⑥ 减少了与业务员的冲突。
2. 规则引擎的应用场景
(1)适用的行业分类。
① 金融行业—黑名单、白名单、风险投保。
② 医疗行业—合理输血、合理用药。
③ 电商行业—促销平台。
(2)适用的系统分类。
① 风险控制系统—风险贷款、风险评估系统。
② 反欺诈项目——银行贷款、征信验证。
③ 决策平台系统——财务计算。
④ 促销平台系统——满减、打折、加价购。
3. 使用规则引擎的好处
(1)应用概述说明。
① 应对复杂多变的业务场景。
② 快速且低成本地进行业务规则变更。
③ 业务员直接管理,不需要程序员进行干预,减少风险。
④ 平台独立化,系统迁移、系统升级都极为方便。
(2)作用与优点。
① 业务规则与系统代码分离,实现代码与业务的解耦合。
② 提供领域语言(自然语言),使业务人员更容易理解。
③ 提供了可视化页面[2]操作,使用更简单。
④ 大大提高了对复杂逻辑代码的可维护性。
⑤ 可随时对业务进行扩展和维护。
⑥ 符合公司对敏捷性或迭代性开发的策略。
2.1 经典Hello World
依赖:
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>7.68.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>7.68.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-templates</artifactId>
<version>7.68.0.Final</version>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-spring</artifactId>
<version>7.68.0.Final</version>
</dependency>
<!-- <dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
<version>7.68.0.Final</version>
</dependency>-->
基本类和文件三个
1、drl文件
package rules.rulesHello
rule "test001"
when
eval(true);
then
System.out.println("hello world");
end
2、kmodule.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
<kbase name="rules" packages="rules.rulesHello">
<ksession name="testhelloworld"/>
</kbase>
</kmodule>
3、RulesHello.java类
package com.rulesHello;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
public class RulesHello {
public static void main(String[] args) {
KieServices kss = KieServices.Factory.get();
KieContainer kc = kss.getKieClasspathContainer();
KieSession ks = kc.newKieSession("testhelloworld");
int count = ks.fireAllRules();
System.out.println("总执行了" + count + "条规则");
ks.dispose();
}
}
参考链接:
Drools入门 - 简书Drools入门 Drools官网 目录 Drools简述 Drools架构 Rate算法 在IDEA中构建一个DEMO 规则动态更新 生产环境中使用Drools需要考虑的问...https://www.jianshu.com/p/aea5aecc418e#/
Drools规则引擎技术指南-来志辉-微信读书Drools 规则引擎已经有几年的发展史了,但由于学习成本较高,且国内并没有详细的中文文档,导致 Drools 规则引擎在国内市场推行缓慢。本书将对 Drools规则引擎进行一个详细说明,共分为六篇,基石篇主要介绍规则引擎的入门知识,基础篇详细介绍规则引擎的基础语法、规则属性、关键字及错误信息,中级篇介绍规则中级语法等,高级篇介绍Workbench、 Kie-Server、动态规则、多线程中的 Drools 等高级用法,源码篇为 Drools 源码分析,扩展篇为 Drools 扩展说明。除了讲解 Drools 规则引擎的思维方式外,还在每一个知识点上辅以大量的代码案例,并且有很多实战经验及思想在里面。本书作为国内首 Drools 规则引擎的中文教程, Java 开发者、对 Drools 规则引擎有兴趣的软件开发人员或系统架构师都可以阅读https://weread.qq.com/web/reader/426329807199729e426ee0ck9bf32f301f9bf31c7ff0a60允许我很少有自己的原创,基本还是对这个网站的copy
其他的等待后续的研究吧………………
版权归原作者 specialApe 所有, 如有侵权,请联系我们删除。