Stopp
Sie können die Funktion Halt verwenden, um die ausführung der aktuellen Regel-Engine anzuhalten. Die Halt-Funktion akzeptiert einen Parameter vom Typ Boolean
. Wenn Sie den Wert für den Parameter als true
angeben, löscht die Regel-Engine auch die Agenda, die die ausstehenden Kandidatenregeln enthält.
Die Policy.Execute-Methode ist im Grunde ein Wrapper um die RuleEngine.Execute-Methode . Sie ähnelt dem folgenden Code:
RuleEngine.Assert(facts);
RuleEngine.Execute();
RuleEngine.Retract(facts);
Wenn Sie die Policy.Execute-Methode zum Ausführen einer Richtlinie verwenden, gibt die Regel-Engine die Kontrolle an die Policy.Execute-Methode zurück, wenn die Funktion Halt ausgeführt wird. Die Policy.Execute-Methode zieht die Fakten zurück und gibt die Steuerung an den Aufrufer zurück. Deshalb kann die gestoppte Ausführung der Richtlinie in diesen Fall nicht fortgesetzt werden. Dasselbe geschieht, wenn Sie das Shape Aufrufregeln verwenden, um die Richtlinie aufzurufen.
Wenn Sie jedoch die RuleEngine.Execute-Methode direkt verwenden, um die Richtlinie auszuführen, können Sie die angehaltene Richtlinienausführung mit der nächsten ausstehenden Regelauslösung fortsetzen, indem Sie einfach RuleEngine.Execute erneut aufrufen (sofern Sie zwischen den beiden Aufrufen keine erforderlichen Objekte zurückgezogen haben). Hier der Beispielcode zum Fortsetzen der gestoppten Ausführung einer Richtlinie:
//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);
Beachten Sie, dass die Policy.Execute-Methode die Instanzen der Regel-Engine zwischenspeichert, um die Leistung zu verbessern. Wenn Sie die RuleEngine.Execute-Methode direkt verwenden, werden die Instanzen der Regel-Engine nicht zwischengespeichert.