Does anyone tried to use the knowledgeAgent with statefulSessions?

I've tried to configure my rule engine obtaining unexpected behaviour.

I configure my statefulSession as follows:

wm = (ReteooStatefulSession) ((KnowledgeBaseImpl) kagent
                                
.getKnowledgeBase()).ruleBase.newStatefulSession(
                                (SessionConfiguration) sessionConf, env);
ksession = new StatefulKnowledgeSessionImpl(wm, kagent.getKnowledgeBase());

And after updating the KnowledgeBase in the agent I update my ksession:

wm.setRuleBase((InternalRuleBase) ((KnowledgeBaseImpl) kagent
                                                .getKnowledgeBase()).ruleBase); 
        
ksession = new StatefulKnowledgeSessionImpl(wm, kagent.getKnowledgeBase());

Without using entry-points this approach works as expected, but using them
it fails after the first update throwing the error:

Exception while processing message: java.lang.NullPointerException
java.lang.NullPointerException
        at
org.drools.reteoo.ReteooFactHandleFactory.newFactHandle(ReteooFactHandleFactory.java:54)
        at
org.drools.common.AbstractFactHandleFactory.newFactHandle(AbstractFactHandleFactory.java:79)
        at
org.drools.common.AbstractFactHandleFactory.newFactHandle(AbstractFactHandleFactory.java:66)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:109)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:80)
        at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:28)

Browsing the drools core code I found the line that was throwing the
exception and tried to get the same result by implementing:

if (!((InternalRuleBase) ((KnowledgeBaseImpl)
ksession.getKnowledgeBase()).ruleBase)
                                .getTypeDeclaration(fact.getClass()) == null)
        log.info (((InternalRuleBase) ((KnowledgeBaseImpl)
ksession.getKnowledgeBase()).ruleBase)
                                
.getTypeDeclaration(fact.getClass()).getTimestampExtractor().toString());

after updating my ksession. The result was the same, again the same
exception thrown but my logger wrote:
18:01:50,232 INFO [ClassFieldExtractor class=MyPackage.MyFact
field=myTimestampField]

So I dont know why the core is throwing that exception, is that
implementation correct?, any ideas?


Thanks,

Nestor

-- 
View this message in context: 
http://www.nabble.com/Using-KnowledgeAgent-with-Stateful-session-tp25151447p25151447.html
Sent from the drools - user mailing list archive at Nabble.com.

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to