[rules-users] Problem with Banking Tutorial

Stefan Schuster stefan.m.schuster at gmail.com
Thu Apr 18 09:59:56 EDT 2013


Hi, thank you for your response.
I'm using the latest stable release of Drools 5.5.0 final.
Eclipse is Juno Service Release 2.

Can you confirm, that the order 1,2,3 is the expected result?

If this is a known bug, is there some kind of jira or bugzilla numer
assigned to it?



2013/4/18 Wolfgang Laun <wolfgang.laun at gmail.com>

> IIRC, this was a bug one or two minor versions ago. What version are you
> using?
> -W
>
> On 18/04/2013, Stefan Schuster <stefan.m.schuster at gmail.com> 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 <stefan.m.schuster at gmail.com>
> >
> >> 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
> 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/20130418/133d205a/attachment-0001.html 


More information about the rules-users mailing list