Ronald,
Take a look at the class and it will be easy to understand:
http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java
!= for big decimals is translated to
return ! val1.equals( val2 );
In both cases, it is delegating to the object equals() method, that in case of BigDecimal, compare values, not references ( identity ).
[]s
Edson
2007/7/9, Ronald R. DiFrango <
ron.difrango@gmail.com>:On a similiar note what if you do:
BigDecimal != 0
On 7/9/07, Ronald R. DiFrango <
ron.difrango@gmail.com
> wrote:Thanks Edson!
Does the equals methods compare the underlying values or the object references?
On 7/9/07, Edson Tirelli <
tirelli@post.com> wrote: Ronald,
Yes, this is one way (I would say probably the preferred way) of doing it.
For BigDecimals, drools will use equals() method.
Look at the BigDecimalFactory class for details.
[]s
Edson
2007/7/9, Ronald R. DiFrango <ron.difrango@gmail.com
>:
OK, I think I found it and here is what the rule could look like:
rule "Repayment Code Requires Approval"
salience 60
when
repaymentCode : RepaymentCode( code == "MD", matchApprv == "Y" )
mdOutput : ModelDiscrepancyOutput( $amt1 : sumRTVQty, sumCmAndRnr == $amt1)
then
System.out.println("Repayment Code Requires Approval");
processMDAdjustments(
drools.getWorkingMemory
().getQueryResults( "MD Adjustments" ), StatusConstants.APPROVAL);
System.out.println("mdOutput: " + mdOutput);
end
Now my question is, how does Drools handle these objects and the comparison because the underlying objects are BigDecimal?
On 7/9/07, Ronald R. DiFrango <
ron.difrango@gmail.com> wrote:
All,
I have the following rule:
rule "Repayment Code Requires Approval"
salience 60
when
repaymentCode : RepaymentCode( code == "MD", matchApprv == "Y" )
mdOutput : ModelDiscrepancyOutput( $amt1 : sumRTVQty, $amt2 : sumCmAndRnr)
eval($amt1.doubleValue() == $amt2.doubleValue())
then
System.out.println("Repayment Code Requires Approval");
processMDAdjustments(drools.getWorkingMemory().getQueryResults( "MD Adjustments" ), StatusConstants.APPROVAL);
System.out.println("mdOutput: " + mdOutput);
end
If I remember correctly, there was going to be an update to the rules language that would allow me to eliminate the eval. Is this true and if so what is the syntax that accomplishes this?
Ron
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @
www.jboss.com
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @
www.jboss.com