I have an issue here where after i set the object to "FAILED" on the first rule but when running the 2nd rule, the value still pointing to original value which is "PASS". Take note the value is passing from the kie client.
rule "1st rule"
dialect "java"
when
$ruleEngine:RuleEngine()
then
OutputObject outputObject = new OutputObject();
outputObject.setResult("FAIL" );
$ruleEngine.setOutputObject(outputObject);
insert ($ruleEngine);
end
rule "2nd rule"
dialect "java"
when
$ruleEngine:RuleEngine(
( String.valueOf($ruleEngine.getOutputObject.getResult()).equals("PASS") ) //=====> the value is still PASS
)
then
System.out.println("output object==" + $ruleEngine.getOutputObject().getResult().equals("FAIL")); // ===> is true
System.out.println("output object:" + $ruleEngine.getOutputObject().getResult()); // ==> object is FAIL ?? Why?
end
Output of the Rule
output object==true
output object:FAIL
Question 1) Why the result value being set to "FAIL" but running 2nd rule during "when" checking then the result value is still "PASS"
Question 2) How can i get the result value being set as "FAIL" during 2nd rule "when" checking clause?
There is a specific 'function' to modify a fact in Drools and that is not
insert. What you are doing in the first rule is to insert the fact again in the session (causing confusion to Drools). What you are looking for is themodifymethod:Hope it helps,