Controllo delle operazioni di modifica aggiornamento multirecord

In qualità di amministratore ClearQuest o designer di schemi, l'utente può scrivere il codice hook che utilizza le informazioni sullo stato di aggiornamento multirecord per implementare i controlli di aggiornamento multirecord.

Ad esempio, lo schema potrebbe limitare i record o i tipi di record modificabili, i campi modificabili, la persona che può eseguire operazioni di aggiornamento multirecord o impedire ulteriori modifiche quando il conteggio degli errori raggiunge il limite. Sono inoltre compresi i limiti basati sul tipo di record, il record progetto associato, l'utente corrente o l'appartenenza al gruppo.

Le informazioni sullo stato di aggiornamento multirecord vengono fornite allo schema nella variabile di sessione ratl_MultiModifyBatchStatus. Il valore della variabile di sessione ratl_MultiModifyBatchStatus si compone dei seguenti valori numerici, nell'ordine riportato. Ciascun valore è numerico ed è separato da una nuova riga.
  • Il numero totale di record, incluso il record modello
  • L'ordinale del record corrente, compreso tra 1 e il numero totale di record. Il valore ordinale del record modello è 1.
  • Il numero di aggiornamenti non riusciti
L'ordinale record può essere utilizzato per determinare quando il record modello dell'aggiornamento multirecord è in fase di modifica. Un valore ordinale pari a 2 o superiore indica che la riproduzione è in corso e che l'aggiornamento multirecord è attualmente operativo sul record che corrisponde al valore ordinale. Ad esempio, si supponga di eseguire un aggiornamento multirecord su 13 record. Quando il record modello è in fase di modifica, il valore della variabile di sessione ratl_MultiModifyBatchStatus è "13 1 0" (con nuove righe per gli spazi). Quando l'aggiornamento multirecord viene riprodotto sul quinto record senza errori, il valore di ratl_MultiModifyBatchStatus è "13 5 0". Quando l'aggiornamento multirecord viene riprodotto sul nono record, dopo il verificarsi di due errori sui record precedenti, il valore di ratl_MultiModifyBatchStatus è "13 9 2".

Le variabili di sessione ratl_MultiModifyBatchStatus eratl_MultiModifyBatchMode vengono impostate quando l'aggiornamento multirecord esegue un'operazione su un record che causa l'esecuzione di un hook. Esempi di tali tipi di operazioni sono tutte le fasi dell'azione, azioni alias di script del record, modifiche del campo, hook di elenco selezioni, qualsiasi hook che può essere eseguito per le operazioni di modifica su qualsiasi record, e anche un hook non incluso nell'aggiornamento multirecord.

Il seguente esempio mostra come verificare che il record corrente sia quello su cui l'aggiornamento multirecord sta operando. Questo esempio è destinato ad essere utilizzato in hook di controllo accessi dell'azione. Dopo che l'hook di controllo dell'azione ha verificato che l'aggiornamento sia in corso, l'hook verifica il il conteggio degli errori. Se sono presenti 10 o più errori, viene utilizzata l'istruzione die () Perl per rilevare l'errore. L'aggiornamento multirecord continuerà ad elaborare tutti i record della serie di risultati dell'aggiornamento multirecord e questo hook di esempio continuerà a contrassegnare ciascun record successivo con un errore.

$result = 1;
# If doing multirecord update, check if it has too many errors.
   #
   my $mru_id = $session->GetNameValue("ratl_MultiModifyBatchMode");
   if ($mru_id ne "") {
      my $me = $entity->GetDisplayName();
      if ($mru_id eq $me) {
         # Yes, currently doing Multi-Record Update on the current record.

         my $status = $session->GetNameValue("ratl_MultiModifyBatchStatus");
         my ($count, $ordinal, $failures, $ignore) = split('\n', $status, 4);

         if ($failures > 10) {
            die("This multirecord update has encountered too many errors ($failures). No more updates are allowed.")
         }
      }
   }

Feedback