微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Maximo Automation JavaScript中的service.error或service.setWarning在UI上不显示弹出窗口

如何解决Maximo Automation JavaScript中的service.error或service.setWarning在UI上不显示弹出窗口

我正在尝试使用JavaScript为Maximo创建自动化脚本(动作启动点,由UI上的按钮触发),以执行一些数据验证,然后在弹出的窗口中显示无效数据。

  1. 我尝试调用service.setWarning(),但脚本仍在处理而不显示警告消息,如果以后进行一些UI交互,该警告消息将在以后随机显示
  2. 然后,我尝试使用service.error(),该错误消息应显示与Maximo中的异常消息类似的错误消息,该脚本确实停止运行,但是没有弹出消息。
  3. 如果我检查systemError.log,是否可以在日志中看到警告和错误消息?

那是什么原因造成的,如何使它正常运行?

EDIT1:这是脚本,我已经在数据库配置中设置了消息(消息组RFQ,消息键2vendORS):

    load("nashorn:mozilla_compat.js");
importPackage(Packages.psdi.security);
importPackage(Packages.psdi.mbo);
importPackage(Packages.psdi.server);

var mxServer = MXServer.getMXServer();
var userInfo = mxServer.getSystemUserInfo();

var rfqLineset = mbo.getMboSet("RFQLINE");
var totalCost = 0;
var current_datetime = new Date();
var today = current_datetime.toISOString();

for(var currMbo=rfqLineset.moveFirst(); currMbo!=null; currMbo=rfqLineset.moveNext()) { 
    totalCost = totalCost + currMbo.getDouble("LINECOST");
}

if (totalCost < 50000) {
    var rfqvendorSet = mbo.getMboSet("RFQvendOR");
    
    if (rfqvendorSet.count() > 2) {
        service.error("RFQ","2vendORS",null);
    }
}

Maximo版本7.6.1

EDIT2:我尝试了service.yncerror(“ RFQ”,“ 2vendORS”,null);应该会显示是/否错误弹出消息,但同样的问题,它只会出现在systemError.log

EDIT3:我进行了一些测试,发现如果我用Jython编写代码,则弹出窗口可以工作,但不能使用Javascript。怎么会这样?

谢谢。

解决方法

Maximo中的“警告”是随MBO集一起传送的一些数据。作为警告,他们不应该停止执行,只是让您知道一些重要的事情,但是他们甚至不会自己这样做。您需要在某些时候做一些事情以从集合中获取警告并显示它们。如果您不这样做,则Maximo会自行执行某些操作(通常是针对那些添加了Maximo本身的警告的操作),但是当您实际希望将其显示时,可能不是这样。我已经看到很多人对此感到困惑,却不明白这些警告是什么或它们的实际工作方式。

“错误”是指逻辑停止消息。出了点问题,用户需要在运行更多逻辑之前了解它。这听起来更像是您的用例。错误仍然是要传达给用户的消息,因此您必须为error方法提供一条消息。但是,您不能仅将所需的任何字符串作为消息放入其中(嗯,您不应该这样做),因为这不允许Maximo翻译消息或填写消息变量。这也意味着无论何时要更改消息,都必须更改代码,而不是简单地实时更改配置。相反,您需要转到“数据库配置”并在其中添加新消息。执行此操作时,将为您的消息创建一个消息组和消息密钥值。现在,当您调用错误方法时,您将传入该错误组和错误键作为参数。 Maximo将接受该消息,在消息表中查找它,然后显示与该组和您所配置语言的键相关的消息。它也可以在此时替换一些特殊的消息变量,但这是另一堂课。

例如,您可以转到“数据库配置”,然后打开消息对话框,并添加一条消息“您在“计数”字段中输入的值不是数字。请输入数字,然后继续。”并给它一个消息组“ MyCustomGrp”和一个密钥“ NotANumber”。然后,在您的代码中,当您想要停止代码并显示该消息时,您将调用service.error("MyCustomGrp","NotANumber")

您可能遇到的另一个潜在问题是,您确实需要运行以某种方式将错误引发错误的代码附加到交互式用户会话上。通常,这是给定的,但是您可能会做一些事情,这会使您的代码与该交互式用户会话分开运行。如果您在日志中看到错误消息,则说明您已正确设置了该部分,这很可能意味着您的代码不属于交互式用户会话。在这里,了解其余代码非常重要。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。