【问题标题】:I got TypeError: getMboSet(): expected 2-4 args; got 1 in <script> while using MAXIMO Automation Script我得到 TypeError: getMboSet(): expected 2-4 args;使用 MAXIMO 自动化脚本时在 <script> 中获得 1
【发布时间】:2026-01-24 11:45:02
【问题描述】:

我正在开发一个自动化脚本,但出现下一个错误:

BMXAA7837E - 发生错误,导致 BAX_ISSUEGL 启动点的 BAX_ISSUEGL 脚本无法运行。 类型错误:getMboSet():预期 2-4 个参数;在第 5 行获得 1 更多信息

我正在使用 jython 2.5.2、MAXIMO 7.6.0.9。自动化是对象启动点自动化。

有人知道我为什么会收到错误消息吗?

自动化脚本:

from psdi.mbo import Mbo
from psdi.mbo import MboConstants

#Get object
issueCI = Mbo.getMboSet("ISSUECURRENTITEM")

#Get Storeloc and Accounts
storeloc=issueCI.getString("STORELOC");
debitacct=issueCI.getString("GLDEBITACCT");

if debitacct[0:4] != storeloc:
 errorgroup= "Credit Error";
 errorkey= "CreditError";

【问题讨论】:

    标签: automation jython maximo


    【解决方案1】:

    第 5 行的问题在于您将Mbo 大写——表明您指的是您导入的类psdi.mbo.Mbo。但是启动点会将一个名为mbo 的隐式变量传递给您的脚本,而mbo 将是Mbo(的子类)的一个实例。

    Python 方法是类中的函数,它们以self 作为第一个参数。因此,在mbo.getMboSet("RELATIONSHIPNAME") 中,Python 将在内部转换该getMboSet(mbo, "RELATIONSHIPNAME")。通过引用类而不是类的实例,您实际上忽略了 self 参数。这就是为什么当 Mbo.getMboSet() 的 JavaDocs 显示该方法的重载需要 1、2 或 3 个参数时,您被告知 getMboSet() 期待“2-4 个参数”。

    仅供参考:对于您粘贴的代码,一旦在第 5 行将 Mbo 更改为 mbo,您就不需要任何 from ... import 行。如果你直接引用类,你只需要那些,就像第 5 行错误的那样。

    【讨论】: