运行 通过 URL 的自动化脚本

Run an automation script via a URL

Maximo 7.6.1.1:

我想通过在单独的系统中调用 URL 来 运行 Maximo 自动化脚本。

可以这样做吗?

这是一个很好的用例,也是我们过去几天一直在努力解决的问题。

  1. 创建自动化脚本。 - 我的名字叫 automation_api_test
  2. 使用浏览器通过 API 手动调用它,以确保您可以实际将其获取到 运行。 (%servername%/maximo/oslc/script/automation_api_test?var1=1212321232&var2=1555&site=OPS&_lid=wilson&_lpwd=wilson)
  3. 像编写常规自动化脚本一样编写脚本。这是一个可以从 URL 中读取一些参数并使用这些参数在核心系统中执行操作的方法。

    importPackage(Packages.psdi.server);
    importPackage(Packages.psdi.util.logging);
    
    var resp = {};
    // Get the Site ID from the Query Parameters
    //var site = request.getQueryParam("site");
    
    var var1 = request.getQueryParam("var1");
    var var2 = request.getQueryParam("var2");
    var site = request.getQueryParam("site");
    //var zxqponum = request.getQueryParam("ponum");
    
    //logger.debug(zxqprinter);
    service.log("TESTING script Params" + request.getQueryParams());   
    service.log("var1 " + request.getQueryParam("var1"));
    service.log("var2 " + request.getQueryParam("var2"));
    
    //count the number of WO's in the site
    var woset = MXServer.getMXServer().getMboSet("WORKORDER", request.getUserInfo());
    woset.setQbe("SITEID","="+site);
    var woCount = woset.count();
    resp.wo_count = woCount;
    woset.close();
    
    // Get Total Count
    resp.total = woCount;
    //create the response - still not sure why I had to append the vars to a string.
    
    resp.var1= "" + var1;
    resp.var2= "" + var2;
    resp.site= "" + site;
    
    var responseBody = JSON.stringify(resp);
    

这是 Kasey 回答的扩展版本。

在 Maximo 中创建示例自动化脚本:

  1. 自动化脚本 >> 更多操作 >> 创建 >> 脚本
  2. 脚本[名称]:HELLOWORLD
  3. 脚本语言:js
  4. 粘贴此代码:

//THIS IS JAVASCRIPT! NOT JYTHON!

//load("nashorn:mozilla_compat.js"); //More info about this here: 

//importPackage(Packages.psdi.server);
//importPackage(Packages.psdi.util.logging);
    
var resp = {};
var var1 = request.getQueryParam("var1");

resp.var1= " " + var1 + " World!";
var responseBody = JSON.stringify(resp);
  1. 单击创建

试试 URL:

此 URL 会将单词“Hello”发送到自动化脚本。自动化脚本将附加单词“World!”到“你好”。

短语“Hello World!” returned.

  1. 在浏览器中,运行 这个 URL: http://yourhostname:1234/maximo/oslc/script/helloworld?var1=Hello&_lid=wilson&_lpwd=wilson
  • yourhostname 替换为您的主机名
  • 用你的端口号替换1234
  • maximo 替换为适当的值。
  1. URL 请求应该 return 这个 JSON 对象给浏览器:

{"var1":" Hello World!"}

  1. 从那里,在单独的系统中创建一个超链接(使用上面的 URL)。然后点击它运行 自动化脚本。
  • 如果删除脚本中的最后一行,则不会return向浏览器发送任何内容。

注:

URL 似乎只对 WILSON 用户有效。它不适用于我自己的用户:

{"oslc:Error":{"oslc:statusCode":"401","spi:reasonCode":"BMXAA7901E","oslc:message":
"You cannot log in at this time. Contact the system administrator.","oslc:extendedError"
:{"oslc:moreInfo":{"rdf:resource":"http:\/\/something\/maximo\/oslc\
/error\/messages\/BMXAA7901E"}}}}

最好的猜测是:我的用户设置不正确。

这是一个非常简单的 JavaScript 示例:

responseBody = "asdf";

然后只需 运行 浏览器中的 URL(或其他地方,例如 Maximo 中的自动化脚本或 GIS 中的 Python 脚本)。

https://<<my host>>/maximo/oslc/script/testscript


Python 几乎相同(没有分号):

responseBody = "asdf"