Contrôle des opérations d'édition par mise à jour multi-enregistrement

En tant qu'administrateur ou concepteur de schémas ClearQuest, vous pouvez écrire un code de point d'ancrage qui utilise les informations de statut de mise à jour multi-enregistrement afin d'implémenter des contrôles de mise à jour multi-enregistrement.

Par exemple, le schéma pourrait limiter les enregistrements, les types d'enregistrement ou les zones qu'il est possible de modifier, les personnes qui peuvent effectuer des opérations de mise à jour multi-enregistrement ou empêcher des changements lorsque le nombre d'erreurs atteint sa limite. Parmi les autres possibilités, on compte des limites basées sur le type d'enregistrement, sur un enregistrement de projet associé, sur l'utilisateur en cours ou sur l'appartenance au groupe.

Les informations de statut de mise à jour multi-enregistrement sont fournies au schéma dans la variable de session ratl_MultiModifyBatchStatus. La valeur de la variable de session ratl_MultiModifyBatchStatus est composée des valeurs numériques suivantes dans l'ordre affiché. Chaque valeur numérique est séparée par un retour à la ligne.
  • Nombre total d'enregistrements, enregistrement modèle compris.
  • Valeur ordinale de l'enregistrement en cours, comprise entre 1 et le nombre total d'enregistrements. La valeur ordinale de l'enregistrement modèle est 1.
  • Nombre de mises à jour qui ont échoué.
Il est possible d'utiliser la valeur ordinale d'un enregistrement afin de déterminer le moment pendant lequel l'enregistrement modèle de mise à jour multi-enregistrement est édité. Si la valeur ordinale est supérieure ou égale à 2, alors l'exécution est en cours et la mise à jour multi-enregistrement a lieu sur l'enregistrement correspondant à la valeur ordinale indiquée. Par exemple, imaginons que vous effectuez une mise à jour multi-enregistrement sur 13 enregistrements. Lorsque l'enregistrement modèle est en cours d'édition, la valeur de la variable de session ratl_MultiModifyBatchStatus est "13 1 0" (des retours à la ligne remplacent les espaces). Lorsque la mise à jour multi-enregistrement est exécutée sur le cinquième enregistrement sans avoir rencontré d'incident, la valeur de ratl_MultiModifyBatchStatus est "13 5 0". Lorsque la mise à jour multi-enregistrement est exécutée sur le neuvième enregistrement après avoir rencontré deux incidents sur des enregistrements précédents, la valeur de ratl_MultiModifyBatchStatus est "13 9 2".

Les variables de session ratl_MultiModifyBatchStatus et ratl_MultiModifyBatchMode sont définies lorsqu'une mise à jour multi-enregistrement effectue une opération sur un enregistrement qui provoque l'exécution d'un point d'ancrage. Comme exemple d'opération, il possible d'utiliser toutes les phases d'action, les actions d'enregistrement d'alias de scripts, les changements de zone, les points d'ancrage des listes d'options, tout point d'ancrage pouvant exécuter des opérations d'édition sur un enregistrement et même un point d'ancrage qui n'est pas inclus dans la mise à jour multi-enregistrement.

L'exemple ci-dessous montre comment vérifier que l'enregistrement en cours est bien l'enregistrement sur lequel la mise à jour multi-enregistrement intervient. L'objectif de cet exemple est d'être utilisé dans un point d'ancrage de contrôle d'accès par action. Après que ce point d'ancrage vérifie si la mise à jour multi-enregistrement est en cours, il vérifie le nombre d'incidents. S'il y a au moins 10 incidents, il utilise une instruction Perl die () afin de provoquer une erreur. La mise à jour multi-enregistrement va poursuivre le traitement de tous les enregistrements dans l'ensemble de résultats de mise à jour multi-enregistrement. Ensuite le point d'ancrage en exemple va marquer tous les enregistrements suivants comme étant en échec.

$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("Cette mise à jour multi-enregistrement a rencontré trop d'erreurs ($failures). Aucune autre mise à jour n'est autorisée.")
         }
      }
   }

Feedback