1

说我在 drl 中有以下流口水规则

global java.lang.Boolean test;
rule "Initialize global"
salience 1000
when
then drools.workingmemory.setGlobal("test", new Boolean(true))
end

这按预期工作,但我也不希望每次都触发规则,所以我想添加检查全局测试是否已初始化,如果没有,则设置它,否则,不要触发规则。你会怎么做?

我相信我也需要 no-loop true 。谢谢你的帮助

4

1 回答 1

2

使用没有约束的规则是初始化规则的常见模式。您拥有的规则每个会话仅执行一次,因此不必担心重新执行。关于无循环,由于您的规则中没有任何条件,因此无法重新激活它。当您在 RHS 中使用 modify() 或 update() 时,使用无循环来避免递归激活。

此致'

于 2012-12-08T09:09:10.837 回答