TFS查询:仅获取分配给我的最顶层元素

时间:2014-01-29 15:19:09

标签: tfs tfs2010 wiql

我正在尝试构建一个tfs查询,它只返回分配给我的最顶层项目。 例子:

  • UserStory(US)已分配给我并包含已分配的任务 给我=>查询仅返回美国
  • 美国被分配给其他人, 但它包含分配给我的任务=>查询返回 任务
  • 美国已分配给我,但任务已分配给其他人=> 查询返回美国

我努力弄明白,如何访问任务的父级,或者这甚至不是正确的方法。我正在与VS和TFS 2010合作。想法?

[编辑] 另一个想法是写一个wiql查询,找到分配给我的所有项目,然后检查链接是否有一些属性,但我不确定。在TFS2013中应该有类似的东西(“匹配顶级工作项”),除非这只是一个排序选项。

1 个答案:

答案 0 :(得分:1)

一个查询无法做到这一点,至少需要2个,因为您无法将链接过滤器与查询的某些部分组合在一起:

  • Flat List
  

WorkItemType = UserStory AND AssignedTo = @ME

  • 工作项目和直接链接
  

WorkItemType = Task AND AssignedTo = @ME

     

关联工作项的过滤器:

     

WorkItemType = UserStory AND AssignedTo<> @ME

     

返回所有顶级工作项

第一个查询将列出分配给您的所有用户故事,无论是否链接了某些内容。第二个查询将列出分配给您的所有任务,但没有分配给您的UserStory链接。

[编辑]

另一种选择可能是将两个查询组合在一起,但我无法在我的环境中对其进行测试:

  • 工作项目和直接链接
  

(WorkItemType = Task OR WorkItemType =用户故事)AND AssignedTo = @ME

     

关联工作项的过滤器:

     

WorkItemType = UserStory AND AssignedTo<> @ME

     

返回所有顶级工作项

这将列出分配给您的所有用户故事和任务,但没有链接父用户故事。

[EDIT2]

<?xml version="1.0" encoding="utf-8"?><WorkItemQuery Version="1"><TeamFoundationServer>http://tfs:8080/tfs/DefaultCollection</TeamFoundationServer><TeamProject>Test</TeamProject><Wiql>SELECT [System.Id], [System.Links.LinkType], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] FROM WorkItemLinks WHERE ([Source].[System.TeamProject] = @project  AND ( [Source].[System.WorkItemType] = 'Task'  OR  [Source].[System.WorkItemType] = 'UserStory' ) AND  [Source].[System.AssignedTo] = @me) And ([System.Links.LinkType] &lt;&gt; '') And ([Target].[System.WorkItemType] = 'UserStory'  AND  [Target].[System.AssignedTo] &lt;&gt; @me) ORDER BY [System.Id] mode(MayContain)</Wiql></WorkItemQuery>