[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