Невозможно обновить пользовательский атрибут в RTC через REST API

Я делаю POC и вручную отправляю блок XML на наш сервер RTC. Я установил заголовок типа контента следующим образом:

application/x-oslc-cm-change-request+xml

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

<dc:title>my test title</dc:title>.  

Это работает отлично, поэтому я продолжил обновлять пользовательские атрибуты, из-за которых у меня возникли проблемы.

Я почти уверен, что это форматирование, но я не могу найти примеры, которые помогли. В этом случае у меня есть настраиваемый атрибут строкового типа "средний". В XML я пробовал:

<rtc_cm:com.my.domain.bookingLabel>my new value</rtc_cm:com.my.domain.bookingLabel>

Я нашел сообщение, в котором, казалось, предлагалось использовать rtc_ext вместо rtc_cm в качестве префикса. Я тоже попробовал это предложение, но оно не оказало никакого влияния. Ошибки не генерируются, и вся информация об элементе работы возвращается обратно после действия публикации, но этот конкретный настраиваемый атрибут остается неизменным.

Документ, с которым я работал для первоначального POC, взят с веб-сайта Jazz, посвященного OSLC v2: https://jazz.net/library/article/352

Заранее спасибо!


person Sulphy    schedule 11.06.2015    source источник
comment
Можете ли вы сделать ту же модификацию пользовательских атрибутов с помощью веб-интерфейса? Если да, вы можете проверить содержимое http-запроса (с помощью инструментов сетевой отладки Chrome или Firefox), чтобы узнать, какой точный синтаксис использовать.   -  person VonC    schedule 11.06.2015
comment
Привет, да, я могу изменить элемент через веб-интерфейс, однако он делает это через JSON. Передаваемый формат: 'attributeIdentifiers=com.my.domain.bookingLabel&attributeValues=мое новое значение..'. Не уверен, как это будет переведено в синтаксис XML.   -  person Sulphy    schedule 11.06.2015
comment
Вы имеете в виду, что вы не можете переключиться на application/json? (jazz.net/library/article/1001: для идентификации формата ресурса запроса на изменение JSON , используемый тип носителя должен быть application/json Использование определенного в OSLC CM 1.0 типа носителя application.x-oslc-cm-change-request+json не поддерживается для запросов OSLC CM 2.0.   -  person VonC    schedule 11.06.2015
comment
Привет, VonC, я не знал, что могу использовать JSON, но попробую еще раз и посмотрю, смогу ли я переключиться. Буду держать вас в курсе! :о)   -  person Sulphy    schedule 12.06.2015
comment
Привет еще раз, просто чтобы вы знали, что у меня это работает. Я остановился на XML, снова прочитал спецификацию v2 и лучше ознакомился с ней. Как только я смог передать что-то вручную через Firefox, это позволило мне изменить XDocument, который я создаю, чтобы он соответствовал требованиям. Еще раз спасибо за помощь :о)   -  person Sulphy    schedule 16.06.2015
comment
Большой! Пожалуйста, добавьте ответ здесь с подробным описанием того, как вы его заработали.   -  person VonC    schedule 16.06.2015


Ответы (1)


В моем исходном XML использовался формат/подход, указанный в статье, предназначенной для RTC v2 / OSCLC v1 (https://jazz.net/library/article/352) например.

<dcterms:title>my title here</dcterms:title>

Однако дело пошло дальше и с использованием нового документа/руководства, предоставленного в этой ветке (https://jazz.net/library/article/1001) Я переработал XML. Сначала я использовал метод GET для получения сведений о рабочем элементе (как описано в статье), который предоставляется в формате RDF, который вы фактически просто редактируете, а затем отправляете обратно. Затем я очистил все содержимое между открывающим и закрывающим тегом и вставил только одну запись пользовательского атрибута для своего теста.

...
<rdf:Description rdf:about="https://myserver:9100/jazz/resource/ItemName/com.ibm.team.workitem.WorkItem/12345">
   <rtc_ext:com.my.custom.attribute.BookingRef>my value here</rtc_ext:com.my.custom.attribute.BookingRef>
</rdf:Description>
...

При тестировании я просто использовал два заголовка в своем вызове через надстройку RESTClient для Firefox. Content-Type=application/rdf+xml и Accept: application/rdf+xml (используя глагол PUT)

И вуаля, теперь я могу изменить значения своих пользовательских атрибутов.

person Sulphy    schedule 16.06.2015