Objektscripts duplizieren

Sie können doppelte Objektscripts verwenden, um Aktionen auszuführen, wenn Objekte dupliziert werden. Sie können beispielsweise ein Script für doppelte Objekte verwenden, um beim Duplizieren von Objekten ein benutzerdefiniertes untergeordnetes Objekt zu duplizieren.

Ein Script für doppelte Objekte ist ein spezieller Typ von Automationsscript ohne Startpunkt. Der Name des Scripts muss das Format OBJECTNAME.DUPLICATE oder OBJECTNAME.AFTERDUPLICATEhaben. Wenn Sie beispielsweise ein Script für eine Bestellung erstellen möchten, müssen Sie es PO.DUPLICATEnennen.

Mit den Ereignissen .DUPLICATE und .AFTERDUPLICATE steuern Sie die Logik, die auftritt, wenn Datensätze dupliziert werden. Die folgenden Beispiele sind Szenarios, in denen diese Funktion verwendet werden kann.

  • Werte entfernen, die während der Duplizierung nicht übersprungen werden können.
  • Eine Referenz zwischen zwei Datensätzen verwalten.
  • Zum Kopieren anderer untergeordneter Objekte, die möglicherweise nicht standardmäßig verarbeitet werden, z. B. angepasste Objekte.

Der Unterschied zwischen .DUPLICATE und .AFTERDUPLICATE besteht darin, dass der Code ausgelöst wird.

.DUPLICATE tritt in der Maximo ® -Geschäftsobjektmethode (MBO) zum Kopieren des Datensatzes auf. Immer wenn duplicate() oder copy() im MBO aufgerufen werden, auch innerhalb eines Automationsscripts oder einer Integration, wird das Script .DUPLICATE ausgeführt. Dieses Script wird ausgeführt, bevor untergeordnete Dateien (z. B. DOCLINKS oder POLINES) kopiert werden. Wenn Sie diese untergeordneten Datensätze nach dem Kopieren ändern müssen, müssen Sie ein Skript erstellen, das nach dem untergeordneten Datensatz benannt ist, z. B. POLINE.DUPLICATE. Sie können auch das Ereignis .AFTERDUPLICATE verwenden.

.AFTERDUPLICATE wird in der Klasse DataBean verarbeitet, die über die nicht auf Graphite basierende Benutzerschnittstelle und die API-Aktion REST zum Duplizieren eines Datensatzes erweitert wird. Andere Ereignisse, die normalerweise dazu führen, dass ein Datensatz dupliziert wird, wie z. B. das Aufrufen von mbo.duplicate() innerhalb eines Automationsscripts, führen nicht dazu, dass dieses Script ausgeführt wird. Diese Einschränkung ist wichtig, um zu bestimmen, ob das Ereignis verwendet werden kann. .AFTERDUPLICATE tritt auf, nachdem die gesamte Logik für die Duplizierung aufgetreten ist. Wenn beispielsweise die Funktion duplicate() eines MBO in untergeordnete Datasets kopiert, werden diese untergeordneten Datasets kopiert, wenn .AFTERDUPLICATE ausgeführt wird.

In der folgenden Tabelle werden die impliziten Variablen für doppelte Objektscripts beschrieben.
Tabelle 1. Implizite Variablen für doppelte Objektscripts
Variablenname Beschreibung
MBO Der ursprüngliche MBO-Datensatz, der dupliziert wurde
dupmbo Der neue MBO-Datensatz
Das folgende Script ist ein Beispiel für ein doppeltes Objektscript:
# 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"))