Hook

Questo argomento illustra gli hook ClearQuest.

Gli hook sono punti di immissione, come trigger, per script che vengono eseguiti in determinati intervalli per controllare come gli utenti utilizzano un ambiente Rational ClearQuest.

Gli hook vengono eseguiti con privilegi di super utente e quindi non sono soggetti al solito controllo accessi o alle limitazioni del funzionamento del campo. È possibile utilizzare hook per impostare e reimpostare i valori nei campi che, di solito, sono di sola lettura. Non è possibile reimpostare i campi del sistema, ad esempio il campo Cronologia. I campi richiesti restano obbligatori. Per ulteriori informazioni, consultare Riferimento API IBM Rational ClearQuest e Azioni e controllo accessi .

Sono supportati quattro tipi di hook:

Linguaggi di script per hook

È possibile scrivere gli hook in VBScript (per Windows) e Perl (per il sistema UNIX e Windows). Per impostazione predefinita, gli hook vengono eseguiti in VBScript su Windows. Per informazioni sull'esecuzione degli hook in Perl per Windows, consultare la sezione Linguaggi di script.

È possibile aggiungere uno script scritto in VBScript o Perl agli hook campo e azione. Se si creano gli script globali o gli script del record, è necessario utilizzare VBScript o Perl.

Per riferimento e memorizzazione, è possibile scrivere gli script VBScript e Perl nello stesso schema. Tuttavia, uno schema esegue script solo nel linguaggio specificato per tale schema. Per ulteriori informazioni, consultare Linguaggi di script).

Scrivere o modificare gli script nell'editor di script. Quando viene definito un nuovo script, Designer aggiunge la sintassi di richiamo per tale hook alla finestra dell'editor di script. La sintassi di richiamo non può essere modificata. Designer aggiunge anche il testo del corpo di esempio che può essere modificato in base alle esigenze. (Il testo del corpo iniziale viene impostato come commento e non viene eseguito se non si rimuovono gli indicatori di commento).

Designer fornisce un editor di script per VBScript e Perl e indica il tipo di editor nella barra dei titoli della finestra. Verificare che sia attivo l'editor corretto prima di scrivere il codice.

Contesto operativo per utilizzare gli script di hook

Il processo di scrittura di hook VBScript e Perl è semplificato dal momento che il sistema operativo è congruente. Prima che un hook richiami uno script VBScript o Perl, il software Rational ClearQuest crea un oggetto Sessione e registra l'utente nel sistema. Poiché tutti gli hook (inclusi gli script globali) sono eseguiti dal contesto del record corrente, viene fornito un oggetto Entità che corrisponde a tale record. Gli script globali condividono l'oggetto Entità associato all'hook che lo ha richiamato.

All'interno di uno script, è possibile richiamare i metodi di Entità senza specificare un identificativo iniziale. Ad esempio, è possibile richiamare il metodo GetSession dell'Entità nel seguente modo:

set curSession = GetSession 
 

Quando i metodi vengono richiamati in questo modo, il software Rational ClearQuest presuppone il richiamo di un metodo dell'oggetto Entità implicito trasferito all'hook. Se si desidera fare riferimento a questo oggetto Entità esplicitamente, è possibile utilizzare il nome del tipo di record come identificativo per l'oggetto. L'utilizzo di questo identificativo può chiarire il codice che gestisce più oggetti Entità alla volta, come nel seguente modo, che contrassegna un'entità come duplicato di un altro:

set curSession = GetSession  
 idName = GetFieldValue("id").GetValue  
 set currentObj = curSession.GetEntity("defect", idName)  
 ' Mark the entity with ID="SAMPL00000031" as a duplicate of this entity.
 ' Use the action named "duplicate".  
 set dupEntityObj = curSession.GetEntity("defect", "SAMPL00000031") 
 curSession.MarkEntityAsDuplicate dupEntityObj, currentObj, "duplicate"

Poiché gli script possono influire sul funzionamento di un campo, è opportuno progettare e verificare attentamente il codice hook. Ad esempio, se un hook richiede che un campo contenga alcuni valori, il campo diventa obbligatorio anche se il funzionamento non è impostato su MANDATORY.

Considerazioni sul test degli hook

Il codice hook, se non viene scritto correttamente, può introdurre errori non immediatamente evidenti in fase di runtime. Un hook verrà compilato quando si convalida lo schema e ogni errore di sintassi o di grammatica verrà contrassegnato. Verificare uno schema con un database di test prima di eseguire il checkin ed eseguire il backup del database dell'utente prima di applicare le modifiche dello schema. Per ulteriori informazioni, consultare Test dello schema con un database di test.

Quando vengono pianificati gli hook, considerare quanto segue:

Hook in un ambiente replicato

Molti problemi correlati agli hook in esecuzione in un ambiente replicato sono gli stessi di quelli relativi al blocco dei database in una singola sede. Anche il test funzionale degli hook è la stessa in una singola sede o in un ambiente replicato. Tuttavia, l'esecuzione di alcuni hook ClearQuest può essere diversa in un ambiente replicato rispetto ad un ambiente con singola sede. Ad esempio, gli hook che aggiornano altri record nel contesto dell'azione di un record possono rilevare errori se l'altro record non è amministrato nella sede corrente e, quindi, non è modificabile.

Ciascun record del database può solo essere aggiornato nella sede in cui viene amministrato (ciò viene indicato dal nome della sede della replica nel campo ratl_mastership del record). Nelle applicazioni complesse, è possibile aggiornare più record come parte di una transazione complessa. Al momento della progettazione e del test degli hook per un ambiente replicato, è necessario tenere in considerazione questi principi.

Per le applicazioni complesse in un ambiente replicato con record collegati tra loro, la progettazione dello schema deve gestire i seguenti casi:
  • Il record padre non è modificabile a causa dell'amministrazione dominio. Ad esempio, non è possibile modificare il record padre se non è amministrato nella sede corrente.
  • È possibile modificare il record padre (amministrato nella sede corrente), ma non è possibile modificare un record subordinato a causa dell'amministrazione dominio (non amministrato nella sede corrente).

Consultare anche Blocco di record e Convalida di schemi .

Script installati dai package

Quando si installa un package, gli hook del campo o gli script del record possono essere aggiunti allo schema. Questi script fanno parte del package, non del codice hook.

Gli script del package non possono essere eliminati o modificati e non fanno parte del codice che appartiene a uno schema. Per questo motivo, non vi è alcuna relazione tra l'impostazione del linguaggio predefinito scelta per il codice hook e il linguaggio in cui gli hook che appartengono a un package sono implementati.


Feedback