Scripts d'objet en double
Vous pouvez utiliser des scripts d'objet en double pour effectuer des actions lorsque des objets sont dupliqués. Par exemple, vous pouvez utiliser un script d'objet en double pour dupliquer un objet enfant personnalisé lors de la duplication d'objets.
Un script d'objet en double est un type spécial de script d'automatisation sans point de lancement. Le nom du script doit être au format OBJECTNAME.DUPLICATE ou OBJECTNAME.AFTERDUPLICATE. Par exemple, si vous souhaitez créer un script à utiliser pour un bon de commande, vous devez l'appeler PO.DUPLICATE.
A l'aide des événements .DUPLICATE et .AFTERDUPLICATE , vous contrôlez la logique qui se produit lorsque des enregistrements sont dupliqués. Les exemples suivants sont des scénarios dans lesquels cette fonction peut être utilisée.
- Permet de supprimer les valeurs qui ne peuvent pas être ignorées lors de la duplication.
- Pour conserver une référence entre deux enregistrements.
- Pour copier d'autres objets enfant qui peuvent ne pas être traités par défaut, par exemple, des objets personnalisés.
La différence entre .DUPLICATE et .AFTERDUPLICATE est le moment où le code est déclenché.
.DUPLICATE se produit dans la méthode de l'objet métier Maximo (MBO) pour la copie de l'enregistrement. Chaque fois que duplicate() ou copy() est appelé sur l'objet MBO, y compris dans un script d'automatisation ou d'intégration, le script .DUPLICATE est exécuté. Ce script s'exécute avant que les fichiers enfant, tels que DOCLINKS ou POLINES, ne soient copiés. Si vous devez modifier ces ensembles de données enfant après leur copie, vous devez créer un script nommé pour l'ensemble de données enfant, tel que POLINE.DUPLICATE. Vous pouvez également utiliser l'événement .AFTERDUPLICATE .
.AFTERDUPLICATE est géré dans la classe DataBean qui est étendue à partir de l'interface utilisateur non graphique et de l'action d'API REST pour la duplication d'un enregistrement. D'autres événements qui provoquent généralement la duplication d'un enregistrement, tels que l'appel de mbo.duplicate() dans un script d'automatisation, ne provoquent pas l'exécution de ce script. Cette limitation est importante pour déterminer si cet événement peut être utilisé. .AFTERDUPLICATE se produit après toute la logique de duplication. Par exemple, si la fonction duplicate() d'un objet MBO est copiée dans des jeux de données enfant, ces jeux de données enfant sont copiés lors de l'exécution de .AFTERDUPLICATE .
| Nom de la variable | Description |
|---|---|
| MBO | Enregistrement MBO d'origine qui a été dupliqué. |
| dupmbo | Nouvel enregistrement 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"))