(1)新建一个springboot项目,选依赖的时候加上spring web,lombok的依赖
(2)加入drools需要的依赖
<!-- drools -->
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>7.17.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>7.17.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-decisiontables</artifactId>
<version>7.17.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-templates</artifactId>
<version>7.17.0.Final</version>
</dependency>
maven库中的jar包是我手动从官网下下来放到maven库的,下载地址https://download.jboss.org/drools/release/
(3)新建实体类(在包:com.songyan.drools.model)
package com.songyan.drools.model;
import lombok.Data;
/**
* @author songyan
* @date 2021/4/13 10:30
* @desc 学生
**/
@Data
public class Student {
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private int age;
/**
* 班级
*/
private String className;
/**
* 构造函数
* @param name 姓名
* @param age 年龄
*/
public Student(String name, int age) {
this.name = name;
this.age = age;
}
/**
* 方便打印查看属性值
* @return 学生对象序列化
*/
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", className='" + className + '\'' +
'}';
}
}
(4)新建规则(在目录:src/main/resources/rules/rules.drl)
package rules
import com.songyan.drools.model.Student
/**
* 一年级学生规则:年龄为8岁
*/
rule "classForOne"
when
student: Student(age ==8)
then
student.setClassName("一年级");
end
/**
* 二年级学生规则:年龄为九岁
*/
rule "classForTwo"
when
student: Student(age==9)
then
student.setClassName("二年级");
end
/**
* 三年级学生规则:年龄为10岁
*/
rule "classForThree"
when
student: Student(age==10)
then
student.setClassName("三年级");
end
(5)编写配置文件(在目录:src/main/resources/META-INFkmoduel.xml)
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="rules" packages="rules">
<ksession name="rulesSession"/>
</kbase>
</kmodule>
(6)新增测试类
package com.songyan.drools;
import com.songyan.drools.model.Student;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
class DroolsApplicationTests {
public static void main(String[] args) {
KieServices ks = KieServices.Factory.get();
KieContainer kieContainer = ks.getKieClasspathContainer();
Student student = new Student("张三",8);
Student student2 = new Student("李四",9);
Student student3 = new Student("王五",10);
KieSession kieSession = kieContainer.newKieSession("rulesSession");
kieSession.insert(student);
kieSession.insert(student2);
kieSession.insert(student3);
kieSession.fireAllRules();
kieSession.dispose();
System.out.println("******************************");
System.out.println(student);
System.out.println(student2);
System.out.println(student3);
System.out.println("******************************");
}
}
(7)打印结果
(8)目录结构
(9)github地址
https://github.com/VioletSY/drools
感谢大佬:https://www.cnblogs.com/excellencesy/p/14652213.html
gradle 构建 java 工程的方式: https://www.cnblogs.com/joy99/p/10134893.html