The REST APIs have a tight integration with the automation scripts. Automation scripts can be used to develop custom APIs. The following example call describes how automation scripts interact with REST APIs. You can also use automation scripts for implementing custom queries and custom actions.
JavaScript language is always the preferred choice for integration scripts since it provides native functions to manage JSON objects.
To find the total number of work that is in progress and service requests in a given site, you need to create an API since there is no out-of-the-box API for this task. Create the following Automation Script:
- Script: MXD_COUNTWOSR
- Description: Count WOs and SRs
- Language: JavaScript
load("nashorn:mozilla_compat.js");
importPackage(Packages.psdi.server);
var resp = {};
var site = request.getQueryParam("site");
var woset = MXServer.getMXServer().getMboSet("workorder", request.getUserInfo());
woset.setQbe("siteid", "="+site);
var woCount = woset.count();
resp.wocount = woCount;
var srset = MXServer.getMXServer().getMboSet("sr", request.getUserInfo());
srset.setQbe("siteid", "="+site);
var srCount = srset.count();
resp.srcount = srCount;
resp.total= srCount+woCount;
var responseBody = JSON.stringify(resp);
After you save the script, open your browser and initiate the GET request to validate the results.
GET /oslc/script/MXD_COUNTWOSR?site=BEDFORD
If you have an API token you can simply build a URL like this and paste it in a web browser.
http://mxserver/maximo/oslc/script/MXD_COUNTWOSR?site=BEDFORD&apikey=ski98ju29ls9r157kkl8q6u738rjcfgh8c3aqo30
The response in JSON is shown:
{ "wocount" :100, "srcount" :20 , "total" : 120 }
How did you get the JSON response as separate lines?