Remember that inside the eval() block, since you are using java dialect, what you have is java code. So, == is checking for String identity, that is not what you want.
You need to call the equals() method:
eval( functionThatReturnsString().equals("1234) )
[]s
Edson
2009/7/7 rainbowflower
<al_aysha@yahoo.co.in>
Hi all,
I am rather new to Drools and I have a problem using functions.
I have a rule like:
rule "rule 1"
when
eval(getEVAVersionsNr() == "1234")
then
System.out.println("rule fired");
end
The getEVAVersionsNr() method is present in a Java class
"ValidationUtilities.java", which I'm importing in my drl file and it looks
like this:
public class ValidationUtilities {
public static String evaVersionsNr;
public static String getZEVAVersionsNummer() {
return evaVersionsNr;
}
}
This static attribute "evaVersionsNr" is set to "1234" from another Java
class before I fire my rules. So, I assume that the eval construct should
return true. But, it does not return true and the consequence is not
exected.
Further info:
When I modify my rule like:
rule "rule 1"
when
eval(true)
then
System.out.println(getEVAVersionsNr());
end
the consequence part is getting executed and 1234 is getting printed.
I am really lost and I could not find out what goes wrong. If someone could
find out what I am missing, I shall be thankful.
Thanks in advance.
--
View this message in context: http://www.nabble.com/Problem-calling-a-function-returning-String-tp24375624p24375624.html
Sent from the drools - user mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
JBoss Drools Core Development
JBoss by Red Hat @ www.jboss.com