如何创建TFS查询返回状态为Accepted或子项为Accepted的Product Backlog Items
嘿,我来教你怎么创建这个符合需求的TFS查询,刚好之前处理过类似的场景!
创建目标TFS查询的详细步骤
我们要找的是两类Product Backlog Items(PBI):
- 自身状态为Accepted的PBI
- 本身状态非Accepted,但至少有一个子项(比如Task、Bug这类层级链接的工作项)状态为Accepted的PBI
下面分两种实用方式来实现,你可以根据自己的TFS版本和使用习惯选择:
方式一:可视化工作项链接查询(推荐,操作直观)
这种方式通过TFS的可视化查询编辑器就能完成,不需要写代码:
- 打开TFS的查询管理界面,新建一个工作项链接查询
- 第一个筛选组:设置直接匹配自身状态为Accepted的PBI
- 工作项类型 = Product Backlog Item
- 状态 = Accepted
- 添加第二个筛选组(记得把两个组的逻辑关系改成OR),用来匹配有Accepted子项的PBI:
- 先设置父项条件:工作项类型 = Product Backlog Item
- 点击「添加链接」,选择链接类型为Child,然后设置子项的筛选条件:状态 = Accepted
- 保存查询后运行,就能看到符合要求的结果了——比如你例子里的“Commandline Util”,哪怕自身状态是New,只要有Accepted的子项就会被纳入结果
方式二:WIQL自定义查询(适合复杂场景)
如果你熟悉TFS的工作项查询语言(WIQL),可以直接编写以下语句,导入到TFS中执行:
SELECT [System.Id], [System.Title], [System.State], [System.WorkItemType] FROM WorkItemLinks WHERE ( Source.[System.WorkItemType] = 'Product Backlog Item' AND Source.[System.State] = 'Accepted' ) OR ( Source.[System.WorkItemType] = 'Product Backlog Item' AND Target.[System.WorkItemType] IN ('Task', 'Bug') -- 可根据你的项目子项类型调整 AND Target.[System.State] = 'Accepted' AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' ) ORDER BY [System.Id] MODE (Recursive, ReturnMatchingChildren)
小提示
- 如果用的是Azure DevOps(TFS的云版本),操作逻辑完全一致,只是界面细节略有不同
- 子项的工作项类型可以根据你的项目配置调整,比如有的项目子项还包含子PBI,记得修改对应的筛选值
- 运行查询后,你可以通过「列选项」添加子项状态、子项ID等字段,方便直接查看关联的Accepted子项信息
内容的提问来源于stack exchange,提问作者Peter H.
相关产品推荐
相关产品推荐

