Нулевой указатель в 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">

Другие вопросы по тегам