Drools介绍
drools是由JBoss组织提供的基于Java语言开发的开源规则引擎,可以把业务规则从硬编码中解耦出来,以规则脚本的形式存放在文件或存储介质中(例如存放在数据库中),使得业务规则变动在不改动代码且不需要部署就可以在线上环境立即生效,做到业务和规则的分离。
drools官网地址
:
Drools - Drools - Business Rules Management System (Java™, Open Source)d
Drools使用
maven坐标
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>7.10.0.Final</version>
</dependency>
创建resources/META-INF/kmodule.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
<!--
name:指定kbase的名称,可以任意,但是需要唯一
packages:指定规则文件的目录,需要根据实际情况填写,否则无法加载到规则文件
default:指定当前kbase是否为默认
-->
<kbase name="myKbase" packages="rules" default="true">
<!--
name:指定ksession名称,可以任意,但是需要唯一
default:指定当前session是否为默认
-->
<ksession name="ksession-rule" default="true"/>
</kbase>
</kmodule>
no-loop和lock-on-active区别
no-loop true // 定义当前的规则是否允许多次循环执行,默认是 false,也就是当前的规则只要满足条件,可以无限次执行,自行触发如规则体内的insert、update、retract
lock-on-active true //将lock-on-active属性的值设置为true,可避免因某些Fact对象被修改而使已经执行过的规则再次被激活执行,其他规则调用