[rules-users] Problem with Banking Tutorial
Stefan Schuster
stefan.m.schuster at gmail.com
Thu Apr 18 10:29:43 EDT 2013
It seams that I'm not the first one with thie problem, an equal question
was there a several months ago:
http://drools.46999.n3.nabble.com/rules-users-Banking-Example-4-to-6-sorting-incorrect-tt4021041.html#none
but there was no answer. Maybe someone has an idea today?
2013/4/18 Stefan Schuster <stefan.m.schuster at gmail.com>
> 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/78ce9f03/attachment.html
More information about the rules-users
mailing list