我正在开发自动化脚本,但遇到下一个错误:
BMXAA7837E-发生错误,阻止了BAX_ISSUEGL启动点的BAX_ISSUEGL脚本运行。TypeError: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";
第5行的问题是您将Mbo
大写了-表示您引用的是导入的类psdi.mbo.Mbo
。但是启动点会将名为mbo
的隐式变量传递给脚本,并且mbo
将是Mbo
(的子类)的实例。
Python方法是类中的函数,并且它们将self
作为第一个参数。因此,在mbo.getMboSet("RELATIONSHIPNAME")
中,Python将在内部转换该getMboSet(mbo, "RELATIONSHIPNAME")
。通过引用该类而不是该类的实例,您实际上忽略了self
参数。这就是为什么当getMboSet()
的JavaDoc显示带有1、2或3个参数的方法的重载时,告诉您Mbo.getMboSet()
期望“ 2-4个参数”的原因。
FYI:对于您粘贴的代码,在第5行上将Mbo
更改为mbo
时,就不需要任何from ... import
行。仅当您直接引用类时才需要这些,例如第5行做错了。