[rules-users] Drools Expert does not sort integers correctly

Wolfgang Laun wolfgang.laun at gmail.com
Mon Jan 21 05:54:12 EST 2013


As fas as the released versions 5.5.0 and 5.5.1 are concerned,  CEs
"not" and "exist" using constraints employing the four comparison
operators <, <=, >, >= are not safe to use if a retract changes the
nodes relating to these CEs.

Mario has fixed this, so it'll be gone in 5.6 and later.

-W

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