[rules-users] Order of operations

Joe White Joe.White at recondotech.com
Wed Apr 9 15:27:48 EDT 2008


Another bug that  I just came across while working on getting my parens
to work involved not handling scoped numbers properly. Similar to the
previous one, but different in that it ends the expression evaluation
prematurely. See the drl and result below:

 

package test;

dialect "mvel"

rule "test 12"

    when

 

    then

        double rightVal=(10 + 12);

        double wrongVal=(10) + (12);

        double wrongValTwo = ((10)+12)

        System.out.println("Right "+rightVal);

        System.out.println("Wrong "+wrongVal);

       System.out.println("WrongTwo "+wrongValTwo);

End

 

Results in:

Right 22.0

Wrong 10.0

WrongTwo 10.0

 

Thanks,

Joe

 

From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Edson Tirelli
Sent: Wednesday, April 09, 2008 12:39 PM
To: Rules Users List
Subject: Re: [rules-users] Order of operations

 


   Hi Joe,

   It seems someone skipped the elementary math lessons at school... :(

   Will open a JIRA for that.

   []s
   Edson

2008/4/9 Joe White <Joe.White at recondotech.com>:

I have a question regarding order of operations in the consequence of a
rule when using the mvel dialect. When executed the Drl below provides
Right =30.0 and Wrong =140.0. The only difference is the parens around
the multiplying expressions, which shouldn't be necessary given order of
operations. Is this a problem with the drools/mvel interaction or is it
completely an issue with mvel? 

 

Is the general expectation that all expressions must be completely
scoped by parens when using mvel? 

 

package test;

dialect "mvel"

rule "test 11"

    when

 

    then

        double rightVal=((10-5)*2) + (5*(8-4));

        double wrongVal=(10-5)*2 + 5*(8-4);

 

        System.out.println("Right ="+rightVal);

        System.out.println("Wrong ="+wrongVal);

End

 

After execution:

Right =30.0 

Wrong =140.0

 

 

Thank you for all of your help. We are using drools 4.0.4.

 

Joe

 

Also, I haven't figured out how it arrives at 140. The following format
also produces 140, which seems a little more strange.

        double wrongVal=10-5*2 + 5*8-4;

 

 

 


_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users




-- 
Edson Tirelli
JBoss Drools Core Development
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @ www.jboss.com 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080409/ec3747d5/attachment.html 


More information about the rules-users mailing list