Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Maximo automation yesno对话框在7.6.1.1中失败,但在7.6.0.9中未失败_Javascript_Automation_Maximo - Fatal编程技术网

Javascript Maximo automation yesno对话框在7.6.1.1中失败,但在7.6.0.9中未失败

Javascript Maximo automation yesno对话框在7.6.1.1中失败,但在7.6.0.9中未失败,javascript,automation,maximo,Javascript,Automation,Maximo,我有一些相对简单的代码,在Maximo 7.6.0.9中显示“是/否”对话框。尽管使用了兼容性选项,但移植到Maximo 7.6.1.1根本不起作用。没有显示对话框,调试表明它不知道yes和No的常量是什么,这使我相信我没有正确指定服务包,但我不清楚如何使其工作 在Maximo 7.6.0.9和WebSphere 8.5.5.4下工作时,代码在以下情况下失败: Maximo IBM Maximo资产管理7.6.1.1构建20190514-1348 DB构建V7611-01,websphere 9

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

在Maximo 7.6.0.9和WebSphere 8.5.5.4下工作时,代码在以下情况下失败: Maximo IBM Maximo资产管理7.6.1.1构建20190514-1348 DB构建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

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

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

我认为您不需要导入脚本服务;我认为这已经隐式地提供给了脚本。反过来,这应该是正确的意味着知道这些YNC常量是什么不会有问题(您的问题提供的唯一错误提示)。运行时,您在日志中实际得到了什么?堆栈跟踪是否有错误?我可能犯了一个错误。。我将在repsonse中粘贴输出。这很奇怪。您确实有一个服务对象,但对象的常量没有定义?我可以在我反编译的7.6.1.1代码中看到它们。您可以获取com.ibm.tivoli.maximo.script吗。ScriptService类从您已部署的ear中删除,并对其进行反编译以确保常量在其中?如果没有,则说明您已部署的ear和您的安装有问题。如果它们在其中,则可能JavaScript引擎中有一些错误将其删除?同时,您可以自己声明常量。YNC\u可以CEL=4;YNC_NO=16;YNC_NULL=-1;YNC_OK=2;YNC_YES=8