Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile usare la funzione Halt per interrompere l'esecuzione corrente del motore delle regole. La funzione Halt accetta un parametro di tipo Boolean. Se si specifica il valore per il parametro come true, il motore regole cancella anche l'agenda contenente le regole candidate in sospeso.
Il metodo Policy.Execute è fondamentalmente un wrapper intorno al metodo RuleEngine.Execute . Ha codice simile al codice seguente:
RuleEngine.Assert(facts);
RuleEngine.Execute();
RuleEngine.Retract(facts);
Se si usa il metodo Policy.Execute per eseguire un criterio, il motore delle regole restituisce il controllo al metodo Policy.Execute quando viene eseguita la funzione Halt . Il metodo Policy.Execute ritira i fatti e restituisce il controllo al chiamante. Pertanto, l'esecuzione della politica interrotta non può essere ripresa in questo contesto. La stessa cosa accade quando si utilizza la forma Regole di chiamata per richiamare i criteri.
Tuttavia, se si usa direttamente il metodo RuleEngine.Execute per eseguire i criteri, è possibile riprendere l'esecuzione dei criteri interrotta con la successiva regola in sospeso attivando semplicemente chiamando RuleEngine.Execute nuovamente (purché non siano stati ritirati gli oggetti necessari tra le due chiamate). Il codice di esempio per riprendere l'esecuzione dei criteri interrotta è il seguente:
//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);
Si noti che il metodo Policy.Execute memorizza nella cache le istanze del motore delle regole per ottenere prestazioni migliori. Quando si usa direttamente il metodo RuleEngine.Execute , le istanze del motore delle regole non vengono memorizzate nella cache.