[rules-users] Agenda events in a Stateless session
Michal Bali
michalbali at gmail.com
Sun Mar 8 10:01:47 EDT 2009
I use this maven repo:
http://snapshots.jboss.org/maven2/org/drools/
I use maven to get the latest snapshot by setting the version to
5.0.0.SNAPSHOT
On Sun, Mar 8, 2009 at 1:27 PM, David Boaz <davidb at dbmotion.com> wrote:
>
> 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 <mproctor at codehaus.org
> >>> <mailto:mproctor at codehaus.org>> 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
> >>>>>>> rules-users at lists.jboss.org <mailto:
> rules-users at lists.jboss.org>
> >>>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>> _______________________________________________
> >>>>> rules-users mailing list
> >>>>> rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
> >>>>> https://lists.jboss.org/mailman/listinfo/rules-users
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>
> >>>
> >>> _______________________________________________
> >>> rules-users mailing list
> >>> rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
> >>> https://lists.jboss.org/mailman/listinfo/rules-users
> >>>
> >>>
> >>>
> ------------------------------------------------------------------------
> >>>
> >>> _______________________________________________
> >>> rules-users mailing list
> >>> rules-users at lists.jboss.org
> >>> https://lists.jboss.org/mailman/listinfo/rules-users
> >>>
> >>
> >> ------------------------------------------------------------------------
> >>
> >> _______________________________________________
> >> rules-users mailing list
> >> rules-users at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/rules-users
> >>
> >
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > 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
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090308/fba395c9/attachment.html
More information about the rules-users
mailing list