更新服务地址时调用自动脚本(具有 WO 对象启动点)?

Invoke autoscript (has WO object launch point) when Service Address is updated?

我在 Maximo 7.6.1.1 中有一个 WO。

当用户更新服务地址时,我想调用一个自动脚本,该脚本在 WORKORDER 对象.

上有一个对象启动点



有没有办法在更新服务地址时调用自动脚本(在 WORKORDER 对象上有一个对象启动点)?

我不相信你可以。一个对象启动点就是告诉 Maximo 要为以下事件监视哪个对象,而不是确切地告诉 Maximo 在哪个对象上启动脚本(尽管出于各种原因,这两者必须捆绑在一起)。

不过,您可以做的是将您的启动点放在您真正想要的服务地址上,然后在您的脚本中获取您想要使用的 on-screen/in-memory 工作指令并执行那。这是通过调用 getOwner() 方法或特殊的“:owner”(可能是和号,我记不清了)关系参考来完成的。

您应该会看到 if mbo.getOwner() returns 内容,如果 something.getName()WORKORDER 以及您期望的工作顺序。根据所有这些,您可以使用如下代码调用其他自动脚本:

from java.util import HashMap
lpVars = HashMap()
lpVars.put("mbo",mbo.getOwner())
#repeat the last line for any other implicit/explicit variables your target
#script is going to use / expect to be defined
service.invokeScript("YOURSCRIPTNAME", lpVars)
someVar = lpVars.get("someVarDefinedInYOURSCRIPTNAMEWhenItEnded")

注意使用 lpVars 变量的工作。我用它来存储我正在调用的脚本期望定义的 "implicit"/"explicit" 变量(例如 "mbo")。基本上,我正在执行启动点通常执行的设置,因为我的代码是启动点。然后,由于我是启动点,我可以访问脚本结束时定义的任何变量,Maximo 将它们添加到/更新 lpVars.

您可以创建可重复使用的 "library" 脚本,您可以像传教士解释的那样直接调用这些脚本。请参阅此处的 IBM 示例:https://www.ibm.com/support/knowledgecenter/SSFGJ4_7.6.0/com.ibm.mbs.doc/autoscript/c_example_reuse.html

所以您可以让您的 WO 对象启动点调用库脚本,让您的 SA 对象启动点调用相同的库脚本。然后,您只需根据需要更改一个脚本,这很好。

这是我想出的解决方案:

mboName=mbo.getName()

if mboName == 'WOSERVICEADDRESS':
  mboWO = mbo.getOwner()
elif mboName == 'WORKORDER':
  mboWO=mbo

sax = mboWO.getDouble("SERVICEADDRESS.LONGITUDEX")
say = mboWO.getDouble("SERVICEADDRESS.LATITUDEY")

if sax and say:
    mboWO.setValue("longitudex", sax)
    mboWO.setValue("latitudey", say)

elif mboWO.getString("ASSETNUM") and mboWO.getBoolean("ASSET.PLUSSISGIS") == 1:
    mboWO.setValue("longitudex", mboWO.getDouble("ASSET.longitudex"))
    mboWO.setValue("latitudey", mboWO.getDouble("ASSET.latitudey"))

elif mboWO.getString("LOCATION") and mboWO.getBoolean("LOCATION.PLUSSISGIS") == 1:
    mboWO.setValue("longitudex", mboWO.getDouble("LOCATION.longitudex"))
    mboWO.setValue("latitudey", mboWO.getDouble("LOCATION.latitudey"))
else:
    mboWO.setValue("longitudex", None)
    mboWO.setValue("latitudey", None)

脚本在多个对象上有启动点: