<html><head></head><body bgcolor="#FFFFFF"><div>Aha! I missed the line about the dispose. That makes a lot of sense. What I don't understand is why the example 3.37 in the docs would work. If I understand what you're saying, it shouldn't.&nbsp;</div><div><br></div><div>Thanks!</div><div>Hank<br><br>Sent from my iPhone</div><div><br>On Jul 30, 2011, at 8:27 AM, "Wolfgang Laun" &lt;<a href="mailto:wolfgang.laun@gmail.com">wolfgang.laun@gmail.com</a>&gt; wrote:<br><br></div><div></div><blockquote type="cite"><div>StatelessKnowledgeSession.execute(...) executes the command(s) and <i>finally calls dispose()</i> on the session. Use a stateful session or a global (filled with a low-salience rule) or&nbsp; -&nbsp; simply use the getObjects command.<br>
-W<br><br><div class="gmail_quote">On 29 July 2011 22:47, Heijink, Hank <span dir="ltr">&lt;<a href="mailto:heijink@audible.com"><a href="mailto:heijink@audible.com">heijink@audible.com</a></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;">
Hi all,<br>
<br>
I'm new to Drools, so please excuse me if I'm asking about the obvious--it's certainly not obvious to me. The problem is this: I use a stateless knowledge session where a list of facts is inserted. The rules that fire create new facts, and after all the rules have fired, I'd like to obtain a list of all the facts (the old and the new). The best way seemed to use a query. I'm using Drools 5.1 on Linux.<br>

This is part of my .drl file (without the imports):<br>
<br>
rule "create badge"<br>
when<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Event ( eventType == EventType.SOME_EVENT_TYPE )<br>
 &nbsp; &nbsp; &nbsp; &nbsp;not BadgeState ( identifier == "badge" )<br>
then<br>
 &nbsp; &nbsp; &nbsp; &nbsp;insert( new BadgeState("badge") );<br>
end<br>
<br>
query "all badges"<br>
 &nbsp; &nbsp; &nbsp; &nbsp;aBadge : BadgeState()<br>
end<br>
<br>
This is the Java code:<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StatelessKnowledgeSession ksession = StatsKnowledgeBase.getKnowledgeBase().newStatelessKnowledgeSession();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Create a list of share events<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ArrayList&lt;Event&gt; events = new ArrayList&lt;Event&gt;();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Date now = new Date();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MobileDevice aDevice = new MobileDevice("uniqueId", "deviceType");<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (int i = 0; i &lt; 5; i++) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Event anEvent = new Event.Builder(now, aDevice, "aCustomer", EventType.SOME_EVENT_TYPE).build();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;events.add(anEvent);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Create the query for the badges<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;List&lt;Command&gt; commands = new ArrayList&lt;Command&gt;();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;commands.add(CommandFactory.newInsertElements(events));<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;commands.add(CommandFactory.newQuery("all badges", "all badges"));<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Feed the events into Drools<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ExecutionResults results = ksession.execute( CommandFactory.newBatchExecution(commands) );<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NativeQueryResults queryResults = (NativeQueryResults)results.getValue("all badges");<br>
<br>
// At this point, queryResults is empty.<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;logger.close();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get a list of badges<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;List&lt;BadgeState&gt; badges = new ArrayList&lt;BadgeState&gt;();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (Iterator&lt;QueryResultsRow&gt; i = queryResults.iterator(); i.hasNext(); ) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;QueryResultsRow result = i.next();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BadgeState obj = (BadgeState)result.get("aBadge");<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;badges.add(obj);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
The logger shows me that the BadgeState object is created, but the query returns an empty list. I've searched the documentation, which suggests that I'm doing it right (<a href="http://drools.herod.net/drools-expert/html/ch03.html#d0e1956" target="_blank"><a href="http://drools.herod.net/drools-expert/html/ch03.html#d0e1956">http://drools.herod.net/drools-expert/html/ch03.html#d0e1956</a></a>, example 3.37), the archives of this mailinglist, and the web, so far without success.<br>

<br>
Clearly, I'm missing something, and I have the nagging feeling that it's something simple...<br>
<br>
Any help is much appreciated!<br>
<br>
Best,<br>
Hank<br>
<br>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org"><a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a></a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank"><a href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a></a><br>
</blockquote></div><br>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>rules-users mailing list</span><br><span><a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a></span><br><span><a href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a></span><br></div></blockquote></body></html>