Заметки консультанта

Шамрай Александр Владимирович

Azure DevOps Services Rest Api. 7. Добавление и редактирование связей между рабочими элементами

Posted by Shamrai Alexander на 21 декабря, 2018

<< Перейти в радел «Azure DevOps Services (TFS/VSTS) Rest Api»

Добавление и обновление ссылок между рабочими элементами выполняется схожим подходом с редактированием полей рабочего элемента и применяются те же методы UpdateWorkItemAsync и CreateWorkItemAsync. Отличается только информация о передаваемых объектах JsonPatchOperation. Для добавления объект формируется в следующем виде:

patchDocument.Add(new JsonPatchOperation()

{

Operation = Operation.Add,

Path = «/relations/-«,

Value = new {

rel = RelName,

url = RelUrl,

attributes = new

{

comment = Comment,

isLocked = IsLocked // you must be an administrator to lock a link

}

}

});

Указываются следующие атрибуты:

  • Operation – операция со ссылкой, в основном Add и Remove для добавления и удаления.
  • Path – может иметь следующие значения:
    • «/relations/-» – добавляется новая связь между рабочими элементами
    • «/relations/[индекс ссылки]» – для редактирования свойств или удаление ссылки, где [индекс ссылки] – порядковый номер ссылки в списке WorkItem.Relations.
  • Value – детализация информации о ссылке, которая содержит:
    • rel – наименование типа ссылки, перечень можно посмотреть здесь: Link type reference.
    • url – прямой url адрес к необходимому рабочему элементу.
    • attributes – дополнительные необязательные атрибуты ссылки:
      • comment – комментарий для ссылки.
      • isLocked – блокировка ссылки. Если ссылка заблокирована, то ее можно удалить только через API.

Добавление ссылки можно представить следующим образом:

JsonPatchDocument patchDocument = new JsonPatchDocument();

patchDocument.Add(new JsonPatchOperation()

{

Operation = Operation.Add,

Path = «/relations/-«,

Value = new {

rel = «System.LinkTypes.Related»,

url = RelUrl,

attributes = new

{

comment = «Comment for the link»

}

}

});

return WitClient.UpdateWorkItemAsync(patchDocument, WiId).Result;

Обновление выполняется по следующему примеру:

JsonPatchDocument patchDocument = new JsonPatchDocument();

patchDocument.Add(new JsonPatchOperation()

{

Operation = Operation.Add,

Path = «/relations/0»,

Value = new {

rel = «System.LinkTypes.Related»,

url = RelUrl,

attributes = new

{

comment = «New comment for the link»

}

}

});

return WitClient.UpdateWorkItemAsync(patchDocument, WiId).Result;

Удаление выполняется по следующему шаблону:

JsonPatchDocument patchDocument = new JsonPatchDocument();

patchDocument.Add(new JsonPatchOperation()

{

Operation = Operation.Remove,

Path = «/relations/0»

});

return WitClient.UpdateWorkItemAsync(patchDocument, WiId).Result;

Если необходимо за один раз удалить несколько ссылок, то их индексы нужно добавлять в JsonPatchDocument в обратном порядке. Т.к. механизм удаления выполняет эту операцию последовательно. Т.е. если у вас есть рабочий элемент с двумя связями, а вы добавляете для удаления сначала индекс 1, потом 2, то вы получите следующую ошибку:

Пример тестового приложения можно посмотреть здесь:

https://github.com/ashamrai/TFRestApi/tree/master/07.TFRestApiAppWorkItemLinks

English version

Один ответ to “Azure DevOps Services Rest Api. 7. Добавление и редактирование связей между рабочими элементами”

  1. […] здесь: Создание и редактирование рабочих элементов и Добавление и редактирование связей между рабочими эле…. Отличием связывания рабочего элемента с запросом на […]

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

 
%d такие блоггеры, как: