Ordine di esecuzione degli hook field e action

Gli hook field e action vengono eseguiti a intervalli predeterminati e nell'ordine prestabilito. Sono presenti quattro punti di esecuzione dell'hook durante la visualizzazione di un record:

Hooks eseguiti quando viene avviata un'azione

Quando un utente avvia un'azione, gli hook vengono eseguiti nel seguente ordine:

  1. L'hook Action Access Control verifica l'accesso dell'utente ed arresta l'elaborazione dell'azione se all'utente non è consentito avviarla. In questo caso, i restanti hook non vengono eseguiti.

    È possibile modificare il controllo di accesso alle azioni, incluse le azioni che potrebbero essere aggiunte allo schema applicando i pacchetti. Tuttavia, qualsiasi limitazione del controllo di accesso situata nelle azioni base si applica alle altre azioni. Per le azioni nidificate, un hook access control non viene eseguito.

  2. L'hook Field Permission determina se ogni campo è obbligatorio, facoltativo o di sola lettura.
  3. L'hook Action Initialization effettua le attività di inizializzazione quali l'impostazione dei valori del campo prima che l'azione venga avviata.
  4. L'hook Field Default Value imposta il valore per ogni campo (solo per le azioni Submit).
  5. L'hook Field Validation convalida il contenuto di ogni campo, tranne per un'azione di importazione in cui non si verifica alcuna convalida. Gli hook validation field non possono convalidare i valori inesistenti, come ad esempio un campo obbligatorio in cui il valore non è stato impostato.
  6. L'hook Field Choice List viene eseguito per ogni campo che utilizza l'opzione Recalculate Choice List. Se sono presenti campi dipendenti e viene selezionato Recalculate Choice List durante la creazione dei campi, viene eseguito prima l'hook Field Validation e poi l'hook Field Choice List per ogni campo, fino a quando tutti i campi modificati non sono stati impostati e convalidati.

    Se un hook Field Value Changed richiama il metodo SetFieldValue dell'oggetto Entity, l'hook VALUE_CHANGED per tale campo viene eseguito al momento del richiamo SetFieldValue.

Azioni nidificate

Alcuni hook non vengono eseguiti mentre è in corso un'azione nidificata, inclusa l'esecuzione degli hook access control e tutti gli hook notification. Per ulteriori informazioni, consultare Controllo accesso e azioni e Hook nelle azioni nidificate in IBM Rational ClearQuest - Riferimento API.

Hook eseguiti quando viene impostato un valore del campo

Quando un utente modifica un record, gli hook vengono eseguiti nel seguente ordine:

  1. L'hook Field Value Changed viene eseguito per ogni campo modificato.

    Se l'opzione Limit to list è impostata e l'utente immette un valore che non è consentito, il campo viene contrassegnato come non valido. L'hook successivo viene eseguito solo quando l'utente immette un valore valido.

    Se un hook Field Value Changed richiama il metodo SetFieldValue per modificare il valore di un altro campo, l'hook Field Value Changed per tale campo viene eseguito immediatamente.

  2. L'hook Field Validation viene eseguito per ogni campo.
  3. L'hook Field Choice List viene eseguito per ogni campo che utilizza l'opzione Recalculate Choice list.

    Se si utilizzano i campi dipendenti con l'opzione Recalculate Choice list, viene eseguito prima l'hook Field Validation e poi l'hook Field Choice List per ogni campo, fino a quando i campi modificati non sono stati impostati e convalidati.

Gli hook field vengono eseguiti solo quando l'utente avvia l'azione Submit, a meno che il campo non sia contrassegnato come avente campi dipendenti. Consultare Utilizzo di hook per rilevare una sessione Web.

Hook eseguiti quando viene convalidato il record

Prima di eseguire il commit delle modifiche sul database, il software Rational ClearQuest convalida il record eseguendo gli hook nel seguente ordine:

  1. L'hook Field Validation viene eseguito per ogni campo del record.
  2. L'hook Action Validation viene eseguito per l'azione eseguita.

Hook eseguiti quando viene eseguito il commit del record

L'hook Commit viene eseguito dopo l'aggiornamento del database con le modifiche al record corrente, ma prima di eseguire il commit della transazione di aggiornamento al database. Non è possibile utilizzare un hook Commit per modificare il record corrente (ad esempio, non è possibile apportare le modifiche ad un campo da un hook Commit).

Il lavoro in un hook Commit viene completato mentre sono presenti dei blocchi nel database, tali blocchi possono impedire agli altri utenti di eseguire interrogazioni, di creare nuovi record o di modificare quelli esistenti. Per motivi di prestazioni, è preferibile ridurre il lavoro eseguito in un hook Commit.

Utilizzare un hook Commit solo per le azioni sugli altri record che fanno parte della stessa transazione del database come azione principale (ad esempio, la risoluzione di un difetto duplicato quando il difetto principale è stato risolto). È necessario verificare che siano stati inseriti i richiami appropriati nel contesto corretto. Ad esempio, non richiamare Revert da un hook Commit né richiamare Commit da qualsiasi azione diversa da un hook Commit.

Dopo che un record è stato convalidato, gli hook ne eseguono il commit nel database nel seguente ordine:

  1. Viene eseguito l'hook Action Commit.
  2. Viene eseguito il commit della transazione nel database.
  3. Viene eseguito l'hook Action Notification. Ad esempio, una notifica e-mail può essere inviata a vari utenti.

Per ulteriori informazioni, consultare Come modificare un record esistente in IBM Rational ClearQuest - Riferimento API.



Feedback