Javascript Maximo automation yesno对话框在7.6.1.1中失败,但在7.6.0.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 以下是基本自动化脚本: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
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