2

如何从规则中在 Drools 4 中设置全局?如果规则触发,我想设置一个布尔值,以便它可以从另一个显着性较低的规则中读取它。

4

3 回答 3

1

假设您使用的是 Drools 5.x,您可以在规则结果中执行此操作:

kcontext.getKnowledgeRuntime().setGlobal(name, value);

于 2009-11-30T18:40:53.027 回答
0

您可能可以执行以下操作:

drools.getWorkingMemory().setGlobal... (类似于上面,kris 所说的)。

于 2009-12-04T03:02:06.990 回答
0

我不会在这里使用全局变量。您正在从其他事实中推断出一个新事实,您可以“插入”新事实并让其他规则触发。

rule "some rule"
when
    //…
then
    insert(new MyNewFact())
end

不能保证 Drools 会重新评估您的规则以响应插入(新)全局并且您的其他规则可能不会触发。但是,它将根据插入(或撤回或修改)的事实重新评估。

于 2011-01-14T15:01:48.833 回答