【发布时间】:2010-12-21 14:18:44
【问题描述】:
如何在 Drools 4 中从规则中设置全局变量?如果规则触发,我想设置一个布尔值,以便它可以从另一个显着性较低的规则中读取它。
【问题讨论】:
标签: drools globals jboss-rules
如何在 Drools 4 中从规则中设置全局变量?如果规则触发,我想设置一个布尔值,以便它可以从另一个显着性较低的规则中读取它。
【问题讨论】:
标签: drools globals jboss-rules
假设您使用的是 Drools 5.x,您可以在规则结果中执行此操作:
kcontext.getKnowledgeRuntime().setGlobal(name, value);
【讨论】:
你也许可以这样做:
drools.getWorkingMemory().setGlobal...(类似于上面,kris 所说的)。
【讨论】:
我不会在这里使用全局变量。您正在从其他事实中推断出一个新事实,您只需“插入”新事实并让其他规则触发。
rule "some rule"
when
//…
then
insert(new MyNewFact())
end
无法保证 Drools 会重新评估您的规则以响应插入(新)全局并且您的其他规则可能不会触发。但是,它将重新评估以响应插入(或撤回或修改)的事实。
【讨论】: