<div dir="ltr">For the sake of  completeness, here is also the RuleRunner class used in this example:<div><br></div><div><div>package org.drools.tutorials.banking;</div><div><br></div><div>import java.util.Collection;</div>
<div><br></div><div>import org.drools.KnowledgeBase;</div><div>import org.drools.KnowledgeBaseFactory;</div><div>import org.drools.builder.KnowledgeBuilder;</div><div>import org.drools.builder.KnowledgeBuilderFactory;</div>
<div>import org.drools.builder.ResourceType;</div><div>import org.drools.definition.KnowledgePackage;</div><div>import org.drools.io.ResourceFactory;</div><div>import org.drools.runtime.StatefulKnowledgeSession;</div><div>
<br></div><div>public class RuleRunner {</div><div><br></div><div>    public RuleRunner() {</div><div>    }</div><div><br></div><div>    public void runRules(String[] rules,</div><div>                         Object[] facts) {</div>
<div><br></div><div>        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();</div><div>        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();</div><div><br></div><div>        for ( int i = 0; i &lt; rules.length; i++ ) {</div>
<div>            String ruleFile = rules[i];</div><div>            System.out.println( &quot;Loading file: &quot; + ruleFile );</div><div>            kbuilder.add( ResourceFactory.newClassPathResource( ruleFile,</div><div>
                                                                        RuleRunner.class ),</div><div>                                  ResourceType.DRL );</div><div>        }</div><div><br></div><div>        Collection&lt;KnowledgePackage&gt; pkgs = kbuilder.getKnowledgePackages();</div>
<div>        kbase.addKnowledgePackages( pkgs );</div><div>        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();</div><div><br></div><div>        for ( int i = 0; i &lt; facts.length; i++ ) {</div>
<div>            Object fact = facts[i];</div><div>            System.out.println( &quot;Inserting fact: &quot; + fact );</div><div>            ksession.insert( fact );</div><div>        }</div><div><br></div><div>        ksession.fireAllRules();</div>
<div>    }</div><div>}</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/4/18 Stefan Schuster <span dir="ltr">&lt;<a href="mailto:stefan.m.schuster@gmail.com" target="_blank">stefan.m.schuster@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>I have a problem with the banking tutorial number 3, which is part of the examples of drools expert.</div>
<div>It simply adds some Numbers as facts, and retracts them in an increasing order.</div>
<div><br></div><div>It is very short, therefore I post the whole Code:</div><div><br></div><div><br></div><div>BankingExample3.java</div><div>_________________________________________________<br>
</div><div><div>package org.drools.tutorials.banking;</div><div><br></div><div>public class BankingExample3 {</div><div>    public static void main(String[] args) {</div><div>        Number[] numbers = new Number[] {wrap(3), wrap(1), wrap(4), wrap(1), wrap(5)};</div>

<div>        new RuleRunner().runRules( new String[] { &quot;Example3.drl&quot; },</div><div>                                   numbers );</div><div>    }</div><div>    </div><div>    private static Integer wrap(int i) {</div>

<div>        return new Integer(i);</div><div>    }</div><div>}</div><div>_________________________________________________<br></div><div><br></div><div><br></div><div><br></div><div>Example3.drl:</div><div>_________________________________________________<br>

</div><div><div>package org.drools.tutorials.banking</div><div>  </div><div>rule &quot;Rule 01&quot;   </div><div>    when</div><div>        $number : Number()</div><div>        not Number( intValue &lt; $number.intValue )</div>

<div>    then</div><div>        System.out.println(&quot;Number found with value: &quot; + $number.intValue() ); </div><div>        retract( $number );</div><div>end </div><div>_________________________________________________<br>

</div><div><br></div><div><br></div><div>Output:</div><div>_________________________________________________<br></div><div><div>Loading file: Example3.drl</div><div>Inserting fact: 3</div><div>Inserting fact: 1</div>
<div>Inserting fact: 4</div><div>Inserting fact: 1</div><div>Inserting fact: 5</div><div>Number found with value: 1</div><div>Number found with value: 1</div><div>Number found with value: 3</div><div>Number found with value: 4</div>

<div>Number found with value: 5</div><div>_________________________________________________</div><div><br></div><div><br></div></div><div>that seams absolute logically to me.</div><div>But now I alter the Numbers in the Java-Part:</div>

<div> Number[] numbers = new Number[] {wrap(3), wrap(1), wrap(2)};<br></div><div><br></div><div>and the output destroys everything I thought I understood:</div><div><div>Loading file: Example3.drl</div>
<div>Inserting fact: 3</div><div>Inserting fact: 1</div><div>Inserting fact: 2</div><div>Number found with value: 1</div><div>Number found with value: 3</div><div>Number found with value: 2</div></div></div><div><br>
</div><div><br></div></div><div>Can someone  reproduce this behavior?? It seams absolutely strange to me. I would have expected the order 1,2,3. Any explanations?</div><div><br></div><div>Thanks in advance for helping me!</div>

<div><br></div><div><br></div></div>
</blockquote></div><br></div>