Actualización de registros duplicados para coincidir con el registro padre

El ejemplo de fragmento de código siguiente comprueba si el registro (entidad) tiene duplicados (hijos), en cuyo caso, el enganche edita cada uno de los duplicados con el nombre de acción dupone y establece el campo "action_info" para indicar que se ha probado el registro original (padre).

Nota: Los registros duplicados se sincronizan con el registro original utilizando un enganche de notificación de acción. Después de confirmar satisfactoriamente un registro en la base de datos, se lanza un enganche de notificación de acción. Puede utilizar un enganche de confirmación de acción en lugar de un enganche de notificación de acción. Sin embargo, la utilización de un enganche de confirmación de acción crea un riesgo: si el registro padre no se ha confirmado en la base de datos, pero los registro hijo se han confirmado en la base de datos, los registros no mantienen la sincronización. También puede utilizar acciones anidadas. Consulte los apartados "Acciones y control de acceso" y Acciones anidadas.

VBScript

Dim status
Dim session    ' El objeto Session actual
Dim parent_id  ' El nombre de visualización de la entidad actual
               '(serie de ID)
Dim dups       ' Matriz de todos los duplicados directos de esta entidad
Dim dupvar     ' Variant que contiene un enlace a un duplicado
Dim dupobj     ' El mismo enlace, pero como un objeto en lugar de como un
               ' valor Variant
Dim entity     ' La entidad extraída del enlace

If (HasDuplicates()) Then 
   Set session = GetSession 
   dups = GetDuplicates 
   parent_id = GetDisplayName 
   for each dupvar in dups 
      ' Se puede comprobar si hay anomalías en diversas funciones y 
      ' a continuación, informar sobre las anomalías al usuario
      '(utilizando, por ejemplo,
      MsgBox). 
      ' Las anomalías son poco probables, pero posibles. Por ejemplo,
      ' alguien 
      puede, al mismo tiempo, "quitar la marca" de una entidad
      ' como un duplicado. 
      Set dupobj = dupvar 
      Set entity = dupobj.GetChildEntity 
      session.EditEntity entity, "dupdone" 
      SetFieldValue "action_info", _ 
            "Original " & parent_id & " is tested" 
      ' confirmar el registro en la base de datos si la validación no
      ' devuelve errores

      status = entity.Validate 

     if status = "" then

         entity.Commit 
      else

          entity.Revert  

       End If
   Next 
End If 

Perl

my($session);    # El objeto Session actual

my($links); # La referencia al objeto de recopilación de enlaces

my($link);

my($cnt);

my($itm);

my($childID);



if ($entity->HasDuplicates()) {

    $session=$entity->GetSession();

    $links = $entity->GetDuplicates();

   $session->OutputDebugString("links is " . $links . "(" . ref ($links) . 
")\n" );

   $cnt = $links->Count();

   $session->OutputDebugString("count is " . $cnt . "(" . ref ($cnt) . 
")\nchildren:\n" );

   for ($i = 0; $i<$cnt; $i++) {

     $itm = $links->Item($i);

    $session->OutputDebugString("Item is " . $itm . "(" . ref ($itm) . ")\n";

     $childID = $itm->GetChildEntityId();

     $session->OutputDebugString($childID . "\n" );

     }

    $session->OutputDebugString("done");

   }

else {

} 


Comentarios