【发布时间】:2021-08-09 15:00:45
【问题描述】:
我正在尝试将多个任务添加到 Azure Dev Ops 中的新用户故事,并且正在努力将新创建的任务链接到用户故事。
我可以毫无问题地创建用户故事,并认为我可以使用相同的方法来创建任务,然后通过父字段进行链接,但这似乎不起作用。
这是我用来创建任务的代码:
var useCase = _traceContext.UseCases.Include(u => u.DeconstructionStage).FirstOrDefault(u => u.ObjID == useCaseObjID);
List<UseCaseADO> tasks;
if (useCase.DeconstructionStage.StageOrder < 4)
{
tasks = new List<UseCaseADO>
{
{ new UseCaseADO { StackRank = "1", WorkItemType = "Task", Title1="Create Test Script", Description="See Create Test Script in the Working Practices document", AcceptanceCriteria="", AssignedTo="", State="New", Tags="Discover(Test)", Priority = "1" } },
{ new UseCaseADO { StackRank = "2", WorkItemType = "Task", Title1="Create Discovery Trace", Description="See Create Discovery Trace in the Working Practices document", AcceptanceCriteria="", AssignedTo="", State="New", Tags="Discover(Test)", Priority = "1" } },
{ new UseCaseADO { StackRank = "3", WorkItemType = "Task", Title1="Review Use Case (Dev)", Description="See Review Use Case (Dev) in the Working Practices document", AcceptanceCriteria="", AssignedTo="", State="New", Tags="Discover(Dev)", Priority = "1" } },
{ new UseCaseADO { StackRank = "4", WorkItemType = "Task", Title1="Review Use Case (Test)", Description="See Review Use Case (Test) in the Working Practices document", AcceptanceCriteria="", AssignedTo="", State="New", Tags="Discover(Test)", Priority = "1" } },
{ new UseCaseADO { StackRank = "5", WorkItemType = "Task", Title1="Create and Annotate Define Traces", Description="See Create and Annotate Define Traces in the Working Practices document", AcceptanceCriteria="", AssignedTo="", State="New", Tags="Define(Dev)", Priority = "1" } }
};
}
else
{
tasks = new List<UseCaseADO>
{
{ new UseCaseADO { ID = "", StackRank = "6", WorkItemType = "Task", Title1="Refactor Code", AssignedTo="", Description="", AcceptanceCriteria="", State="New", Tags="Deconstruct(Dev)", Priority = "1" } },
{ new UseCaseADO { ID = "", StackRank = "7", WorkItemType = "Task", Title1="Deconstruction Test", Description="", AcceptanceCriteria="", AssignedTo="", State="New", Tags="Deconstruct(Test)", Priority = "1" } },
{ new UseCaseADO { ID = "", StackRank = "8", WorkItemType = "Task", Title1="Decommision Code", Description="", AcceptanceCriteria="", AssignedTo="", State="New", Tags="Decommision(Dev)", Priority = "1" } },
{ new UseCaseADO { ID = "", StackRank = "9", WorkItemType = "Task", Title1="Decommision Test", Description="", AcceptanceCriteria="", AssignedTo="", State="New", Tags="Decommision(Test)", Priority = "1" } },
{ new UseCaseADO { ID = "", StackRank = "10", WorkItemType = "Task", Title1="Decommision Data", Description="", AcceptanceCriteria="", AssignedTo="", State="New", Tags="Decommision(Dev)", Priority = "1" } },
{ new UseCaseADO { ID = "", StackRank = "11", WorkItemType = "Task", Title1="Decommision Test", Description="", AcceptanceCriteria="", AssignedTo="", State="New", Tags="Decommision(Test)", Priority = "1" } }
};
}
VssBasicCredential credentials = new VssBasicCredential("", _personalAccessToken);
VssConnection connection = new VssConnection(new Uri(_uri), credentials);
WorkItemTrackingHttpClient workItemTrackingHttpClient = connection.GetClient<WorkItemTrackingHttpClient>();
try
{
foreach (var task in tasks)
{
JsonPatchDocument patchDocument = GetTaskPatchDoc(userStoryID, task);
WorkItem result = workItemTrackingHttpClient.CreateWorkItemAsync(patchDocument, _project, "Task").Result;
}
}
catch (AggregateException ex)
{
_logger.Error("Error creating user story: {0}", ex.InnerException.Message);
return false;
}
GetTaskPatchDoc 看起来像这样
private JsonPatchDocument GetTaskPatchDoc(int userStoryID, UseCaseADO task)
{
JsonPatchDocument patchDocument = new JsonPatchDocument();
Dictionary<string, string> values = new Dictionary<string, string>()
{
{ "/fields/System.Title", task.Title1 },
{ "/fields/System.Description", task.Description},
{ "/fields/System.State", task.State },
{ "/fields/System.Tags", task.Tags },
{ "/fields/Microsoft.VSTS.Common.StackRank", task.StackRank},
{ "/fields/Microsoft.VSTS.Common.Priority", task.Priority },
{ "/fields/System.Parent", userStoryID.ToString() }
};
foreach (KeyValuePair<string, string> value in values)
{
patchDocument.Add(
new JsonPatchOperation()
{
Operation = Operation.Add,
Path = value.Key,
Value = value.Value
}
);
}
return patchDocument;
}
任务已正确创建,但我缺少用户故事和任务之间的链接。
有谁知道如何通过客户端库做到这一点?我不想将代码切换到 REST API,因为其余代码运行良好。
提前致谢。
【问题讨论】:
标签: c# azure-devops azure-web-app-service