运行 通过 URL 的自动化脚本
Run an automation script via a URL
Maximo 7.6.1.1:
我想通过在单独的系统中调用 URL 来 运行 Maximo 自动化脚本。
可以这样做吗?
这是一个很好的用例,也是我们过去几天一直在努力解决的问题。
- 创建自动化脚本。 - 我的名字叫 automation_api_test
- 使用浏览器通过 API 手动调用它,以确保您可以实际将其获取到 运行。 (%servername%/maximo/oslc/script/automation_api_test?var1=1212321232&var2=1555&site=OPS&_lid=wilson&_lpwd=wilson)
像编写常规自动化脚本一样编写脚本。这是一个可以从 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 中创建示例自动化脚本:
- 自动化脚本 >> 更多操作 >> 创建 >> 脚本
- 脚本[名称]:HELLOWORLD
- 脚本语言:js
- 粘贴此代码:
//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);
- 单击创建
试试 URL:
此 URL 会将单词“Hello”发送到自动化脚本。自动化脚本将附加单词“World!”到“你好”。
短语“Hello World!” returned.
- 在浏览器中,运行 这个 URL: http://yourhostname:1234/maximo/oslc/script/helloworld?var1=Hello&_lid=wilson&_lpwd=wilson
- 将
yourhostname
替换为您的主机名
- 用你的端口号替换
1234
- 将
maximo
替换为适当的值。
- URL 请求应该 return 这个 JSON 对象给浏览器:
{"var1":" Hello World!"}
- 从那里,在单独的系统中创建一个超链接(使用上面的 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"
Maximo 7.6.1.1:
我想通过在单独的系统中调用 URL 来 运行 Maximo 自动化脚本。
可以这样做吗?
这是一个很好的用例,也是我们过去几天一直在努力解决的问题。
- 创建自动化脚本。 - 我的名字叫 automation_api_test
- 使用浏览器通过 API 手动调用它,以确保您可以实际将其获取到 运行。 (%servername%/maximo/oslc/script/automation_api_test?var1=1212321232&var2=1555&site=OPS&_lid=wilson&_lpwd=wilson)
像编写常规自动化脚本一样编写脚本。这是一个可以从 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 中创建示例自动化脚本:
- 自动化脚本 >> 更多操作 >> 创建 >> 脚本
- 脚本[名称]:HELLOWORLD
- 脚本语言:js
- 粘贴此代码:
//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);
- 单击创建
试试 URL:
此 URL 会将单词“Hello”发送到自动化脚本。自动化脚本将附加单词“World!”到“你好”。
短语“Hello World!” returned.
- 在浏览器中,运行 这个 URL: http://yourhostname:1234/maximo/oslc/script/helloworld?var1=Hello&_lid=wilson&_lpwd=wilson
- 将
yourhostname
替换为您的主机名 - 用你的端口号替换
1234
- 将
maximo
替换为适当的值。
- URL 请求应该 return 这个 JSON 对象给浏览器:
{"var1":" Hello World!"}
- 从那里,在单独的系统中创建一个超链接(使用上面的 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"