[rules-users] Problem with Banking Tutorial

Wolfgang Laun wolfgang.laun at gmail.com
Thu Apr 18 13:14:50 EDT 2013


On 18/04/2013, Davide Sottara <dsotty at gmail.com> wrote:
> Stefan,
> 5.6 is coming out in a few days.. it will be a major fix release where a
> number of bugs have been isolated
> and corrected. The reason it's not out yet is because more edge case
> errors are being found and
> corrected. I hope that an upgrade to 5.6 will be recommended to all 5.5
> users

Curious, how that will be done, with anonymous download...? They don't
lurk on this list, either...
-W

> Davide
>
> On 04/18/2013 09:41 AM, Stefan Schuster wrote:
>> Thanks for all answers.
>>
>> Finally I found the ticket for this issue:
>> https://issues.jboss.org/browse/DROOLS-15
>>
>> Despite all the great functionality in Drools, this bug makes me
>> really afraid. I can live with bugs that throw exceptions or even
>> crash the application. But simply returning a wrong value is the worst
>> case I can imagine for an algorithmic library.
>>
>>  Is this such a special case that it has no effect in every days use?
>> I mean, this error occurs when starting one of the examples that are
>> part of the release, that doesn't sound like a special case to me,
>> isn't it?
>>
>> Please don't misunderstand me, I have a deep respect for the developer
>> of such complex systems like DROOLS, and  I know from my own code that
>> bugs simply happen. But I wonder why there is still this version
>> without any warning the official release?
>>
>> Is it better to use an older version?
>>
>> best regards
>>
>> Stefan
>>
>>
>>
>>
>> 2013/4/18 Mark Proctor <mproctor at codehaus.org
>> <mailto:mproctor at codehaus.org>>
>>
>>     There are a lot of fixes in the 5.x master. Anyone verified their
>>     bugs against this? I suspect this is fixed in that.
>>
>>
>>     Mark
>>     On 18 Apr 2013, at 16:21, Wolfgang Laun <wolfgang.laun at gmail.com
>>     <mailto:wolfgang.laun at gmail.com>> wrote:
>>
>>     > Ah, my memory :-)
>>     >
>>     > http://lists.jboss.org/pipermail/rules-dev/2013-January/004338.html
>>     >
>>     > Mark has promised a fix for 3 months ago, but of course 5.5.0
>>     remains broken.
>>     >
>>     > -W
>>     >
>>     > On 18/04/2013, Stefan Schuster <stefan.m.schuster at gmail.com
>>     <mailto:stefan.m.schuster at gmail.com>> wrote:
>>     >> 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
>>     <mailto: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
>>     <mailto: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
>>     <mailto: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 <mailto:rules-users at lists.jboss.org>
>>     >>> https://lists.jboss.org/mailman/listinfo/rules-users
>>     >>>
>>     >>
>>     > _______________________________________________
>>     > rules-users mailing list
>>     > rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>>     > https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>>     _______________________________________________
>>     rules-users mailing list
>>     rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>>     https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


More information about the rules-users mailing list