Control de operaciones de edición de actualización multiregistro

Como diseñador de esquemas o administrador de ClearQuest, puede escribir código de enganche que utiliza información de estado de actualización de multiregistro para implementar controles de actualización multiregistro.

Por ejemplo, el esquema podría limitar los tipos de registro o registros que se pueden modificar, los campos que se pueden modificar, los usuarios que pueden realizar operaciones de actualización multiregistro o impedir que se realicen cambios adicionales cuando el número de errores alcanza un límite. Otras posibilidades podrían incluir límites basados en el tipo de registro, los registros de proyecto asociados, el usuario actual o la pertenencia a un grupo.

La información de estado de actualización multiregistro se proporciona al esquema en la variable de sesión ratl_MultiModifyBatchStatus. El valor de la variable de sesión ratl_MultiModifyBatchStatus está formada de los siguientes valores numéricos en el orden que se indica a continuación. Cada valor es numérico y se separa con un salto de línea.
  • El número total de registros, incluido el registro de plantilla.
  • El número ordinal del registro actual, con un rango que empieza en 1 y acaba en el número total de registros. El valor de número ordinal 1 corresponde al registro de plantilla.
  • Número de actualizaciones con anomalías.
El número ordinal del registro sirve para determinar cuándo se está editando el registro de plantilla de actualización multiregistro. El valor de número ordinal 2 o mayor indica que la reproducción está en marcha, y que la actualización de multiregistro está actualmente manipulando el registro que corresponde al valor del número ordinal. Por ejemplo, suponga que realiza una actualización multiregistro en 13 registros. Cuando se está editando una plantilla de registro, el valor de la variable de sesión ratl_MultiModifyBatchStatus es "13 1 0" (con saltos de líneas en lugar de espacios). Cuando se está reproduciendo la actualización multiregistro en el quinto registro sin anomalías, el valor de ratl_MultiModifyBatchStatus es "13 5 0". Cuando se está reproduciendo una actualización multiregistro en el noveno registro después de dos anomalías en los registros anteriores, el valor de ratl_MultiModifyBatchStatus es "13 9 2".

La variable de sesión ratl_MultiModifyBatchStatus y la variable de sesión ratl_MultiModifyBatchMode se establecen cuando la actualización multiregistro realiza una operación en un registro que hace que se ejecute un enganche. Ejemplos de tales operaciones son todas las fases de acción, las acciones de alias de script de registro, los cambios de campo, los enganches de lista de elecciones, cualquier enganche que se pueda ejecutar para operaciones de edición en cualquier registro, e incluso un enganche que no esté incluido en la actualización multiregistro.

En el siguiente ejemplo se muestra cómo comprobar que el registro actual es el registro con el que la actualización multiregistro está trabajando. Este ejemplo está pensado para ser utilizado en un enganche de control de acceso de acción. Después de que el enganche de control de acción comprueba que la actualización multiregistro está en curso, el enganche comprueba el número de anomalías. Si hay 10 o más anomalías, utiliza una sentencia Perl die () para lanzar un error. La actualización multiregistro continuará procesando todos los registros en el conjunto de resultados de actualización multiregistro, y este enganche de ejemplo continuará marcando cada registro posterior con una anomalía.

$result = 1;
# Si realiza una actualización multiregistro, compruebe si tiene demasiados errores.
   #
   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