[rules-dev] Drools Core Error?

nestabur nestabur at gmail.com
Mon Aug 31 06:38:41 EDT 2009


Any suggestions? I have my project in stand-by due to that problem ...

Nestor


nestabur wrote:
> 
> 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/Drools-Core-Error--tp25188219p25221364.html
Sent from the drools - dev mailing list archive at Nabble.com.



More information about the rules-dev mailing list