Le azioni nidificate sono diverse dalle azioni principali perché le funzioni hook di controllo accesso all'azione e le funzioni hook di notifica non vengono eseguite per le azioni nidificate.
La funzione hook di controllo accesso all'azione non viene eseguita se una funzione hook avvia un'azione nidificata. Poiché tutte le funzioni hook vengono eseguite con il privilegio Super utente, il livello di privilegio è già al massimo (SuperUtente). Non è necessario eseguire la funzione hook di controllo accesso per l'azione nidificata.
L'accesso per un'azione nidificata viene concesso anche quando non viene attivata nessuna funzione hook di controllo accesso.
Per impostazione predefinita, le funzioni hook di notifica non vengono eseguite per un'azione nidificata. Le funzioni hook di notifica vengono utilizzate per inviare un messaggio e-mail. Se ogni azione nidificata inviasse un messaggio e-mail, ci sarebbero molte e-mail inviate per ciò che l'utente considera essere un'azione. È possibile sovrapporre questa funzione e consentire alle azioni nidificate di eseguire funzioni hook di notifica impostando la variabile di sessione CQHookExecute sul valore di 1.
L'impostazione della variabile di sessione CQHookExecute può essere effettuata con il seguente codice:
dim session
set session = GetSession
session.NameValue "CQHookExecute", 1
$session->SetNameValue("CQHookExecute","1");
In una funzione hook di commit, l'esecuzione del commit a livello del database non viene effettuata quando viene eseguito il commit sull'azione nidificata, ma è combinato con l'esecuzione del commit a livello esteriore in modo che tutte le modifiche siano incluse come una transazione atomica.
In tutti gli altri tipi di funzione hook, viene eseguito il commit dell'azione nidificata a livello del database, indipendentemente dall'esecuzione del commit a livello esteriore. L'unico modo per combinare le modifiche effettuate in un'azione nidificata con quelle dell'azione a livello superiore, come una transazione del database singola, è quello di avere l'azione nidificata in una funzione hook di commit.
Per ulteriori informazioni sull'ordine di esecuzione delle funzioni hook e sul momento in cui è stato eseguito il commit del record, consultare la guida in linea Rational ClearQuestSchema developer. Per l'impostazione dei valori del campo, consultare il metodo SetFieldValue dell'oggetto Entity.