第一步:在IDEA创建一个maven项目,并且在pom.xml文件中导入相关依赖
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>7.10.0.Final</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
第二步:在项目中创建数据对象Student,需要和workbench中的数据对象的包名类名完全一致 属性也要一致。
package com.simia.project_1;
/**
* This class was automatically generated by the data modeler tool.
*/
public class Student implements java.io.Serializable {
static final long serialVersionUID = 1L;
private java.lang.Integer id;
private java.lang.String name;
private java.lang.Integer age;
public Student() {
}
public java.lang.Integer getId() {
return this.id;
}
public void setId(java.lang.Integer id) {
this.id = id;
}
public java.lang.String getName() {
return this.name;
}
public void setName(java.lang.String name) {
this.name = name;
}
public java.lang.Integer getAge() {
return this.age;
}
public void setAge(java.lang.Integer age) {
this.age = age;
}
public Student(java.lang.Integer id, java.lang.String name,
java.lang.Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
}
第三步:编写测试单元,远程加载maven仓库中的jar包(上文的maven仓库中部署的规则文件)
如下代码
@Test
public void test1() throws Exception{
//通过此URL可以访问到maven仓库中的jar包
//URL地址构成:http://ip地址:Tomcat端口号/WorkBench工程名/maven2/坐标/版本号/xxx.jar
String url =
"http://localhost:8080/kie-drools-wb/maven2/com/simia/project_1/1.0.0/project_1-1.0.0.jar";
KieServices kieServices = KieServices.Factory.get();
//通过Resource资源对象加载jar包
UrlResource resource = (UrlResource) kieServices.getResources().newUrlResource(url);
//通过Workbench提供的服务来访问maven仓库中的jar包资源,需要先进行Workbench的认证
resource.setUsername("kie");
resource.setPassword("kie");
resource.setBasicAuthentication("enabled");
//将资源转换为输入流,通过此输入流可以读取jar包数据
InputStream inputStream = resource.getInputStream();
//创建仓库对象,仓库对象中保存Drools的规则信息
KieRepository repository = kieServices.getRepository();
//通过输入流读取maven仓库中的jar包数据,包装成KieModule模块添加到仓库中
KieModule kieModule =
repository.
addKieModule(kieServices.getResources().newInputStreamResource(inputStream));
//基于KieModule模块创建容器对象,从容器中可以获取session会话
KieContainer kieContainer = kieServices.newKieContainer(kieModule.getReleaseId());
KieSession session = kieContainer.newKieSession();
Person person = new Person();
person.setAge(10);
session.insert(person);
session.fireAllRules();
session.dispose();
}
执行单元测试可以发现控制台已经输出了相关内容。通过WorkBench修改规则输出内容并发布,再次执行单元测试可以发现控制台输出的内容也发生了变化。