我在这里遇到一个问题,在第一条规则上将对象设置为“FAILED”但运行第二条规则时,该值仍指向原始值“PASS”。请注意,值是从kie客户端传递的。
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 object==true
output object:FAIL
问题1)为什么结果值设置为“FAIL”但在“when”检查期间运行第二个规则然后结果值仍为“PASS”
问题2)如何在第二条规则“何时”检查条款中将结果值设置为“FAIL”?
答案 0 :(得分:2)
有一个特定的功能&#39;修改Drools中的事实而不是<system.web>
<globalization uiCulture="en" culture="en-AU" />
</system.web>
。你在第一条规则中所做的是在会话中再次插入事实(导致混淆Drools)。您正在寻找的是insert
方法:
modify
希望它有所帮助,