終止
您可以使用 Halt 函式來停止目前的規則引擎執行。 Halt函式採用 類型 Boolean
為 的一個參數。 如果您將 參數的值指定為 true
,規則引擎也會清除包含擱置候選規則的議程。
Policy.Execute方法基本上是RuleEngine.Execute方法的包裝函式。 該方法的程式碼與下列程式碼類似:
RuleEngine.Assert(facts);
RuleEngine.Execute();
RuleEngine.Retract(facts);
如果您使用Policy.Execute方法來執行原則,規則引擎會在執行 Halt函式時,將控制權傳回Policy.Execute方法。 Policy.Execute方法會撤銷事實,並將控制權傳回給呼叫端。 因此,終止的原則執行不能在此情況下繼續。 當您使用 呼叫規則 圖形來叫用原則時,會發生相同的情況。
不過,如果您使用 RuleEngine.Execute 方法直接執行原則,只要再次呼叫 RuleEngine.Execute,即可繼續停止的原則執行,方法是直接呼叫 RuleEngine.Execute (前提是您未撤銷兩個呼叫) 之間所需的任何物件。 以下是繼續執行已終止原則的範例程式碼:
//assert facts into working memory of the rule engine instance
RuleEngine.Assert(facts);
//execute the policy
RuleEngine.Execute();
//policy invokes the Halt method when executing actions.
//control is returned to here when the Halt method is invoked
//when engine is halted do the following
//Add your code here
//To resume the halted rule engine execution
RuleEngine.Execute();
//retract or remove facts frm the working memory of the rule engine
RuleEngine.Retract(facts);
請注意, Policy.Execute 方法會快取規則引擎實例,以提高效能。 當您直接使用 RuleEngine.Execute 方法時,不會快取規則引擎實例。