有没有一种使用TFS2012API以编程方式访问WorkItem的“看板列”的方法?
使用Scrum 2.2模板,Bug或Product项的历史记录将"MyProject\MyTeam看板列“显示为更改后的字段,每当工作项在板上的看板列之间拖动时,但是当通过TFS API专门检索工作项时,无法访问该字段。
当在WorkItemChangedEvent接口上实现ProcessEvent方法时,它还显示为Microsoft.TeamFoundation.Framework.Server.ISubscriber对象中一个更改的字段。
解决方法:同事发现了一个关于创建只读自定义字段以持久化看板列值的blogpost,利用WorkItemChangedEvent捕获最新值。然后就可以查询该列。这种方法的一个问题是只能跟踪单个团队的看板列。
更新:根据这个blogpost,看板列不是字段,而是"WIT扩展“。这可能有助于找到答案。
发布于 2013-11-06 22:32:21
我在ISubscriber.ProcessEvent方法中找到了一种使用TFS2013API读取值的方法:
var workItemId = 12345;
var extService = new WorkItemTypeExtensionService();
var workItemService = new WorkItemService();
var wit = workItemService.GetWorkItem(requestContext, workItemId);
foreach (var wef in extService.GetExtensions(requestContext, wit.WorkItemTypeExtensionIds))
{
foreach (var field in wef.Fields)
{
if (field.LocalName == "Kanban Column" || field.LocalName == "Backlog items Column")
{
// Access the new column name
var columnName = wit.LatestData[field.Field.FieldId];
}
}
}发布于 2014-05-22 12:55:18
如果您准备深入数据库,您可以挖掘出这些信息。我还不完全理解TFS中团队的建模,但首先您需要确定感兴趣的团队存储看板状态的字段如下(TFS,2012):
USE Tfs_DefaultCollection
SELECT TOP(10)
MarkerField + 1 as FieldId,*
FROM tbl_WorkItemTypeExtensions with(nolock)
JOIN tbl_projects on tbl_WorkItemTypeExtensions.ProjectId = tbl_projects.project_id
WHERE tbl_projects.project_name LIKE '%ProjectName%然后用上面发现的FieldId替换下面的XXXXXXXX
SELECT TOP 1000
wid.Id,
wia.State,
wid.StringValue as Kanban,
wia.[Work Item Type],
wia.Title,
tn.Name as Iteration
FROM tbl_WorkItemData wid with(nolock)
JOIN WorkItemsAre wia on wia.ID = wid.Id
JOIN TreeNodes tn on wia.IterationID = tn.ID
WHERE FieldId = XXXXXXXX and RevisedDate = '9999-01-01 00:00:00.000'
ORDER BY Id发布于 2013-08-15 20:05:51
我不太熟悉Scrum 2.2模板,但是对于CMMI或Scrum模板,在TFS工作项跟踪方面也是一样的。
试着做这样的事情:
public string GetKanbanColumn(WorkItem wi)
{
if (wi != null)
{
return wi["Kanban"].ToString();
}
return string.Empty;
}根据工作项模板XML文件中指定的列的实际名称。希望这能有所帮助。
https://stackoverflow.com/questions/18193036
复制相似问题