理论基石

借用:《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.rulesHellorule "test001"wheneval(true);thenSystem.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

其他的等待后续的研究吧………………

drools规则引擎的基本使用和原理介绍相关推荐

  1. 详解:Drools规则引擎探究

    引入 ▐ 问题引入 天猫奢品业务方为了吸引更多的新客,和提高会员的活跃度,做了一期活动,通过购买天猫奢品频道内的任意商品就赠送特殊积分,积分可以直接兑换限量的奢品商品.假如业务方给的规则如下: 主刃同 ...

  2. 使用 Drools 规则引擎实现业务逻辑,可调试drl文件

    http://www.srcsky.com/tech/arts/389.html 代码下载http://download.csdn.net/detail/zhy011525/2462313 使用 Dr ...

  3. drools规则引擎因为内存泄露导致的内存溢出

    进入这个问题之前,先了解一下drools: 在很多行业应用中比如银行.保险领域,业务规则往往非常复杂,并且规则处于不断更新变化中,而现有很多系统做法基本上都是将业务规则绑定在程序代码中. 主要存在的问 ...

  4. SpringBoot2 整合 Drools规则引擎,实现高效的业务规则

    本文源码:GitHub·点这里 || GitEE·点这里 一.Drools引擎简介 1.基础简介 Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的 ...

  5. SpringBoot整合Drools规则引擎动态生成业务规则

    最近的项目中,使用的是flowable工作流来处理业务流程,但是在业务规则的配置中,是在代码中直接固定写死的,领导说这样不好,需要规则可以动态变化,可以通过页面去动态配置改变,所以就花了几天时间去研究 ...

  6. drools规则引擎 java_Drools规则引擎的使用总结

    前一段时间在开发了一个做文本分析的项目.在项目技术选型的过程中,尝试使用了Drools规则引擎.让它来作为项目中有关模式分析和关键词匹配的任务.但后来,因为某种原因,还是撇开了Drools.现将这个过 ...

  7. 大数据风控项目实战 Drools规则引擎

    可以借鉴的干货 1,统一存储服务,包含:多种存储库连接封装和服务封装 在统一存储服务 2.获取配置的环境 类:EnvVariable 一.风控项目介绍 对一个复杂支付系统提供统一.全面.高效的风险控制 ...

  8. drools规则引擎动态配置规则

    先说下我的业务需求背景,最近公司要推出运营活动,根据用户行为送用户积分:比如用户注册送.首次消费送,非首次消费送.累积消费送.针对我们这个的特殊要求是跟具体规则绑定:比如说 规则1 用户累积消费首次达 ...

  9. Drools规则引擎-memberOf操作

    场景 规则引擎技术讨论2群(715840230)有同学提出疑问,memberOf的使用过程中如果,memberOf之后的参数不是集合也不是数组,而是格式如"1,2,3,4"的字符串 ...

最新文章

  1. centos7镜像加速_虚拟机 Linux CentOS7 安装Docker 详解:使用 阿里云Yum源;附加云镜像加速器...
  2. python安装numpy-python及numpy安装
  3. 年轻人对于“绰号”的认识
  4. java nio node_支撑 Java NIO 与 NodeJS 的底层技术
  5. BEGIN-2 序列求和
  6. 周鸿祎:数字孪生时代 网络攻击影响力更甚核弹
  7. python通过内置函数测试对象类型_python测试开发(01-递归函数+内置函数)
  8. 自带python库的环境软件_pyenv虚拟环境管理python多版本和软件库
  9. [翻译]超炫列表动画的实现
  10. linux中at重定位命令,readelf命令_Linux readelf 命令用法详解:用于显示elf格式文件的信息...
  11. Python3 色情图片识别
  12. AD9361 介绍 (上)
  13. 第6节 Tableau 直方图 | 评分直方图
  14. 大前端 HTML基础
  15. jQuery水平手风琴图片轮播切换
  16. JavaScript中的mouseover与mouseenter,mouseout和mouseleave的区别
  17. 谷歌浏览器与IE浏览器不兼容问题
  18. 9月11日 XE8移动开发入门(五)XE8中使用DataSnap三层架构和Beacon组件简介
  19. latex \nomenclature表达set的时候会有不希望出现的缩进,原因是没有打%符号,问题比较冷门,自己一个个试出来的
  20. 宝塔Nginx环境安装pagespeed模块加速网站以及配置WebP格式图片加速方法

热门文章

  1. 你的职场身价值几何?
  2. VxWorks启动过程具体解释
  3. 模拟工作室机架音频插件
  4. 文本数据增强二(EDA、同义词替换-新增-交换-删除-生成同义句)
  5. 阿里云入门教程搭建云数据库SQL Server
  6. Code:NFine目录
  7. Codeforces Round #408 (Div. 2)-C. Bank Hacking-(三种方法)分类讨论,二分,集合
  8. 毕业设计-基于微信小程序的点餐系统
  9. android 平板怎么刷机,小白必看,安卓平板电脑刷机教程之一键刷机
  10. 信达AI修图信达调色换天空PS插件双版完美版