复制对象脚本
复制对象时,可以使用重复的对象脚本来执行操作。 例如,复制对象时,可以使用重复的对象脚本来复制定制子对象。
重复的对象脚本是没有启动点的特殊类型的自动化脚本。 脚本名称的格式必须为 OBJECTNAME.DUPLICATE 或 OBJECTNAME.AFTERDUPLICATE。 例如,如果要创建要用于采购单 (PO) 的脚本,那么必须将其命名为 PO.DUPLICATE。
通过使用 .DUPLICATE 和 .AFTERDUPLICATE 事件,您可以控制重复记录时发生的逻辑。 以下示例是可以使用此函数的场景。
- 除去在复制期间无法跳过的值。
- 维护两个记录之间的引用。
- 复制缺省情况下可能无法处理的其他子对象,例如,定制对象。
.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 运行时将复制这些子数据集。
| 变量名称 | 描述 |
|---|---|
| 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"))