Drools规则引擎优势、相关概念、构成、使用及开发步骤

用传统方式编写规则的缺点:

  • 难以维护
  • 难以应对规则变化
  • 修改代码后重启服务才能生效

1 规则引擎概述

1.1什么是规则引擎

  • 全称业务规则管理系统(BRMS)
  • 主要思想:将应用程序中的业务决策部分分离出来,并使用预定义的语义模块编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。
  • 规则引擎不是框架,是一类系统,常见的规则引擎有drools、VisualRules、iLog等
  • 规则引擎实现了将业务从应用程序中分离出来,接受数据输入,解释业务规则,并根据业务规则作出业务决策。规则引擎实际就是一个输入输出平台。

1.2规则引擎的优势

  • 业务规则与系统代码分离,实现业务规则的集中管理
  • 在不重启服务的情况下可随时对业务规则进行扩展和维护
  • 可以动态修改业务规则,快速响应需求变更
  • 规则引擎是相对独立的,只关心业务规则,使得业务分析人员也可以参与编辑、维护系统的业务规则
  • 减少了硬编码业务规则的成本和风险
  • 使用规则引擎提供的规则编辑工具,使复杂的业务规则实现变得的简单

1.3规则引擎的适用场景

存在比较复杂的业务规则并且业务规则会频繁变动的系统,如:风险控制系统(风险贷款、风险评估)、反欺诈项目(银行贷款、征信验证)、决策平台系统(财务计算)、促销平台系统(满减、打折、加价购)

1.4相关概念

  • Working Memory:工作内存,drools规则引擎会从Working Memory中获取数据并和规则文件中定义的规则进行模式匹配,所以开发的应用程序只需要将数据插入到Working Memory中即可,例如Drools入门案例中调用kieSession.insert(order)就是将order对象插入到了工作内存中。

  • Fact:事实,是指在drools 规则应用当中,将一个普通的JavaBean插入到Working Memory后的对象就是Fact对象,例如Drools入门案例中的Order对象就属于Fact对象。Fact对象是应用和规则引擎进行数据交互的桥梁或通道。

  • Rule Base:规则库,在规则文件中定义的规则都会被加载到规则库中。

  • Pattern Matcher:匹配器,将Rule Base中的所有规则与Working Memory中的Fact对象进行模式匹配,匹配成功的规则将被激活并放入Agenda中。

  • Agenda:议程,用于存放通过匹配器进行模式匹配后被激活的规则。

  • Execution Engine:执行引擎,执行Agenda中被激活的规则。

2 Drools

2.1介绍

由JBoss组织提供的基于Java语言开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存放在文件或特定的存储介质中(如数据库),使得业务规则的变更不需要修改项目代码、重启服务器就可以在线上环境立即生效。

drools官网地址:https://drools.org/

drools源码下载地址:https://github.com/kiegroup/drools

2.2构成

drools规则引擎由以下三部分构成:

  • Working Memory(工作内存)
  • Rule Base(规则库)
  • Inference Engine(推理引擎)

其中Inference Engine(推理引擎)又包括:

  • Pattern Matcher(匹配器):把事实对象和规则相匹配
  • Agenda(议程):存放匹配成功将要执行的规则
  • Execution Engine(执行引擎)
    在这里插入图片描述

2.3使用

  1. 单独使用:导入以下maven坐标即可
<dependency>
    <groupId>org.drools</groupId>
    <artifactId>drools-compiler</artifactId>
    <version>7.6.0.Final</version>
</dependency>

如果使用IDEA开发drools应用,IDEA中已经集成了drools插件。如果使用eclipse开发drools应用还需要单独安装drools插件。

  1. 整合spring使用

2.4API开发步骤

获取KieServices–>获取KieContainer–>KieSession–>Insert fact–>触发规则–>关闭KieSession

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值