I use this maven repo:<br><a href="http://snapshots.jboss.org/maven2/org/drools/">http://snapshots.jboss.org/maven2/org/drools/</a><br><br>I use maven to get the latest snapshot by setting the version to 5.0.0.SNAPSHOT<br>
<br><div class="gmail_quote">On Sun, Mar 8, 2009 at 1:27 PM, David Boaz <span dir="ltr">&lt;<a href="mailto:davidb@dbmotion.com">davidb@dbmotion.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Is there a maven repository containing the SNAPSHOT version? Is there a trick<br>
that facilitate the development with that version?<br>
David<br>
<div><div></div><div class="h5"><br>
Mark Proctor wrote:<br>
&gt;<br>
&gt; Mark Proctor wrote:<br>
&gt;&gt; Michal Bali wrote:<br>
&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I guess the issue is that StatelessKnowledgeSession doesn&#39;t extend<br>
&gt;&gt;&gt; the WorkingMemory interface as David pointed out. So if you call<br>
&gt;&gt;&gt; event.getKnowledgeRuntime() you&#39;ll get *null* back.<br>
&gt;&gt; when in an event or in a consequence, whether using a stateless or<br>
&gt;&gt; stateful session it should return a knowledgeruntime instance - if<br>
&gt;&gt; it&#39;s not, it&#39;s a bug. I&#39;ll look into it.<br>
&gt; I&#39;ve looked into this and fixed the bug, you should now be able to<br>
&gt; access the knowledgeruntime from the consequence and the event. Please<br>
&gt; do retest all of this from trunk<br>
&gt; <a href="https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/" target="_blank">https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Similar issue happens when you call drools.getKnowledgeRuntime() from<br>
&gt;&gt;&gt; within rule&#39;s consequence. However in this case it throws the<br>
&gt;&gt;&gt; following exception (running with snapshot from 07. 03. 2009):<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; org.drools.runtime.rule.ConsequenceException:<br>
&gt;&gt;&gt; java.lang.ClassCastException:<br>
&gt;&gt;&gt; *org.drools.reteoo.**ReteooWorkingMemory cannot be cast to<br>
&gt;&gt;&gt; org.drools.reteoo.**ReteooStatefulSession*<br>
&gt;&gt;&gt;     at<br>
&gt;&gt;&gt; org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:23)<br>
&gt;&gt;&gt;     at<br>
&gt;&gt;&gt; org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:943)<br>
&gt;&gt;&gt;     at<br>
&gt;&gt;&gt; org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:885)<br>
&gt;&gt;&gt;     at<br>
&gt;&gt;&gt; org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1082)<br>
&gt;&gt;&gt;     at<br>
&gt;&gt;&gt; org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:682)<br>
&gt;&gt;&gt;     at<br>
&gt;&gt;&gt; org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:659)<br>
&gt;&gt;&gt;     at<br>
&gt;&gt;&gt; org.drools.impl.StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java:213)<br>
&gt;&gt;&gt;     at com.sample.DroolsTest.main(DroolsTest.java:45)<br>
&gt;&gt;&gt; Caused by: java.lang.ClassCastException:<br>
&gt;&gt;&gt; org.drools.reteoo.ReteooWorkingMemory cannot be cast to<br>
&gt;&gt;&gt; org.drools.reteoo.ReteooStatefulSession<br>
&gt;&gt;&gt;     at<br>
&gt;&gt;&gt; org.drools.base.DefaultKnowledgeHelper.getKnowledgeRuntime(DefaultKnowledgeHelper.java:222)<br>
&gt;&gt;&gt;     at<br>
&gt;&gt;&gt; com.sample.Rule_Hello_World_0.consequence(Rule_Hello_World_0.java:7)<br>
&gt;&gt;&gt;     at<br>
&gt;&gt;&gt; com.sample.Rule_Hello_World_0ConsequenceInvoker.evaluate(Rule_Hello_World_0ConsequenceInvoker.java:26)<br>
&gt;&gt;&gt;     at<br>
&gt;&gt;&gt; org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:934)<br>
&gt;&gt;&gt;     ... 6 more<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; for this rule:<br>
&gt;&gt;&gt; rule &quot;Hello World&quot;<br>
&gt;&gt;&gt;     when<br>
&gt;&gt;&gt;         Message( )<br>
&gt;&gt;&gt;     then<br>
&gt;&gt;&gt;         System.out.println( drools.getKnowledgeRuntime() );<br>
&gt;&gt;&gt; end<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Best Regards,<br>
&gt;&gt;&gt; Michal<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Fri, Mar 6, 2009 at 6:45 AM, Mark Proctor &lt;<a href="mailto:mproctor@codehaus.org">mproctor@codehaus.org</a><br>
</div></div><div><div></div><div class="h5">&gt;&gt;&gt; &lt;mailto:<a href="mailto:mproctor@codehaus.org">mproctor@codehaus.org</a>&gt;&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     David Boaz wrote:<br>
&gt;&gt;&gt;&gt;     Your answer refered to Statefull session. My question was regarding<br>
&gt;&gt;&gt;&gt; a<br>
&gt;&gt;&gt;&gt;     stateless session, that do not extend WorkingMemory.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;     you are using an event, that event exposes the knowledgeruntime<br>
&gt;&gt;&gt;     in the event listener - stateless and stateful use the same event<br>
&gt;&gt;&gt;     model and both expose the knowledgeruntime as a parameter. All<br>
&gt;&gt;&gt;     events should extend KnowledgeRuntimeEvent which provides the<br>
&gt;&gt;&gt;     method getKnowledgeRuntime.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     Mark<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;     Currently, I did an ugly work-around. The Activation returns a<br>
&gt;&gt;&gt;&gt;     Collection&lt;FactHandle&gt;, and I noticed that in runtime, the<br>
&gt;&gt;&gt;&gt; FactHandle is<br>
&gt;&gt;&gt;&gt;     instanceof InternalFactHandle, that do have a getObject(). So, My<br>
&gt;&gt;&gt;&gt; code looks<br>
&gt;&gt;&gt;&gt;     like:<br>
&gt;&gt;&gt;&gt;     for(FactHandle handle:activation.getFactHandles()){<br>
&gt;&gt;&gt;&gt;       assert(handle instanceof InternalFactHandle);<br>
&gt;&gt;&gt;&gt;       Object o=((InternalFactHandle)handle).getObject();<br>
&gt;&gt;&gt;&gt;       ...<br>
&gt;&gt;&gt;&gt;     }<br>
&gt;&gt;&gt;&gt;     Im looking for the correct way to implement this functionality.<br>
&gt;&gt;&gt;&gt;     Thanks, David<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;     Mark Proctor wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     David Boaz wrote:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;     Thanks Mark,<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;     The post bellow doesn&#39;t deal with the event listener<br>
&gt;&gt;&gt;&gt;&gt;&gt; registration.<br>
&gt;&gt;&gt;&gt;&gt;&gt;     Assuming<br>
&gt;&gt;&gt;&gt;&gt;&gt;     the registration was solved, now I have another issue. How to<br>
&gt;&gt;&gt;&gt;&gt;&gt; retrieve<br>
&gt;&gt;&gt;&gt;&gt;&gt;     the<br>
&gt;&gt;&gt;&gt;&gt;&gt;     Facts given Fact-handles? In a stateless session, I have no<br>
&gt;&gt;&gt;&gt;&gt;&gt; access to the<br>
&gt;&gt;&gt;&gt;&gt;&gt;     working memory.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     If you are using StatefulKnowledgeSession. Then the Activation has<br>
&gt;&gt;&gt;&gt;&gt;         Collection&lt; ? extends FactHandle&gt; getFactHandles();<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     And the KnowledgeRuntime is always available, which extends the<br>
&gt;&gt;&gt;&gt;&gt;     WorkingMemory.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     Mkar<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;     David<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;     Mark Proctor wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;     David Boaz wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     Hi all,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     Im trying to listen to the events fired during the evaluation<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; of a<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     stateless<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     session. I implemented<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; org.drools.event.rule.AgendaEventListener. The<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     events<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     fire as expected. From the event I can extract the Activation,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the Rule<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     and<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     the list of FactHandles. Now, from each FactHandle I want to<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; retrieve<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     associated fact (Object). For that, I need a WorkingMemory. But<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the WM<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     doesn&#39;t participate in the event signature. In addition, since<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Im using<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     a<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     stateless session, the working memory does not exist until I<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; execute()<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     method.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     Can you please help?<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;     The event listeners don&#39;t work in the last release, this is<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; fixed in<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;     trunk, please give it a try in a snapshot:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/" target="_blank">https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/</a><br>

&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;     Thanks, David<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;     _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;     rules-users mailing list<br>
</div></div>&gt;&gt;&gt;&gt;&gt;&gt;&gt;     <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a> &lt;mailto:<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>&gt;<br>
<div class="im">&gt;&gt;&gt;&gt;&gt;&gt;&gt;     <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;     _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;     rules-users mailing list<br>
</div>&gt;&gt;&gt;&gt;&gt;     <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a> &lt;mailto:<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>&gt;<br>
<div class="im">&gt;&gt;&gt;&gt;&gt;     <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;     _______________________________________________<br>
&gt;&gt;&gt;     rules-users mailing list<br>
</div>&gt;&gt;&gt;     <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a> &lt;mailto:<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>&gt;<br>
<div class="im">&gt;&gt;&gt;     <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; ------------------------------------------------------------------------<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; rules-users mailing list<br>
&gt;&gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ------------------------------------------------------------------------<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; rules-users mailing list<br>
&gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; rules-users mailing list<br>
&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;<br>
&gt;<br>
<br>
</div><font color="#888888">--<br>
View this message in context: <a href="http://www.nabble.com/Agenda-events-in-a-Stateless-session-tp22332020p22397893.html" target="_blank">http://www.nabble.com/Agenda-events-in-a-Stateless-session-tp22332020p22397893.html</a><br>

</font><div class="im">Sent from the drools - user mailing list archive at Nabble.com.<br>
<br>
_______________________________________________<br>
</div><div><div></div><div class="h5">rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</div></div></blockquote></div><br>