Hi All,
We have an issue in rule when migrating drools from 3.0 to 5.1 with "eval". To
demo this error, I use the following code:
public class Info {
public String getItem(int i) {
return "item is " + i;
}
}
In Drools 3.0, the following rule is fine:
rule "test eval"
salience 1
when
info : Info()
eval(into.getItem(0) != null)
then
System.out.println("test eval");
end
But when using drools 5.1, it shows error "info can not be resolved". I found a
way to resolve this issue but don't know this is the best practice.
declare Item
name : String
end
rule "insert item before eval"
salience 0
when
info : Info()
then
Item item = new Item();
item.setName(info.getItem(0));
insert( item );
end
rule "test eval"
salience 1
when
item : Item(n : name)
eval( n != null)
then
System.out.println("test eval");
end
BTW, using "declare" in rule may cause memory leaking? We are seeing heap size
growing after migrated to 5.1.
Thanks,
Liqun
Show replies by date