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    ' The current Session object
Dim parent_id    ' The current Entity's display name (ID string)
Dim dups  ' Array of all direct duplicates of this Entity
Dim dupvar    ' Variant containing a Link to a duplicate
Dim dupobj  ' The same Link, but as an Object rather than a Variant
Dim entity        ' The Entity extracted from the Link

If (HasDuplicates()) Then 
   Set session = GetSession 
   dups = GetDuplicates 
   parent_id = GetDisplayName 
   for each dupvar in dups 
      ' You could check these various functions for failures and 
      ' then report any failures to the user (for example, using
      MsgBox). 
      ' Failures are unlikely, but possible--for example, someone 
      ' could concurrently "unmark" an entity as a duplicate. 
      Set dupobj = dupvar 
      Set entity = dupobj.GetChildEntity 
      session.EditEntity entity, "dupdone" 
      SetFieldValue "action_info", _ 
            "Original " & parent_id & " is tested" 
      ' commit the record to the database if validation returns no
      ' errors

      status = entity.Validate 

     if status = "" then

         entity.Commit 
      else

          entity.Revert  

       End If
   Next 
End If 

Perl

my($session);    # The current Session object

my($links); # The reference to the links collection object

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 {

} 

Feedback