オブジェクト・スクリプトの複製

重複オブジェクト・スクリプトを使用して、オブジェクトが複製されたときにアクションを実行することができます。 例えば、複製オブジェクト・スクリプトを使用して、オブジェクトの複製時にカスタム子オブジェクトを複製することができます。

重複オブジェクト・スクリプトは、起動ポイントを持たない特殊なタイプの自動化スクリプトです。 スクリプトの名前は、 OBJECTNAME.DUPLICATE または OBJECTNAME.AFTERDUPLICATEの形式でなければなりません。 例えば、購入注文 (PO) に使用するスクリプトを作成する場合は、 PO.DUPLICATEという名前を付ける必要があります。

.DUPLICATE イベントおよび .AFTERDUPLICATE イベントを使用して、レコードが複製されるときに発生するロジックを制御します。 以下の例は、この機能を使用できるシナリオです。

  • 複写中にスキップできない値を除去します。
  • 2 つのレコード間の参照を維持するため。
  • デフォルトで処理されない可能性がある他の子オブジェクト (カスタム・オブジェクトなど) をコピーする場合。

.DUPLICATE.AFTERDUPLICATE の違いは、コードがトリガーされたときです。

.DUPLICATE は、レコードをコピーするための Maximo ® ビジネス・オブジェクト (MBO) メソッドで発生します。 自動化スクリプトまたは統合の内部を含め、MBO で duplicate() または copy() が呼び出されるたびに、 .DUPLICATE スクリプトが実行されます。 このスクリプトは、DOCLINKS や POLINES などの子データ・セットがコピーされる前に実行されます。 これらの子データ・セットをコピー後に変更する必要がある場合は、子データ・セットに対応する名前のスクリプト ( POLINE.DUPLICATEなど) を作成する必要があります。 あるいは、 .AFTERDUPLICATE イベントを使用することもできます。

.AFTERDUPLICATE は、非 Graphite ベースのユーザー・インターフェースおよびレコードを複製するための REST API アクションから拡張された DataBean クラスで処理されます。 通常はレコードが重複する原因となるその他のイベント (自動化スクリプト内での mbo.duplicate() の呼び出しなど) では、このスクリプトは実行されません。 この制限は、このイベントを使用できるかどうかを判別する上で重要です。 .AFTERDUPLICATE は、すべての重複ロジックが発生した後に発生します。 例えば、MBO の duplicate() 機能が子データ・セットにコピーされる場合、それらの子データ・セットは .AFTERDUPLICATE の実行時にコピーされます。

以下の表で、重複するオブジェクト・スクリプトの暗黙的変数について説明します。
表 1. 重複オブジェクト・スクリプトの暗黙的変数
変数名 説明
MBO 複製された元の MBO レコード。
重複 (dupmbo) 新規 MBO レコード。
以下のスクリプトは、重複オブジェクト・スクリプトの例です。
# Clear out existing values
dupmbo.setValueNull("ASSETNUM")

# Copy custom object set into new record
# NOTE: You most likely would need to update the values that point to your record, 
# such as WONUM, to the new record.
origChildSet=mbo.getMboSet("MYCUSTOMRELATIONSHIP")
origChildSet.copy(dupmbo.getMboSet("MYCUSTOMRELATIONSHIP"))