Is there a maven repository containing the SNAPSHOT version? Is there a trick that facilitate the development with that version? David
Mark Proctor 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] >>> <mailto:[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 list >>>>>>> [email protected] <mailto:[email protected]> >>>>>>> https://lists.jboss.org/mailman/listinfo/rules-users >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> _______________________________________________ >>>>> rules-users mailing list >>>>> [email protected] <mailto:[email protected]> >>>>> https://lists.jboss.org/mailman/listinfo/rules-users >>>>> >>>>> >>>>> >>>> >>> >>> >>> _______________________________________________ >>> rules-users mailing list >>> [email protected] <mailto:[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 >> > > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > > -- View this message in context: http://www.nabble.com/Agenda-events-in-a-Stateless-session-tp22332020p22397893.html Sent from the drools - user mailing list archive at Nabble.com. _______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
