It works now (I get a StatefulKnowledgeSessionImpl back which is fine). Thanks for fixing this.
On Sun, Mar 8, 2009 at 4:43 AM, Mark Proctor <[email protected]> wrote: > Mark Proctor wrote: > > Michal Bali wrote: > > Hi, > > I guess the issue is that StatelessKnowledgeSession doesn't extend the > WorkingMemory interface as David pointed out. So if you call > event.getKnowledgeRuntime() you'll get *null* back. > > when in an event or in a consequence, whether using a stateless or stateful > session it should return a knowledgeruntime instance - if it's not, it's a > bug. I'll look into it. > > I've looked into this and fixed the bug, you should now be able to access > the knowledgeruntime from the consequence and the event. Please do retest > all of this from trunk > > > https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/ > > > Similar issue happens when you call drools.getKnowledgeRuntime() from > within rule's consequence. However in this case it throws the following > exception (running with snapshot from 07. 03. 2009): > > org.drools.runtime.rule.ConsequenceException: java.lang.ClassCastException: > *org.drools.reteoo.**ReteooWorkingMemory cannot be cast to > org.drools.reteoo.**ReteooStatefulSession* > at > org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:23) > at > org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:943) > at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:885) > at > org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1082) > at > org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:682) > at > org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:659) > at > org.drools.impl.StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java:213) > at com.sample.DroolsTest.main(DroolsTest.java:45) > Caused by: java.lang.ClassCastException: > org.drools.reteoo.ReteooWorkingMemory cannot be cast to > org.drools.reteoo.ReteooStatefulSession > at > org.drools.base.DefaultKnowledgeHelper.getKnowledgeRuntime(DefaultKnowledgeHelper.java:222) > at com.sample.Rule_Hello_World_0.consequence(Rule_Hello_World_0.java:7) > at > com.sample.Rule_Hello_World_0ConsequenceInvoker.evaluate(Rule_Hello_World_0ConsequenceInvoker.java:26) > at > org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:934) > ... 6 more > > for this rule: > rule "Hello World" > when > Message( ) > then > System.out.println( drools.getKnowledgeRuntime() ); > end > > Best Regards, > Michal > > > On Fri, Mar 6, 2009 at 6:45 AM, Mark Proctor <[email protected]>wrote: > >> David Boaz wrote: >> >> Your answer refered to Statefull session. My question was regarding a >> stateless session, that do not extend WorkingMemory. >> >> >> you are using an event, that event exposes the knowledgeruntime in the >> event listener - stateless and stateful use the same event model and both >> expose the knowledgeruntime as a parameter. All events should extend >> KnowledgeRuntimeEvent which provides the method getKnowledgeRuntime. >> >> Mark >> >> Currently, I did an ugly work-around. The Activation returns a >> Collection<FactHandle>, and I noticed that in runtime, the FactHandle is >> instanceof InternalFactHandle, that do have a getObject(). So, My code looks >> like: >> for(FactHandle handle:activation.getFactHandles()){ >> assert(handle instanceof InternalFactHandle); >> Object o=((InternalFactHandle)handle).getObject(); >> ... >> } >> Im looking for the correct way to implement this functionality. >> Thanks, David >> >> >> Mark Proctor wrote: >> >> >> David Boaz wrote: >> >> >> Thanks Mark, >> >> The post bellow doesn't deal with the event listener registration. >> Assuming >> the registration was solved, now I have another issue. How to retrieve >> the >> Facts given Fact-handles? In a stateless session, I have no access to the >> working memory. >> >> >> >> If you are using StatefulKnowledgeSession. Then the Activation has >> Collection< ? extends FactHandle> getFactHandles(); >> >> And the KnowledgeRuntime is always available, which extends the >> WorkingMemory. >> >> Mkar >> >> >> David >> >> >> Mark Proctor wrote: >> >> >> >> David Boaz wrote: >> >> >> >> Hi all, >> >> Im trying to listen to the events fired during the evaluation of a >> stateless >> session. I implemented org.drools.event.rule.AgendaEventListener. The >> events >> fire as expected. From the event I can extract the Activation, the Rule >> and >> the list of FactHandles. Now, from each FactHandle I want to retrieve >> the >> associated fact (Object). For that, I need a WorkingMemory. But the WM >> doesn't participate in the event signature. In addition, since Im using >> a >> stateless session, the working memory does not exist until I execute() >> method. >> >> Can you please help? >> >> >> >> >> The event listeners don't work in the last release, this is fixed in >> trunk, please give it a try in a >> snapshot:https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/ >> >> Thanks, David >> >> >> >> >> _______________________________________________ >> rules-users mailing >> [email protected]https://lists.jboss.org/mailman/listinfo/rules-users >> >> >> >> >> _______________________________________________ >> rules-users mailing >> [email protected]https://lists.jboss.org/mailman/listinfo/rules-users >> >> >> >> >> _______________________________________________ >> rules-users mailing list >> [email protected] >> https://lists.jboss.org/mailman/listinfo/rules-users >> >> > ------------------------------ > > _______________________________________________ > rules-users mailing > [email protected]https://lists.jboss.org/mailman/listinfo/rules-users > > > ------------------------------ > > _______________________________________________ > rules-users mailing > [email protected]https://lists.jboss.org/mailman/listinfo/rules-users > > > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > >
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
