pom
依赖<!-- Drools规则引擎 --> <dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> <version>7.68.0.Final</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-mvel</artifactId> <version>7.68.0.Final</version> </dependency>
kmodule.xml
文件配置
kmodule.xml
文件必须在resource/META-INF
目录下创建,配置模板固定,内容如下:<?xml version="1.0" encoding="UTF-8"?> <kmodule xmlns="http://www.drools.org/xsd/kmodule"> <!-- name:配置kbase名称(保证唯一性),在getKieClasspathContainer("kbaseName");中进行指定 packages:配置规则文件路径(路径必须配置正确否则找不到drl文件) default:配置当前kbase是否为默认(true || fasle) --> <kbase name="userBase" packages="rules" default="true"> <!-- name:配置ksession(保证唯一性),在newKieSession("ksessionName");中进行指定 default:配置当前ksession是否为默认(true || fasle) --> <ksession name="userSession"/> </kbase> </kmodule>
drl
规则文件配置
在kmodule.xml
文件中指定的目录下创建drl
文件,在IDEA
中最好先安装好Drools
插件,文件内容如下:
关于文件中的语法就不细说了,有点基础就应该能看懂package rules; import com.jin.bean.User rule "r1" // rule的名称必须保证唯一性 when $user:User(age == 20) then System.out.println("用户信息: " + $user.toString()); end
- 代码
import com.jin.bean.User; import org.kie.api.KieServices; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; public class DroolsDemo { public static void main(String[] args) { // 获取service KieServices ks = KieServices.Factory.get(); // 获取container,如果kmodule.xml文件中没有指定默认kbase需要在getKieClasspathContainer("kBaseName")指定使用哪个kBase,如果配置了默认kBase则可以不用配置 KieContainer container = ks.getKieClasspathContainer(); // 获取session, session同样,配置文件中配置了默认session可以不进行指定,如果没有配置需要在newKieSession("kSessionName")进行指定 KieSession session = container.newKieSession("session"); User build = User.builder().age(20).build(); // 插入实体对象 session.insert(build); // 获取执行规则的数量 int i = session.fireAllRules(); // 获取执行结果 session.getIdentifier(); // 打印规则条数 System.out.println("规则条数: " + i); // 关闭 session.dispose(); } }
- 控制台结果
[INFO] -org.drools.compiler.kie.builder.impl.KieContainerImpl -919 -org.drools.compiler.kie.builder.impl.KieContainerImpl.createKieBase(KieContainerImpl.java:487).createKieBase(487) | End creation of KieBase: HelloBase 用户信息: User(name=null, age=20, gender=null, hobbit=null) 规则条数: 1
规则引擎Drools的入门使用
于 2024-01-17 11:48:18 首次发布