当我向现有系统添加drools时,在Ksession中的nullpointer

时间:2017-11-21 13:28:43

标签: java drools kie

我试图将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。 有谁知道如何帮助我?非常感谢你

1 个答案:

答案 0 :(得分:0)

kmodule和drl文件中的包声明不对应。

更改样本drl

divpackage com.xxx.drools

或更改kmodule.xml

package rules<kbase name = "rules" packages = "rules">