Recently I'm working with drools and I want to make some special checks on some objects. I need to use functions in the when
section of the rule, but I'm getting an error. Example:
function boolean newFunction(int a){
if(a>0)
return true;
else
return false;
}
rule "new rule"
salience 100
dialect "mvel"
when
eval(newFunction(1))
then
System.out.println("OK");
end
The error i get always is:
unable to resolve method using strict-mode: java.lang.Object.newFunction(java.lang.Integer)
Is there no support on drools for functions in when
section?
Thanks!
The short answer is: no.
This is because the facts need to be in the working memory.
What you can do, is to have a rule that takes all types of a certain class from the working memory, applies a function in the then section and inserts that new value in the working memory.
This answer, originally posted on 2012, is not more relevant as newer versions of drools do support functions on the when
clause.