[rules-users] Using Character typed properties in Drool 5.3

Edson Tirelli ed.tirelli at gmail.com
Mon Feb 13 20:47:41 EST 2012


   Which version of MVEL are you using? It looks like a regression. I will
ping Mario to take a look.

   Edson

On Mon, Feb 13, 2012 at 6:45 PM, Welsh, Armand <AWelsh at statestreet.com>wrote:

> Correction:
>
> Even using Character.valueOf('Y') does not work anymore in Drools 5.3.
>  The validate works, but the compile steps fails because Drools is treating
> 'Y' as a String.  However, in Drools 5.2 and prior, 'Y' was properly casted
> to a Character when the property it was being compared to was a property of
> type Character.
>
> If anyone has any insight on where the documentation address this change
> in behavior, I would appreciate some guidance.  I am trying to
> re-standardize how our rules are coded for evaluating Character typed
> properties.
>
> Armand
>
> -----Original Message-----
> From: rules-users-bounces at lists.jboss.org [mailto:
> rules-users-bounces at lists.jboss.org] On Behalf Of Welsh, Armand
> Sent: Monday, February 13, 2012 3:16 PM
> To: Rules Users List
> Subject: [rules-users] Using Character typed properties in Drool 5.3
>
> Community,
>
> In drools 5.2 I had the following LHS"
>
> when
>        BloombergColumn (columnName == "CRNCY", $cur : stringValue != null)
>        Country (currency == $cur, emergingMkt == 'Y' || countryCode in
> ("BH","HR","CZ","EE","HK","HU","IL","KR","KW","MO","OM","QA","SA","SG","SK","SI","TT"))
>
>
> I am switching to Drool 5.3, and Drools Guvnor reports the following error
> upon validate (or compile):
>
>        [bum_code_value.currency 01] Unable to Analyse Expression
> emergingMkt == 'Y' || countryCode == "BH" || countryCode == "HR" ||
> countryCode == "CZ" || countryCode == "EE" || countryCode == "HK" ||
> countryCode == "HU" || countryCode == "IL" || countryCode == "KR" ||
> countryCode == "KW" || countryCode == "MO" || countryCode == "OM" ||
> countryCode == "QA" || countryCode == "SA" || countryCode == "SG" ||
> countryCode == "SK" || countryCode == "SI" || countryCode == "TT": [Error:
> Comparison operation requires compatible types. Found class
> java.lang.Character and class java.lang.String] [Near : {... == "SK" ||
> countryCode == "SI" || countryCode == "TT" ....}] ^ [Line: 7, Column: 28]
>
> Looking at the emergingMkt in my data model, I see that it is defined as a
> Character.  If I change my LHS to:
>
>        BloombergColumn (columnName == "CRNCY", $cur : stringValue != null)
>        Country (currency == $cur, emergingMkt == Character.valueOf('Y') ||
> countryCode in
> ("BH","HR","CZ","EE","HK","HU","IL","KR","KW","MO","OM","QA","SA","SG","SK","SI","TT"))
>
>
> Then the validate passes.
>
> Was this change in behavior intentional?  I don't see a reference to this
> change in the Drools 5.3 documentation, and this makes for a harder to read
> rule for our Drools analysts.
>
> Thanks in advance,
> Armand
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



-- 
  Edson Tirelli
  JBoss Drools Core Development
  JBoss by Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20120213/38b8c5f1/attachment.html 


More information about the rules-users mailing list