我陷入了TFS API的简单问题,在获取工作项时,我无法获取工作项工作量数据,其想法是通过特定标准从TFS获取工作项,然后更改工作量数据并将其保存回TFS。现在,我可以获取工作项,并可以按字段更新任何数据,但是我发现了如何进行努力并进行更新。
查询从TFS获取数据:
SELECT * FROM WorkItems WHERE [System.WorkItemType] = 'Task' AND [Assigned to] = 'name'
ORDER BY [System.WorkItemType], [System.Id]
这是获取字段的代码
public void getDataFromTfs()
{
Console.WriteLine("Getting data from TFS to Store");
Console.WriteLine("*********************");
setQuery();
Console.WriteLine("Query" + byTasksModified.ToString());
Console.WriteLine("*********************");
Console.ReadLine();
credentials = new System.Net.NetworkCredential("xxxxx", "xxxxxx", "xxxxx");
TfsTeamProjectCollection teamProjectCollection =
new TfsTeamProjectCollection(new Uri(@"LINK HERE"), credentials);
teamProjectCollection.EnsureAuthenticated();
Store = (WorkItemStore) teamProjectCollection.GetService(typeof(WorkItemStore));
WIC = Store.Query(byTasksAssignedTo);
Console.WriteLine("Data fetched into Store");
foreach (WorkItem workItem in WIC)
{
Console.WriteLine("ID: {0}", workItem.Id);
Console.WriteLine("Title: {0}", workItem.Title);
}
}
在这里,我通过特定查询获取了我需要的所有任务,然后我有了拉特定任务的方法
public void getSpecificWorkItemData()
{
workItem = Store.GetWorkItem(64);
Console.WriteLine("ID: {0}", workItem.Id);
Console.WriteLine("Title: {0}", workItem.Title);
workItem.Open();
Console.ReadLine();
}
然后我有任务的更新方法
public void updateWorkItem()
{
workItem.Fields["Assigned to"].Value = "NAME";
if (workItem.IsValid() == false)
{
Console.WriteLine("Item is not valid");
}
else
{
try
{
workItem.Save();
}
catch (ValidationException exception)
{
Console.WriteLine("Error saving work item!");
Console.WriteLine(exception.Message);
}
Console.WriteLine("Item Saved");
workItem.Close();
Console.ReadLine();
}
}
参考方案
这取决于您的过程模板哪些字段可用。现在,您正在查询“任务”工作项,默认情况下,“工作”组中具有以下字段。请注意,没有用于任务的“工作量”字段,其他还有:
Process Template | Field (s)
Scrum | Remaining Work
MSF Agile | Remaining Work, Completed Work, Original estimate
MSF CMMI | Remaining Work, Completed Work, Original estimate
您需要的工作量字段是在Scrum流程模板中定义的,并由需求类别中的所有工作项使用(默认情况下为产品待办事项和错误):
Process Template | Field (s)
Scrum | Effort
MSF Agile | Story Point
MSF CMMI | Size
如果要更新Scrum Process模板中工作项中的“工作量”字段,最好查询工作项类型类别“需求类别”中的工作项:
SELECT *
FROM WorkItems
WHERE [System.TeamProject] = @project
AND [System.WorkItemType] IN GROUP 'Requirement Category'
ORDER BY [System.Id]
如果要更新“剩余工作”,“已完成工作”或“原始估计”字段,则需要使用“任务”:
SELECT id, Microsoft.VSTS.Scheduling.CompletedWork, Microsoft.VSTS.Scheduling.RemainingWork, Microsoft.VSTS.Scheduling.OriginalEstimate
FROM WorkItems
WHERE [System.TeamProject] = @project
AND [System.WorkItemType] IN GROUP 'Task Category'
ORDER BY [System.Id]
然后根据TFS Field Reference中定义的Ref名称更新它们是最安全的方法:
workItem.Fields["Microsoft.VSTS.Scheduling.CompletedWork"].Value = 123;
workItem.Fields["Microsoft.VSTS.Scheduling.RemainingWork"].Value = 123;
workItem.Fields["Microsoft.VSTS.Scheduling.OriginalEstimate"].Value = 123;
当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…
Mongo汇总 - javascript我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …
如何在Wiremock中为JUNIT匹配精确的json - java我正在使用Wiremock在Spring启动应用程序中模拟Junit的REST服务。我的问题是,我无法匹配多个匹配模式。 Junit.javaStringValuePattern pattern = WireMock.matching(".*"); givenThat(post(urlEqualTo("/softwares…
如何在JQuery中操作JSONArray - javascript我有一个php函数,它以JSON返回此代码{"0":{"title":"Dans l\u2019appartement"},"1":{"title":"A l\u2019a\u00e9roport - D\u00e9part de B\u00e9at…
jQuery DataTable TableTool在IE和Firefox中不起作用 - c#我在MVC4 ASP.NET Web应用程序中使用Jquery DataTable TableTool。导出到Excel和PDF可以与Chrome完美配合。但是不能在IE和FireFox中使用。我的代码如下 dom: 'T<"clear">lfrtip', tableTools: { "sSwfP…