Hi Nestor - that is a tough one.
I have a suspicion this is related to another issue I have seen with
deserliasation of rulebases when the MVEL JIT kicks in... (from that
strack trace it isn't getting the TypeDeclaration back...) - its a
stretch, but might be related to:
https://jira.jboss.org/jira/browse/JBRULES-2253
As there are a few moving parts, if you could create a unit test that
starts up a agent and shows this behaviour, that would be appreciated
(confused about the interaction with entry points).
Thanks,
Michael.
On Mon, Aug 31, 2009 at 8:38 PM, nestabur<nestabur(a)gmail.com> wrote:
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.
_______________________________________________
rules-dev mailing list
rules-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
--
Michael D Neale
home:
www.michaelneale.net
blog:
michaelneale.blogspot.com