【问题标题】:Maximo automation yesno dialog fails in 7.6.1.1 but not in 7.6.0.9Maximo 自动化 yesno 对话框在 7.6.1.1 中失败,但在 7.6.0.9 中失败
【发布时间】:2020-08-30 08:40:48
【问题描述】:

我有一些在 Maximo 7.6.0.9 中显示是/否对话框的相对简单的代码。尽管使用了兼容性选项,但移植到 Maximo 7.6.1.1 根本不起作用。没有显示对话框,调试表明它不知道是和否的常量是什么,这让我相信我没有正确指定服务包,但我不清楚如何使这项工作。

在 Maximo 7.6.0.9 和 WebSphere 8.5.5.4 下运行的代码在以下情况下失败: Maximo IBM Maximo Asset Management 7.6.1.1 Build 20190514-1348 DB Build V7611-01,websphere 9.0.5.1

这是基本的自动化脚本:

load("nashorn:mozilla_compat.js");

importClass(Packages.psdi.mbo.MboRemote);

importClass(Packages.psdi.mbo.MboConstants);

importClass(Packages.psdi.mbo.MboSetRemote);

importClass(Packages.com.ibm.tivoli.maximo.script.ScriptService);

importClass(Packages.psdi.util.MXApplicationException);

importClass(Packages.psdi.server.MXServer);

importClass(Packages.psdi.iface.mic.InvokeChannelCache);

importClass(Packages.psdi.mbo.GLFormat);





var attTest = processAnyAttachments(mbo);







function queryuser(mbo) {

    service.log(scriptName + ".JS - entering queryuser(mbo)");

    service.log(scriptName + ".JS - service.YNC_NULL = " + service.YNC_NULL +

    ", service.YNC_NO = " + service.YNC_NO + ", service.YNC_YES = " + service.YNC_YES);

    service.log(scriptName + ".JS - service = " + service);

    var answer = service.yncuserinput();

    if (answer == service.YNC_NULL) {

        service.yncerror("slcfinance", "nopoattachments");

    } else {

        service.log(scriptName + ".JS - answer != service.YNC_NULL, but: " + answer);

    }

    if (answer == service.YNC_NO) {

        service.log(scriptName + ".JS - answer == service.YNC_NO");

        service.error("slcfinance", "usercancel");

    } else {

        service.log(scriptName + ".JS - answer != service.YNC_NO, but: " + answer);

    }

    service.log(scriptName + ".JS - leaving queryuser(mbo)");

}



function processAnyAttachments(mbo) {

    service.log(scriptName + ".JS - entering processAnyAttachments(mbo)");

    var retVal = true;



    var doclinksMSR = mbo.getMboSet("DOCLINKS");

    if ((doclinksMSR != null) && (!doclinksMSR.isEmpty())) {

        service.log(scriptName + ".JS - some doclinks found");

    } else {

        service.log(scriptName + ".JS - no doclinks found");

        if (interactive) {

            service.log(scriptName + ".JS - invoking queruser(mbo)");

            retVal = queryuser(mbo);//TBD MAKE THIS WORK

            service.log(scriptName + ".JS - Done invoking queruser(mbo)");

        }

    }

    service.log(scriptName + ".JS - leaving processAnyAttachments(mbo) - retVal = " + retVal);

    return retVal;

}

我尝试使用类型为“i”和“e”的 ync 消息,以防万一它在那里没有变化。

有人可以告诉我如何进行这项工作吗?否则,我将不得不改用 jython,这相当费力。谢谢

好的,我不确定我是否犯了错误,但我的输出现在看起来像这样: -- 导入或不导入 serviceScript 都没有关系

ScriptMboEventListener Event maximo.po.update has been fired for script POBEFORESAVE launch point POBEFORESAVE
POBEFORESAVE.JS - entering processAnyAttachments(mbo)
POBEFORESAVE.JS - no doclinks found
POBEFORESAVE.JS - invoking queruser(mbo)
POBEFORESAVE.JS - entering queryuser(mbo)
POBEFORESAVE.JS - service.YNC_NULL = undefined, service.YNC_NO = undefined, service.YNC_YES = undefined
POBEFORESAVE.JS - service = com.ibm.tivoli.maximo.script.ScriptService@5db5a021
POBEFORESAVE.JS - answer != service.YNC_NULL, but: -1
POBEFORESAVE.JS - answer != service.YNC_NO, but: -1
POBEFORESAVE.JS - leaving queryuser(mbo)
POBEFORESAVE.JS - Done invoking queruser(mbo)
POBEFORESAVE.JS - leaving processAnyAttachments(mbo) - retVal = undefined  

   update 20300710- I think it is a bug in 7.6.1.1

【问题讨论】:

  • 我认为您不需要导入脚本服务;我认为这已经隐含地赋予了脚本。反过来,这应该意味着知道那些 YNC 常量是什么应该没有问题(您的问题提供的唯一错误提示)。当它运行时,你实际上在日志中得到了什么?堆栈跟踪是否有错误?
  • 我可能犯了一个错误。我会将输出粘贴到响应中。
  • 这很奇怪。您确实有一个服务对象,但对象的常量没有定义?我可以在我反编译的 7.6.1.1 代码中看到它们。您能否从已部署的耳朵中取出 com.ibm.tivoli.maximo.script.ScriptService 类并对其进行反编译以确保其中有常量?如果不是,那么您部署的耳朵可能有问题,也许您的安装有问题。如果它们在那里,可能是 JavaScript 引擎中的一些错误将它们排除在外?
  • 与此同时,您可以自己声明常量。 YNC_CANCEL = 4; YNC_NO = 16; YNC_NULL = -1; YNC_OK = 2; YNC_YES = 8 developer.ibm.com/static/site-id/155/maximodev/7609/maximocore/…

标签: javascript automation maximo


【解决方案1】:

我向 IBM 提交了一个案例。似乎这与 Nashorn 决裂了。 他们给我发了一个新罐子使用,我还不得不接受@Dex 的建议并声明常量,因为它们不再可见。

【讨论】:

    【解决方案2】:

    我必须更改所有比较运算符(即“!=”到“!==”和“==”到“===”)

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多