2009-11-30 149 views
2

如何在規則內設置Drools 4中的全局變量?如果規則觸發,我想設置一個布爾值,以便它可以從具有較低顯着性的另一個規則中讀取它。 。在Drools中設置全局變量

回答

1

假設你正在使用Drools的5.x中,您可以在規則的後果做到這一點:

kcontext.getKnowledgeRuntime()setGlobal(名稱,值);

+0

對不起,我忘了提及它是Drools 4 – Tarski

0

您也許能夠做這樣的事情:

drools.getWorkingMemory()setGlobal ...(與上述類似,什麼克里斯說的)。

0

我不會在這裏使用全球。你從其他事實推斷出一個新事實,你可以「插入」新的事實,並讓其他規則着火。

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

有沒有保證,Drools的響應(新)全球和你的其他規則可能不火的插入會重新評估你的規則。但是,它會根據事實被插入(或收回,或修改)來重新評估。