IIRC, this was a bug one or two minor versions ago. What version are you using? -W
On 18/04/2013, Stefan Schuster <[email protected]> wrote: > For the sake of completeness, here is also the RuleRunner class used in > this example: > > package org.drools.tutorials.banking; > > import java.util.Collection; > > import org.drools.KnowledgeBase; > import org.drools.KnowledgeBaseFactory; > import org.drools.builder.KnowledgeBuilder; > import org.drools.builder.KnowledgeBuilderFactory; > import org.drools.builder.ResourceType; > import org.drools.definition.KnowledgePackage; > import org.drools.io.ResourceFactory; > import org.drools.runtime.StatefulKnowledgeSession; > > public class RuleRunner { > > public RuleRunner() { > } > > public void runRules(String[] rules, > Object[] facts) { > > KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); > KnowledgeBuilder kbuilder = > KnowledgeBuilderFactory.newKnowledgeBuilder(); > > for ( int i = 0; i < rules.length; i++ ) { > String ruleFile = rules[i]; > System.out.println( "Loading file: " + ruleFile ); > kbuilder.add( ResourceFactory.newClassPathResource( ruleFile, > > RuleRunner.class ), > ResourceType.DRL ); > } > > Collection<KnowledgePackage> pkgs = > kbuilder.getKnowledgePackages(); > kbase.addKnowledgePackages( pkgs ); > StatefulKnowledgeSession ksession = > kbase.newStatefulKnowledgeSession(); > > for ( int i = 0; i < facts.length; i++ ) { > Object fact = facts[i]; > System.out.println( "Inserting fact: " + fact ); > ksession.insert( fact ); > } > > ksession.fireAllRules(); > } > } > > > 2013/4/18 Stefan Schuster <[email protected]> > >> Hello, >> >> I have a problem with the banking tutorial number 3, which is part of the >> examples of drools expert. >> It simply adds some Numbers as facts, and retracts them in an increasing >> order. >> >> It is very short, therefore I post the whole Code: >> >> >> BankingExample3.java >> _________________________________________________ >> package org.drools.tutorials.banking; >> >> public class BankingExample3 { >> public static void main(String[] args) { >> Number[] numbers = new Number[] {wrap(3), wrap(1), wrap(4), >> wrap(1), wrap(5)}; >> new RuleRunner().runRules( new String[] { "Example3.drl" }, >> numbers ); >> } >> >> private static Integer wrap(int i) { >> return new Integer(i); >> } >> } >> _________________________________________________ >> >> >> >> Example3.drl: >> _________________________________________________ >> package org.drools.tutorials.banking >> >> rule "Rule 01" >> when >> $number : Number() >> not Number( intValue < $number.intValue ) >> then >> System.out.println("Number found with value: " + >> $number.intValue() ); >> retract( $number ); >> end >> _________________________________________________ >> >> >> Output: >> _________________________________________________ >> Loading file: Example3.drl >> Inserting fact: 3 >> Inserting fact: 1 >> Inserting fact: 4 >> Inserting fact: 1 >> Inserting fact: 5 >> Number found with value: 1 >> Number found with value: 1 >> Number found with value: 3 >> Number found with value: 4 >> Number found with value: 5 >> _________________________________________________ >> >> >> that seams absolute logically to me. >> But now I alter the Numbers in the Java-Part: >> Number[] numbers = new Number[] {wrap(3), wrap(1), wrap(2)}; >> >> and the output destroys everything I thought I understood: >> Loading file: Example3.drl >> Inserting fact: 3 >> Inserting fact: 1 >> Inserting fact: 2 >> Number found with value: 1 >> Number found with value: 3 >> Number found with value: 2 >> >> >> Can someone reproduce this behavior?? It seams absolutely strange to me. >> I would have expected the order 1,2,3. Any explanations? >> >> Thanks in advance for helping me! >> >> >> > _______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
