I got the following error while running a simple helloworld sample drools project.
199 [main] ERROR org.drools.compiler.kie.builder.impl.KieContainerImpl - Unknown KieSession name: ksession-rules
java.lang.NullPointerException
at com.sample.DroolsTest.main(DroolsTest.java:24)
Code:
package com.sample;
import org.kie.api.KieServices; import
org.kie.api.runtime.KieContainer; import
org.kie.api.runtime.KieSession;
/** * This is a sample class to launch a rule. */ 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;
}
}
}
drools code:
package com.sample
import com.sample.DroolsTest.Message;
rule "Hello World"
when
m : Message( status == Message.HELLO, myMessage : message )
then
System.out.println( myMessage );
m.setMessage( "Goodbye cruel world" );
m.setStatus( Message.GOODBYE );
update( m );
end
rule "GoodBye"
when
Message( status == Message.GOODBYE, myMessage : message )
then
System.out.println( myMessage );
end
It looks drools kie-api/internal library execution looks for mandatory values under src\main\resources\META-INF\maven\pom.properties file for the drools eclipse project.
Updating my pom.xml or pom.properties into below content worked fine on 6.0.0 drools distribution.
groupId=com.test.sample.drools
artifactId=DroolsTestProject
version=1
I recently started with JBPM and ran into a similar problem. I had two issues that needed to be sorted out.
First I need to create the pom.properties file that was listed in Another answer in this thread. I had to create the src/main/resources/META-INF/maven/pom.properties file since it was not automatically generated when I created a new JBPM Maven project through eclipse. The file should have the following information, which should match your project's pom file:
groupId=com.sample
artifactId=jbpm-example
version=1.0.0-SNAPSHOT
The other issue I ran into was having a blank kmodule.xml. This should be in src/main/resources/META-INF/kmodule.xml. You will need the following in the file:
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="process" packages="process">
<ksession name="ksession-process"/>
</kbase>
</kmodule>
If you look at the newKieSession method parameter, it need to match the "name" attribute of the ksession element. The "packages" attribute of the kbase element needs to match the package name where you DRL files are located.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With