Drools 5 can only define local variables for rules that are “Facts” or “Facts” fields:
when
$city : City()
Person ($name : firstName)
then
System.out.println("city="+$city+", name="+$name);
end
(.. Fact Fact), , :
when
$myParamList : eval(DroolsRuleLocalVariable.setVariable("myParamList", Arrays.asList(1,2,3) ))
then
System.out.println("myParamList="+(List<Integer>)DroolsRuleLocalVariable.getVariable("myParamList"));
DroolsRuleLocalVariable.clear();
end
DroolsRuleLocalVariable :
package com.mypackage;
import java.util.HashMap;
import java.util.Map;
public class DroolsRuleLocalVariable {
private static Map<String,Object> ruleLocalVariables = new HashMap<>();
public static boolean setVariable(String variableName, Object variableValue) {
ruleLocalVariables.put(variableName, variableValue);
return true;
}
public static Object getVariable(String variableName) {
Object value = ruleLocalVariables.get(variableName);
return value;
}
public static void clear() {
ruleLocalVariables.clear();
}
}