Нулевой указатель в Ksession, когда я добавляю слюни в существующую систему
Я пытаюсь добавить часть drools в существующую систему Java... но, вероятно, я делаю что-то не так (я новичок)... Я добавил файл kmodule.xml в classpath, так сделано
<?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 является нулевым. Кто-нибудь знает, как мне помочь? большое спасибо вам
1 ответ
Декларация пакета в файлах kmodule и drl не соответствует.
Либо изменить в образце дрл
package com.xxx.drools
вpackage rules
или измените в kmodule.xml
<kbase name = "rules" packages = "rules">
в <kbase name = "rules" packages = "com.xxx.drools">