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-boun...@lists.jboss.org 
[mailto:rules-users-boun...@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@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

Reply via email to