Вызвать скрипт автоматизации через URL - PullRequest
1 голос
/ 17 октября 2019

Maximo 7.6.1.1:

Я хотел бы вызвать скрипт автоматизации Maximo, щелкнув URL-адрес (URL-адрес находится в отдельной браузерной системе).

Как быURL должен быть структурирован, чтобы это работало?

Ответы [ 2 ]

3 голосов
/ 17 октября 2019

Это отличный пример использования, над которым мы работали в последние несколько дней.

  1. Создать скрипт автоматизации. - Мой называется "автоматизации_папки"
  2. Вручную вызвать его через API с помощью браузера, чтобы убедиться, что вы действительно можете запустить его. (% имя_сервера% / 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.site= " " + site;
    resp.var2= "" + var2;
    var responseBody = JSON.stringify(resp);
0 голосов
/ 18 октября 2019

Вот расширенная версия ответа Кейси.

Создание сценария автоматизации:

  1. Сценарии автоматизации >> Другие действия>> Создать >> Сценарий
  2. Сценарий [имя]: HELLOWORLD
  3. Язык сценария: js
  4. Вставить в этот код:

load("nashorn:mozilla_compat.js"); //https://stackoverflow.com/questions/57537142/maximo-js-automation-script-importpackage-is-not-defined

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», возвращая «Hello World!».

В браузере запустите этот URL: http://yourhostname:1234/maximo/oslc/script/helloworld?var1=Hello&_lid=wilson&_lpwd=wilson
  • Замените yourhostname именем вашего хоста
  • Замените 1234 номером вашего порта
  • Замените maximo на соответствующее значение (извините, я не очень много знаю об этом. В моем случае это на самом деле что-то отличное от maximo).

Запрос URL должен возвращать этот объект JSON в браузер:

{"var1":" Hello World!"}

Оттуда создайте гиперссылку в отдельной системе (используя приведенный выше URL). И щелкните по нему, чтобы запустить скрипт автоматизации.

  • Если удалить последнюю строку в скрипте, браузер ничего не вернет.

Примечание:

Мне кажется, что 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"}}}}
...