隐式变量未在自动化脚本中定义

Implicit variables are not defined in automation scripts

根据 IBM 文档,在 IBM Control Desk / Maximo 中创建自动化脚本时,会创建一个隐式变量数组:

Implicit variables are variables that you do not define. These variables are automatically provided by the framework. Some implicit variables are valid only when associated with a declared variable while others are not associated with any other variables.

In addition to implicit variables, a Maximo® business object (MBO) is also available to every script. You refer to the current business object by using the mbo reserved word.

来自这些文档:

https://www.ibm.com/support/knowledgecenter/SSANHD_7.6.0/com.ibm.mbs.doc/autoscript/r_variables_automation_scripts.html

当尝试在新创建的没有启动点的自动化脚本中使用 mbo 和以下代码时:

mboSet = mbo.getThisMboSet()

我收到以下错误消息:

NameError: name 'mbo' is not defined

这对我来说似乎很奇怪,因为 mbo 是一个应该可以访问的隐式变量。

我是 Maximo 的新手,目前还没有足够的经验来调试这个问题。我将如何访问 mbo 变量并使用它?提前致谢。

你说这是一个没有启动点的新创建的自动化脚本?脚本实际上是如何 运行 然后得到那个错误的?你按下测试按钮了吗?如果是这样,那就是问题所在。测试不会 运行 上下文中的脚本(这些变量可以存在的地方)。您将需要创建一个启动点来触发您的脚本,然后您应该会看到隐式变量开始发挥作用。

mbo 表示单个 psdi.mbo.MboSet 中的单个 psdi.mbo.Mbo(请参阅 JavaDocs),或者同义地表示单个 table 中的单个行。启动点是选择要发送到您的脚本的记录作为 mbo

如果您直接 运行 您的自动化脚本,通过测试按钮或通过恢复执行按钮,Maximo 应该随机选择 table 和 table 中的哪一行通过将您的脚本设为 mbo?这个反问的答案是“none”——Maximo 不应从某些 table 中随机选择某些记录,但在这种情况下不应定义 mbo。因此,该错误是您提出的情况下的预期行为。

如果您希望您的脚本能够直接 运行 以及从启动点,您可以检查 if "mbo" not in locals(): 然后自己设置 mbo。我将此类自动化脚本称为“按需自动脚本”,并且经常使用它们。如果您花一些时间阅读 JavaDocs,您也可能到达那里!