2017-01-21 3 views
0

Я пытаюсь использовать API VSTS для удаления всех родительских ссылок на элементы и устанавливать их в качестве связанных элементов.Обновление отношений рабочих элементов/ссылок в VS Team Services

https://www.visualstudio.com/en-us/docs/integrate/api/wit/work-items#update-work-items

Я не в полной мере понять, как «Путь» необходимо удалить работу отношений - я получаю противоречивые результаты, где иногда это работает, иногда нет (так, им явно делать это неправильно)

Я делаю предположение, что его просто заказ, возвращенный API. Так, например:

  • Index [0] пункт
  • Index [1] Пункт
  • Index [2] Пункт < - это один я хочу удалить, поэтому я использую индекс 2

    public void RemoveParentLink(int pathIndex, int itemToUpdate, string link) 
    { 
    
        JsonPatchDocument patchDocument = new JsonPatchDocument(); 
    
        patchDocument.Add(
         new JsonPatchOperation() 
         { 
          Operation = Operation.Remove, 
          Path = $"/relations/{pathIndex}" 
    
         } 
        ); 
    
        WorkItem result = witClient.UpdateWorkItemAsync(patchDocument, itemToUpdate).Result; 
    
    } 
    

в документации говорится, что Путь:

Путь к значению у ou хотите добавить, заменить, удалить или проверить. Для конкретного отношения используйте «отношения/Id». Для всех отношений используйте «/ relations/-».

Индекс не является идентификатором, конечно, но как мне получить отношение/идентификатор точно?

ответ

0

«id» в каталоге '/relation/id' - это показатель на самом деле. Вы извлекаете определение рабочего элемента, тогда 'id' является индексом ссылки в массиве 'relations'. Следовательно, ваше предположение верно.

Evidence: данный рабочий элемент 2 ссылки, если вы пытаетесь удалить/изменить идентификатор> = 2 он ответит:

{ "$ ид": "1", "InnerException": null, "message": "Index out of range для пути/отношений/2.", "typeName": "Microsoft.VisualStudio.Services.WebApi.Patch.PatchOperationFailedException, Microsoft.VisualStudio.Services.WebApi, Version = 14.0.0.0, Культура = нейтраль, PublicKeyToken = b03f5f7f11d50a3a "," typeKey ": " PatchOperationFailedException "," errorCode ": 0," eventId ": 3000}

0 и 1 as id Работает только отлично.

Возможно, я ошибаюсь, но могу предположить, что вы можете получить сообщение об ошибке при использовании операции 'replace' перед операцией 'add'. Например, вам нужно добавить 'comment' внутри 'attributes' ссылки, прежде чем изменять его значение (т. Е. «Заменить»).

0

Использование GetWorkItemAsync или GetWorkItemsAsync с параметром WorkItemExpand.Relations для получения связанных рабочих элементов.

Var workItem=witClient.GetWorkItemAsync(id: [work item id], expand: Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models.WorkItemExpand.Relations).Result. 

Тогда индекс является индексом отношений.

enter image description here

Смежные вопросы