定义要添加到过程模板中的工作项查询

Azure DevOps Server 2020 |Azure DevOps Server 2019 |TFS 2018

可以将工作项查询保存为 .wiq 可以添加到进程模板的文件。 有关如何创建工作项查询的详细信息,请参阅 定义查询

先决条件

  • 若要创建查询,你必须是 读取者 组的成员,否则 此节点权限中的“查看工作项 ”必须设置为 “允许 ”查询中的每个项目。
  • 若要将查询另存为团队查询,必须具有 “设置查询权限”中所述的适当权限

将工作项查询另存为 .wiq 文件

可以安装 Wiql 编辑器 市场扩展,以便将文件的导入和导出 .wiq 添加到 Web 门户。 若要了解详细信息,请参阅 跨服务和增强型查询操作

否则,可以使用团队资源管理器将查询另存为 .wiq 文件。

  1. 在团队资源管理器中,打开要保存的查询。

  2. “文件 ”菜单上,选择 “保存 <查询> 名称 [查询] As”。

  3. 在“ 另存为查询 ”对话框中,选择 “文件”,并为该文件指定位置和文件名 .wiq 。 或者,选择 “浏览”,指定文件名,浏览到保存文件的位置,然后选择“ 保存”。

  4. 将文件复制到 \WorkItem Tracking\Queries 文件夹,该文件夹位于下载进程模板的文件夹中。

  5. 在文本编辑器中打开 .wiq 文件。

  6. <TeamFoundationServer><TeamProject>删除将查询与运行 Visual Studio Team Foundation Server 的特定服务器和特定项目的元素相关联,如以下示例所示:

    <TeamFoundationServer>CollectionURL</TeamFoundationServer>  
    <TeamProject>ProjectName</TeamProject>  
    

    注意

    必须在文本编辑器中编辑 .wiq 文件,并删除 <TeamFoundationServer> 与特定服务器和项目关联的查询和 <TeamProject> 元素。 否则,当将过程模板上载到其他服务器时,查询将不能正常工作。 作为替代方法,可以使用宏,以便查询不包含当前项目的显式名称或任何其他特定于特定环境的值。

  7. 移除特定于某用户的任何其他元素。

创建引用迭代路径的工作项查询

可以通过包括项目宏、$$PROJECTNAME$$以及分类插件文件中定义的迭代路径的名称来定义引用特定迭代路径的查询。 例如,以下语法指定只包括那些迭代路径位于迭代 1 下的工作项的查询。

AND  [Source].[System.IterationPath] UNDER '$$PROJECTNAME$$\Iteration 1'  

创建项目后,宏将替换为项目的名称。

通过使用此宏,你可以定义引用特定迭代路径的工作簿。 敏捷过程模板包含一个迭代特定的查询 Iteration1Backlog.wiq,该查询支持特定于迭代的工作簿迭代 Backlog.xlsm。

上载特定于迭代的查询时,处理 Classification.xml 文件的任务必须在处理查询文件的任务之前完成。 有关详细信息,请参阅 定义初始区域、迭代和项目映射文件 以及 定义根任务

迭代特定工作项查询示例

下面的示例演示了支持“迭代积压工作 (backlog)”工作簿的 Iteration1Backlog 工作项查询。 有关 WIQL 的详细信息,请参阅 工作项查询语言

<?xml version="1.0" encoding="utf-8"?>  
<WorkItemQuery Version="1">  
  <Wiql>  
    SELECT [System.Id],  
           [System.WorkItemType],  
           [System.Title],  
           [System.State],  
           [System.AssignedTo],  
           [Microsoft.VSTS.Scheduling.RemainingWork],  
           [Microsoft.VSTS.Scheduling.CompletedWork],  
           [Microsoft.VSTS.Scheduling.StoryPoints],  
           [Microsoft.VSTS.Common.StackRank],  
           [Microsoft.VSTS.Common.Priority],  
           [Microsoft.VSTS.Common.Activity],  
           [System.IterationPath],  
           [System.AreaPath]  
      FROM WorkItemLinks  
     WHERE (Source.[System.TeamProject] = @project   
       AND  [Source].[System.AreaPath] UNDER @project  
       AND  [Source].[System.IterationPath] UNDER '$$PROJECTNAME$$\Iteration 1'  
       AND (  
               Source.[System.WorkItemType] = 'User Story'   
            OR Source.[System.WorkItemType] = 'Task'  
           )  
           )  
       AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'  
       AND [Target].[System.WorkItemType] = 'Task'  
       ORDER BY [Microsoft.VSTS.Common.StackRank], [Microsoft.VSTS.Common.Priority]  
       mode(Recursive)  
  </Wiql>  
</WorkItemQuery>  

WorkItemQuery 元素引用

以下语法显示了 WorkItemQuery 元素及其子元素的结构。

<WorkItemQuery Version="1">  
      <TeamFoundationServer>collectionURL </TeamFoundationServer>  
      <TeamProject>TeamProjectName </TeamProject>  
      <Wiql>  
      WorkItemQueryLanguage  
      </Wiql>  
</WorkItemQuery>  

备注

对于针对 Azure DevOps 进行的查询,WIQL 长度不得超过 32K 个字符。 系统不允许创建或运行超过该长度的查询。

元素 语法 说明
TeamFoundationServer <TeamFoundationServer>
collectionURL
</TeamFoundationServer>
WorkItemQuery 的可选子元素。

重要: 通常,将从添加到进程模板的查询中删除此元素。

使用以下格式指定项目集合的 URI:

http://ServerName:Port/VirtualDirectoryName/CollectionName

如果未使用虚拟目录,则对 URI 使用以下格式:

http://ServerName:Port/CollectionName

属性类型为 ServerNameType ,最大长度为 2047。
TeamProject <TeamProject>
TeamProjectName
</TeamProject>
WorkItemQuery 的可选子元素。

重要: 通常,将从添加到进程模板的查询中删除此元素。

指定要对其运行查询的项目。

属性类型为 ProjectNameType ,最大长度为 255 个字符。
Wiql <Wiql>
WorkItemQueryLanguage
</Wiql>
WorkItemQuery 的必需子元素。

指定一系列结构化查询语言 (SQL) 命令,这些命令充当筛选条件,在项目中查找一组工作项,并返回分配给一组字段的值。 有关详细信息,请参阅 工作项查询语言

默认进程模板提供了 Wiql 元素支持的 SQL 命令的几个示例。 这些文件位于 WorkItem Tracking 文件夹的 Queries 文件夹中。