学习一样新东西的最好的方法就是尝试使用它,下面编写一个简单的 Drools 应用程序。首先,我们需要创建一个 Maven 工程,然后在其 pom.xml 文件添加如下包依赖:
junit junit 4.11 test org.kie kie-api 7.23.0.Final org.drools drools-compiler 7.23.0.Final org.drools drools-decisiontables 7.23.0.Final org.drools drools-templates 7.23.0.Final org.slf4j slf4j-log4j12 1.7.26 compile org.junit.jupiter junit-jupiter RELEASE compile
在 resources 目录下创建文件 helloworld.drl 文件,内容如下:
package helloworld;
rule "HelloWorld"
when
eval(true)
then
System.out.println();
System.out.println("=========进入了规则匹配约束程序==========");
System.out.println("HelloWorld");
end
在 resources/META-INF 目录下创建 kmodule.xml 文件,kmodule.xml 用来描述知识库资源的选择及知识库与会话的配置,内容如下:
创建单元测试类 HelloWorldTest,内容如下:
import org.junit.jupiter.api.Test;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
public class HelloWorldTest {
@Test
public void testHelloWorld() {
System.out.println("------------进入了测试程序--------------");
KieServices kieServices = KieServices.Factory.get();
KieContainer kieContainer = kieServices.newKieClasspathContainer();
KieSession kieSession = kieContainer.newKieSession("helloWorldSession");
// KieSession kieSession = kieContainer.newKieSession();
kieSession.fireAllRules();
kieSession.dispose();
System.out.println("");
System.out.println("=============程序结束==============");
}
}
注意:
1、 KieSession kieSession = kieContainer.newKieSession();
这个代码是kmodule.xml中
默认default="true"时才省略kieContainer.newKieSession()中的参数。
2、有时会报log4j错误,需要在target目录的classes文件夹下建立 log4j.properties 文件
hadoop.root.logger=DEBUG, console
log4j.rootLogger = DEBUG, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n



