0

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

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

我努力想知道如何访问任务的父级,或者这甚至不是正确的方法。我正在使用 VS 和 TFS 2010。想法?

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

4

1 回答 1

1

这对于一个查询是不可能的,至少您需要 2 个,因为您不能将链接过滤器与查询的一部分结合起来:

  • 平面列表

WorkItemType = UserStory AND AssignedTo = @ME

  • 工作项和直接链接

WorkItemType = 任务 AND AssignedTo = @ME

链接工作项的过滤器:

WorkItemType = UserStory AND AssignedTo <> @ME

返回所有顶级工作项

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

[编辑]

另一种选择可能是结合两个查询,但我无法在我的环境中测试它:

  • 工作项和直接链接

(WorkItemType = 任务或 WorkItemType = 用户故事)AND AssignedTo = @ME

链接工作项的过滤器:

WorkItemType = UserStory AND AssignedTo <> @ME

返回所有顶级工作项

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

[编辑2]

<?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>
于 2014-01-30T09:46:31.367 回答