Leggere in inglese

Condividi tramite


Funzione Halt

È possibile usare la funzione Halt per interrompere l'esecuzione corrente del motore 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 che contiene le regole candidate in sospeso.

Il metodo Policy.Execute è fondamentalmente un wrapper intorno al metodo RuleEngine.Execute . Include codice analogo a quello seguente:

RuleEngine.Assert(facts);   
RuleEngine.Execute();   
RuleEngine.Retract(facts);  

Se si utilizza 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. In questo caso, l'esecuzione del criterio interrotta non può quindi essere ripresa. La stessa cosa accade quando si usa la forma Regole di chiamata per richiamare il criterio.

Se tuttavia si usa direttamente il metodo RuleEngine.Execute per eseguire i criteri, è possibile riprendere l'esecuzione dei criteri interrotta con la successiva generazione di regole in sospeso chiamando semplicemente RuleEngine.Execute (purché non siano stati ritirati gli oggetti necessari tra le due chiamate). Di seguito è riportato il codice di esempio per riprendere l'esecuzione del criterio interrotta:

//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.

Vedere anche

Funzioni di controllo del motore