一.drools规则依赖
在maven的pom.xml文件,引入下面依赖:
<properties> <drools.version>7.6.0.Final</drools.version> </properties>
<!--drools-->
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
<version>${drools.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>${drools.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>${drools.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-decisiontables</artifactId>
<version>${drools.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-templates</artifactId>
<version>${drools.version}</version>
</dependency>
二.drools规则编译配置
在工程src/main/resources/META-INF/kmodule.xml 文件中配置规则信息;
若kmodule.xml不存在新建,编译器会根据此文件进行规则编译。
配置内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="rules_audit" packages="rules.audit">
<ksession name="ksession-audit" type="stateless"/>
</kbase>
<kbase name="rules-sms" packages="rules.sms">
<ksession name="ksession-sms"/>
</kbase>
</kmodule>
说明:
kmodule: 可包含多个kbase子节点。
kbase.name: 配置kbase节点name是唯一的既不能重名
kbase.packages: 配置drools规则包(*.drl)文件,可定义多个包,用逗号隔开;在src/main/resources下面的文件夹(如:rules.audit表示src/main/resources/rules/audit目录)名称。
ksession.name:配置ksession名称,任意字符串但不能重名,可以有多个。
ksession.type:配置ksession类型,默认为有状态,stateless表示无状态。
注意:
在运行时、KieContainer会根据*Model对象来创建KieModule,KieBase,KieSession对象,其中KieModule和KieBase只会创建一次,而KieSession则可能创建多次
三.drools规则配置
1) OrderAudit-1.0.0.1.drl规则文件配置:
在src/main/resources/rules/audit目录下创建OrderAudit-1.0.0.1.drl规则文件,内容如下:
package order_audit_setting_rules;
import com.eron.order.OrderAudit
// 订单不审核
rule "do not audit"
salience 1200
when
$a:OrderAudit(logisticsStatus not in (0,1))
then
modify($a){
se