Drools 无法生成kmodule.xml的索引
我正在尝试为SOA环境设置Drools规则。因此,我需要使用xmlparser-2.0。我使用解析器将XMLDocument类型输入转换为自定义模型,这些模型用作规则引擎的事实 我的问题是,当xmlparser作为库添加时,KieContainer无法实例化KieSession。 此时出现无法构建kmodule.xml索引的错误 我查了两个班,这不是问题 我正在运行这个示例代码Drools 无法生成kmodule.xml的索引,drools,Drools,我正在尝试为SOA环境设置Drools规则。因此,我需要使用xmlparser-2.0。我使用解析器将XMLDocument类型输入转换为自定义模型,这些模型用作规则引擎的事实 我的问题是,当xmlparser作为库添加时,KieContainer无法实例化KieSession。 此时出现无法构建kmodule.xml索引的错误 我查了两个班,这不是问题 我正在运行这个示例代码 import org.kie.api.KieServices; import org.kie.api.runtime.
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
public class DroolsTest {
public static final void main(String[] args) {
try {
// load up the knowledge base
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
// go !
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO);
kSession.insert(message);
kSession.fireAllRules();
} catch(Throwable t) {
t.printStackTrace();
}
}
public static class Message {
public static final int HELLO = 0;
public static final int GOODBYE = 1;
private String message;
private int status;
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public int getStatus() {
return this.status;
}
public void setStatus(int status) {
this.status = status;
}
}
}
这是在导入xmlparser-2.0时运行DroolsTest的日志
2017-06-29 12:53:13 INFO ClasspathKieProject:131 - Found kmodule: file:/C:/Users/A653219/workspace/rules-engine/target/classes/META-INF/kmodule.xml
2017-06-29 12:53:13 DEBUG ClasspathKieProject:400 - KieModule URL type=file url=/C:/Users/A653219/workspace/rules-engine/target/classes
2017-06-29 12:53:14 ERROR ClasspathKieProject:124 - Unable to build index of kmodule.xml url=file:/C:/Users/A653219/workspace/rules-engine/target/classes/META-INF/kmodule.xml
2017-06-29 12:53:14 ERROR KieContainerImpl:681 - Unknown KieSession name: ksession-rules
java.lang.NullPointerException
at com.sample.DroolsTest.main(DroolsTest.java:24)
这是kmodule.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="ksession-rules"/>
</kbase>
<kbase name="dtables" packages="dtables">
<ksession name="ksession-dtables"/>
</kbase>
<kbase name="process" packages="process">
<ksession name="ksession-process"/>
</kbase>
</kmodule>
依赖
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
<version>6.5.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>6.5.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-decisiontables</artifactId>
<version>6.5.0.Final</version>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-test</artifactId>
<version>6.5.0.Final</version>
</dependency>
org.kie
基亚皮
6.5.0.1最终版本
org.drools
流涎核
6.5.0.1最终版本
org.drools
drools决策表
6.5.0.1最终版本
org.jbpm
jbpm测试
6.5.0.1最终版本
我也遇到了同样的问题,我做了一个mvn dependency:tree
,发现我的一个JAR导致了以下问题:
[INFO]+-xerces:xercesImpl:jar:2.4.0:compile
我将此添加为该依赖项的一个排除项,它起了作用
<dependency>
<groupId>mygroup</groupId>
<artifactId>somejar</artifactId>
<version>2.4</version>
<exclusions>
<exclusion>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
</exclusion>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</exclusion>
</exclusions>
mygroup
萨默贾尔
2.4
com.thoughtworks.xstream
xstream
薛西斯
干细胞移植
<dependency>
<groupId>mygroup</groupId>
<artifactId>somejar</artifactId>
<version>2.4</version>
<exclusions>
<exclusion>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
</exclusion>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</exclusion>
</exclusions>