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.
Per riasserire significa chiamare la funzione Assert su un oggetto già nella memoria di lavoro del motore. Un comando reassert equivale a eseguire un comando di ritiro per l'oggetto, seguito da un comando assert.
Oggetti .NET
L'oggetto viene prima ritirato e vengono rimosse le azioni nell'agenda per le regole che utilizzano l'oggetto (in un predicato o un'azione). L'oggetto viene quindi riportato in memoria di lavoro e valutato come qualsiasi oggetto appena asserito. Ciò significa che tutte le regole che usano l'oggetto in un predicato vengono rivalutate e le relative azioni vengono aggiunte all'agenda in base alle esigenze. Tutte le regole che in precedenza hanno valutato su true e usano solo l'oggetto nelle azioni verranno aggiunte nuovamente all'ordine del giorno.
TypedXmlDocument
Quando viene rivalutato un typedXmlDocument (TXD) di primo livello, il TXDfiglio creato quando inizialmente il TXD di primo livello viene dichiarato ha comportamenti diversi a seconda dello stato del TXDfiglio. Nel caso di un nuovo nodo figlio o di un nodo figlio dirty, vale a dire che almeno uno dei relativi campi è stato modificato nei criteri usando un'azione regola, un'asserzione o un'azione di rivalutazione viene eseguita sul nodo figlio. Qualsiasi nodo figlio esistente che non è sporco rimane nella memoria di lavoro. L'esempio seguente è uno scenario semplificato che descrive i comportamenti dei nodi figlio quando il nodo padre viene rivalutato.
Si supponga che nella memoria di lavoro siano attualmente presenti tre TXD: P, C1, C2 e C3. P è il TXD di primo livello, il nodo padre; ogni nodo figlio contiene un campo x.
P
C1 (C1.x = 1)
C2 (C2.x = 1)
C3 (C3.x = 1)
Si supponga quindi che le operazioni seguenti siano state eseguite come risultato dell'azione della regola:
Il valore del campo (x) per C2 viene aggiornato.
C3 viene eliminato usando il codice utente.
Un nodo figlio aggiuntivo, D, viene aggiunto a P usando il codice utente.
Annotazioni
Un nodo non verrà contrassegnato come "dirty" dal motore delle regole di business da operazioni di cui il motore non è a conoscenza. Ad esempio, l'aggiunta, l'eliminazione o la modifica di un nodo a livello di codice in un'applicazione esterna.
La nuova rappresentazione degli oggetti nella memoria di lavoro è la seguente.
P
C1 (C1.x = 1)
C2 (C2.x = 0)
D
Ora, riaffermare P. I punti seguenti riepilogano i comportamenti dei nodi figlio:
Il nodo C2 viene riaffermato, perché è diventato "dirty" dopo l'aggiornamento del relativo campo.
Il nodo C3 viene ritirato dalla memoria di lavoro.
Il nodo D viene asserito nella memoria di lavoro.
Il nodo C1 rimane invariato nella memoria di lavoro, perché non è stato aggiornato prima della rivalutazione di P .
TypedDataTable
Se Reassert viene emesso in un TypedDataRow, tale riga viene ritirata e quindi asserita nella memoria di lavoro. Se Reassert viene emesso in TypedDataTable, tutti gli oggetti TypedDataRowassociati vengono ritirati e quindi asserti.
Dataconnection
Tutti i TypedDataRow recuperati tramite DataConnection vengono revocati. Tutti i predicati che utilizzano DataConnection vengono quindi rivalutati, causando una nuova richiesta di query per DataConnection al fine di creare gli oggetti TypedDataRow pertinenti.