Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez utiliser la fonction Halt pour arrêter l’exécution actuelle du moteur de règle. La fonction Halt prend un paramètre de type Boolean. Si vous spécifiez la valeur du paramètre en tant que true, le moteur de règles efface également l’ordre du jour qui contient les règles candidates en attente.
La méthode Policy.Execute est essentiellement un wrapper autour de la méthode RuleEngine.Execute . Il a du code similaire au code suivant :
RuleEngine.Assert(facts);
RuleEngine.Execute();
RuleEngine.Retract(facts);
Si vous utilisez la méthode Policy.Execute pour exécuter une stratégie, le moteur de règles retourne le contrôle à la méthode Policy.Execute lorsque la fonction Halt est exécutée. La méthode Policy.Execute retire les faits et retourne le contrôle à l’appelant. Par conséquent, l’exécution de la stratégie arrêtée ne peut pas être reprise dans ce cas. La même chose se produit lorsque vous utilisez le modèle Règles d’appel pour invoquer la stratégie.
Toutefois, si vous utilisez la méthode RuleEngine.Execute directement pour exécuter la stratégie, vous pouvez reprendre l’exécution de la stratégie interrompue avec le déclenchement de la règle en attente suivante en appelant simplement RuleEngine.Execute (à condition que vous n’activiez pas d’objets nécessaires entre les deux appels). L’exemple de code permettant de reprendre l’exécution de la stratégie arrêtée est le suivant :
//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);
Notez que la méthode Policy.Execute met en cache les instances du moteur de règles pour de meilleures performances. Lorsque vous utilisez directement la méthode RuleEngine.Execute , les instances du moteur de règles ne sont pas mises en cache.