Невозможно обновить статус WorkItem с WorkItemTrackingHttpClient - PullRequest
0 голосов
/ 20 мая 2019

Я автоматизирую обновления часов рабочего элемента, но изменения статуса игнорируются.Я хотел бы установить статус с «Активный» на «Разрешенный».

Я нашел информацию о том, что вам также нужно установить «Причину», если вы меняете статус, но мой код не меняетсяПричина или Состояние, хотя все остальные обновления поля работают.Я подозреваю, что это потому, что поле Status доступно только для чтения, но мы не можем найти правило, которое делает его таким (мы используем шаблон CMMI):

enter image description here

Может кто-нибудь сказать мне, если проблема в настройке в dev ops или это мой код (или что-то еще)?

//Executing from LINQPad, no need to mention the blocks on async....

WorkItem targetWorkItem = client.GetWorkItemAsync(123456).Result;    

JsonPatchDocument patchDocument = new JsonPatchDocument();

patchDocument.Add(
    new JsonPatchOperation()
    {
        Operation = Operation.Replace,
        Path = "/fields/Microsoft.VSTS.Scheduling.CompletedWork",
        Value = 123
    }
);

patchDocument.Add(
    new JsonPatchOperation()
    {
        Operation = Operation.Replace,
        Path = "/fields/Microsoft.VSTS.Scheduling.RemainingWork",
        Value = 0
    }
);

/*
    These don't work! I think because "Reason" field is read only
*/
patchDocument.Add(
    new JsonPatchOperation()
    {
        Operation = Operation.Add, //Tried Replace as well as Add
        Path = "/Fields/System.Reason",
        Value = "Complete and Requires Review/Test"
    }

patchDocument.Add(
    new JsonPatchOperation()
    {
        Operation = Operation.Add, //Tried Replace as well as Add
        Path = "/Fields/System.State",
        Value = "Resolved"
    }
);

//Succeeds for any field except Status and Reason
WorkItem result = client.UpdateWorkItemAsync(patchDocument, 123456).Result;

Используемые пространства имен:

Microsoft.TeamFoundation.WorkItemTracking.WebApi  
Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models  
Microsoft.VisualStudio.Services.Common  
Microsoft.VisualStudio.Services.WebApi  
Microsoft.VisualStudio.Services.WebApi.Patch  
Microsoft.VisualStudio.Services.WebApi.Patch.Json 

Ответы [ 2 ]

1 голос
/ 20 мая 2019

У вас есть синтаксическая ошибка, вы должны написать /fields/System.State с f, а не Fields с F.

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

0 голосов
/ 20 мая 2019

Ваш Json должен выглядеть так:

{
     "id": xx,
     "rev": yy,
     "fields": [{
         "field": {
             "refName": "System.State"
         },

         "value": "Resolved"
     },
     {
         "field": {
             "refName": "System.Reason"
         },

         "value": "Status Reason"
     },
     {
         "field": {
             "refName": "Microsoft.VSTS.Common.ActivatedBy"
         },

         "value": null
     },

     {
         "field": {
             "refName": "Microsoft.VSTS.Common.ActivatedDate"
         },

         "value": null
     },
     {
         "field": {
             "refName": "Microsoft.VSTS.Common.ResolvedDate"
         },

         "value": "2014-08-25T19:14:04.594Z"
     },
     {
         "field": {
             "refName": "Microsoft.VSTS.Common.ResolvedBy"
         },

         "value": "User Name"
     },
     {
         "field": {
             "refName": "Microsoft.VSTS.Common.ResolvedReason"
         },

         "value": "Resolved Reason"
     },
     {
         "field": {
             "refName": "Microsoft.VSTS.Common.ClosedDate"
         },

         "value": <null or "2014-08-25T19:14:04.594Z">
     },
     {
         "field": {
             "refName": "Microsoft.VSTS.Common.ClosedBy"
         },
         "value": <null, "John Doe">
     }]
 }
...