我试图将drools部分添加到现有的java系统中..但可能我做错了什么(我非常新手)... 我将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>
</kmodule>
如此完成的sample.drl文件
package com.xxx.drools
declare Record
field1: String @key
field2: String @key
field3: String @key
end
rule "CHECK_EVENT"
When
record: Record (field1 not in (1,46,25,26,264,6,9,13,44,73,125,130))
then
System.out.println ("blah blah blah");
end
并在java代码中
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
FactType amarecord = kSession.getKieBase().getFactType( "com.xxx.drools",
"Record" );
问题是最后一行中的空指针,因为kSession为null。 有谁知道如何帮助我?非常感谢你
答案 0 :(得分:0)
kmodule和drl文件中的包声明不对应。
更改样本drl
div
至
package com.xxx.drools
或更改kmodule.xml
package rules
至<kbase name = "rules" packages = "rules">