【问题标题】:Implicit variables are not defined in automation scripts自动化脚本中未定义隐式变量
【发布时间】:2021-05-18 11:05:33
【问题描述】:

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

隐式变量是您未定义的变量。这些 变量由框架自动提供。一些隐含的 变量仅在与声明的变量关联时才有效 而其他的则与任何其他变量无关。

除了隐式变量,Maximo® 业务对象 (MBO) 是 也可用于每个脚本。您指的是当前业务 对象使用 mbo 保留字。

来自这些文档:

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 变量并使用它?提前致谢。

【问题讨论】:

    标签: websphere jython maximo


    【解决方案1】:

    mbo 表示来自单个psdi.mbo.MboSet 的单个psdi.mbo.Mbo(请参阅JavaDocs),或同义词来自单个表的单个行。启动点选择将记录作为mbo 发送到您的脚本。

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

    如果您希望脚本能够直接运行以及从启动点运行,您可以检查if "mbo" not in locals():,然后自己设置mbo。我将此类自动化脚本称为“按需自动脚本”,并且我经常使用它们。如果您在 JavaDocs 上度过了一段美好的时光,您也可能会成功!

    【讨论】:

    • 哎呀! JavaDocs 不见了!关注this question,看看他们是否回来以及在哪里。
    【解决方案2】:

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

    【讨论】:

    • 我确实按下了测试按钮。当我有时间测试一个启动点是否可以解决我的问题时,我会回复你。
    • 我设法通过使用 MXServer 获取 mbo(没有启动点),并在我的情况下获取 CI。
    • 是的。正如 Preacher 指出的那样,您仍然可以使用测试选项甚至没有启动点做很多事情(有时 Maximo 只需要一个脚本来为其启动具有特定名称,没有启动点)。不过,您的问题是关于隐式变量的,所以这就是我要解决的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    相关资源
    最近更新 更多