Служба POST IBM Maximo REST не устанавливает атрибуты в MBO - PullRequest
3 голосов
/ 10 июля 2020

Я попытался создать запись о моем настроенном объекте с помощью службы REST в IBM Maximo. Проблема в том, что я создал запись, но не могу присвоить значения атрибутам.

Далее я покажу, что я сделал и что произошло:

  1. У меня есть структура объекта, называемая оксидато, которая представляет мой настроенный объект.

  2. Я выполнил POST с помощью POSTMAN по этому URL-адресу: Раздел body это JSON, который я пытался отправить:

{
    "attribute1":"205",
    "attribute2":"206"
}
Запись была создана, но ни один из атрибутов не был заполнен.

На мой взгляд, служба REST получила POST, но не может прочитать тело.

Что такое Я скучаю? Я добавляю изображение ПОЧТОВОГО в качестве примера: enter image description here

введите описание изображения здесь

EDIT1 : я обновляю POST, чтобы использовать новейшие API RES (спасибо Dex!)

EDIT2: Я добавляю изображение шапки

Ответы [ 2 ]

4 голосов
/ 13 июля 2020

Я обнаружил, что Maximo часто игнорирует входящие атрибуты, которых нет в пространстве имен Maximo (http://www.ibm.com/maximo). Вы можете go столкнуться с проблемой настройки ваших атрибутов VALOR1 и VALOR2, чтобы они находились в этом пространстве имен, но проще просто указать OSL C игнорировать пространства имен. Вы делаете это, устанавливая для параметра «Lean» значение «1».

В вашем случае go на вкладке «Params» и добавляете запись с именем «Lean». Присвойте ему значение «1», а затем снова отправьте POST. Вы должны увидеть «? Lean = 1» в конце URL-адреса POST вверху там, но содержимое вашего тела должно оставаться неизменным.

EDIT: С другой стороны, похоже (на основе вашего URL), что вы фактически не используете более новый JSON / OSL C REST API; Похоже, вы используете старые службы REST. На этой странице IBM вы найдете много информации о новом JSON REST API, включая правильные URL-адреса для него: https://developer.ibm.com/static/site-id/155/maximodev/restguide/Maximo_Nextgen_REST_API.html. Вам следует изменить свой URL-адрес на / maximo / oslc / os / Oxidato, чтобы использовать новый API, который, естественно, поддерживает JSON и описанный выше параметр Lean. Однако для этого требовалось использовать Maximo 7.6.

EDIT 2: Атрибуты часто странно чувствительны к регистру, требуя строчных букв. Ваш пример в вашем вопросе "attribute1" и "attribute2" правильно написан в нижнем регистре, но на вашем снимке экрана показаны имена атрибутов в верхнем регистре. Попробуйте изменить их на «доблесть1» и «доблесть2». Кроме того, это постоянные атрибуты, не так ли?

2 голосов
/ 10 июля 2020

Полученный обратно код ответа (например, 200 - OK) и тело ответа подробно описывают созданную запись.

Я думаю, вы правы в том, что тело почтового запроса игнорируется. Если в пользовательском MBO нет обязательных полей, ваш POST, вероятно, создает пустую запись со следующим значением в последовательности для ключевого поля, но вы должны увидеть это в ответе.

Следующий POST должен создать запись со значениями, предоставленными для attribute1 и attribute2, и предоставить ответ с идентификатором записи, чтобы вы могли найти ее в Maximo и показать значения, которые были сохранены для attribute1 и attribute2:

http://hostname:port/maximo/rest/os/oxidato/?_format=json&_compact=1&attribute1=205&attribute2=206

Response: 200 OK 
Reponse Body: 
{   "CreateOXIDATOResponse": {
    "rsStart": 0,
    "rsCount": 1,
    "rsTotal": 1,
    "OXIDATOSet": {
      "OXIDATO": {
        "rowstamp": "[0 0 0 0 0 -43 127 13]",
        "ATTRIBUTE1": "205",
        "ATTRIBUTE2": "206",
        "OXIDATOID": 13
      }
    }   } }

Вы также можете захотеть чтобы включить ведение журнала отладки для интерфейса REST в Конфигурация системы -> Конфигурация платформы -> Ведение журнала для получения дополнительных сведений о том, что происходит в файле журнала.

...