我正在举例说明如何在eclipse或其他IDE中安装drools插件。但是如何在不使用像eclipse这样的IDE的情况下配置drools。
答案 0 :(得分:1)
创建Maven项目(使用您喜欢的IDE或命令行)
将Drools编译器依赖项和一些日志记录兼容库添加到您的pom.xml(主Maven项目文件):
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>6.3.0.Final</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.5</version>
</dependency>
</dependencies>
使用以下内容创建src / main / resources / META-INF / kmodule.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule" />
创建您的DRL文件,如src / main / resources / myrules.drl
rule "hello"
when
$name : String()
then
System.out.println("Hello "+$name);
end
创建基于KieService的代码:
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
public class Main {
public static void main(String[] args) {
KieServices ks = KieServices.Factory.get();
KieContainer kcontainer = ks.getKieClasspathContainer();
KieSession ksession = kcontainer.newKieSession();
String name="Xeetu";
ksession.insert(name);
ksession.fireAllRules();
}
}
答案 1 :(得分:0)
您可以使用Drools API编译DRL和其他Drools格式以进行规则创作,您可以使用已编译的KieBase来创建执行规则的会话。下面是一个例子,但你必须出于各种原因进行调整。
KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
FileInputStream fis = new FileInputStream( "simple/simple.drl" );
kfs.write( "src/main/resources/simple.drl",
kieServices.getResources().newInputStreamResource( fis ) );
KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ).buildAll();
Results results = kieBuilder.getResults();
if( results.hasMessages( Message.Level.ERROR ) ){
System.out.println( results.getMessages() );
throw new IllegalStateException( "### errors ###" );
}
KieContainer kieContainer =
kieServices.newKieContainer( kieServices.getRepository().getDefaultReleaseId() );
KieBase kieBase = kieContainer.getKieBase();
kieSession = kieBase.newKieSession();
// ... insert facts ...
kieSession.fireAllRules();
配置KieBase和/或KieSession可能需要额外的调用。有关详细信息,请参阅API和Drools文档。