[rules-users] [BAD

Wolfgang Laun wolfgang.laun at gmail.com
Sun Jan 20 03:05:00 EST 2013


rule init
salience 9999
when
then
    insert( Integer.valueOf( 10 ) );
    insert( Integer.valueOf( 50 ) );
    insert( Integer.valueOf( 60 ) );
    insert( Integer.valueOf( 40 ) );
    insert( Integer.valueOf( 20 ) );
end


rule "Rule 04"
##   dialect "mvel"
when
    $number : Integer( $i: intValue )
    not Integer(intValue < $i)
then
    System.out.println("Number found with value: " + $number.intValue());
    retract($number);
end



On 17/01/2013, Wolfgang Laun <wolfgang.laun at gmail.com> wrote:
> This BAD bug was introduced on the way from 5.4.0 to 5.5.0 (and seems
> to have sneaked into 6.0.0 as well).
>
> Only 5.4.0 and predecessors work as expected.
>
> Damage control? How far can 5.5.0 be trusted?
>
>
> On 17/01/2013, John Smith <ffirstt.llastt at gmail.com> wrote:
>> I am new to Drools and am trying to get the sample program to work. This
>> sample is given in the drools documentation
>> http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html_single/index.html#d0e9542.
>> This drool rule is expected to sort integers. I just changed the numbers
>> from what are given in the sample and they do not get sorted as expected.
>> Tried using drools version 5.5.0, 5.5.1 and the master 6.0.0, but got the
>> same wrong results.
>>
>> Following is the main code:
>>     package com.sample;
>>
>>     public class Example2 {
>>       public static void main(String[] args) throws Exception {
>>         Number[] numbers = new Number[] { wrap(5), wrap(6), wrap(4),
>> wrap(1), wrap(2) };
>>         new RuleRunner().runRules(new String[] { "Example3.drl" },
>> numbers);
>>       }
>>
>>       private static Integer wrap(int i) {
>>         return new Integer(i);
>>       }
>>     }
>>
>>  The RuleRunner class is the same as given in the example and I do not
>> think
>> I should give that here, since it will clutter the question. It simply
>> creates the KnowledgeBase, stateful session, inserts the facts as given
>> in
>> the 'numbers' array above and then calls fireAllRules method on the
>> session.
>>
>> The rule file (Example3.drl) is:
>>
>>
>>  rule "Rule 04"
>>      dialect "mvel"
>>    when
>>      $number : Number()
>>      not Number(intValue < $number.intValue)
>>    then
>>      System.out.println("Number found with value: " +
>> $number.intValue());
>>      retract($number);
>>  end
>>
>>
>> The output I get is as follows:
>> Loading file: Example3.drl
>> Inserting fact: 5
>> Inserting fact: 6
>> Inserting fact: 4
>> Inserting fact: 1
>> Inserting fact: 2
>> Number found with value: 1
>> Number found with value: 4
>> Number found with value: 2
>> Number found with value: 5
>> Number found with value: 6
>>
>> Not the correct expected ascending sorted order.
>>
>> What might I be doing wrong? I cannot imagine that the drools rule engine
>> would be broken at this basic level.
>>
>>
>>
>> --
>> View this message in context:
>> http://drools.46999.n3.nabble.com/Drools-Expert-does-not-sort-integers-correctly-tp4021606.html
>> Sent from the Drools: User forum mailing list archive at Nabble.com.
>> _______________________________________________
>> 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