重複レコードを更新して親レコードと一致させる

以下のコード例は、レコード (エンティティ) に重複 (子) があるかどうかを確認します。 ある場合、フックはアクション名 dupone でそれぞれの重複を編集し、オリジナル (親) レコードがテストされていることを示すように action_info フィールドを設定します。

注: アクション通知フックを使用して、重複レコードとオリジナル レコードを同期化します。アクション通知フックは、レコードがデータベースに正常にコミットされた後で起動されます。アクション通知フックの代わりに、アクション コミット フックを使用できます。しかし、アクション コミット フックを使用するにはリスクがあります。親レコードがデータベースにコミットされていない 場合に、子レコードがデータベースにコミットされる と、レコードが非同期になります。ネスト化されたアクションを使用することもできます。「アクションとアクセス制御」および ネストされたアクション を参照してください。

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 {

} 

フィードバック