按Azure Boards中的分配或工作流更改进行查询
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018
工作流中的状态支持跟踪工作状态,因为它从新状态移动到已关闭或已完成状态。 看板查询字段支持在看板中从一列或泳道移动到另一列或泳道时跟踪工作状态。
每个工作流由一组状态、状态之间的有效转换以及将工作项转换为所选状态的原因组成。 工作流状态和原因 因用于创建项目的工作项类型和默认过程而异。
大多数工作项从 “新建”、“ 活动”或“ 建议 ”状态移动到 “完成” 或“ 已关闭” 状态。 当每个工作项从一种状态变为另一种状态时,可能也将此项重新分配了给团队的不同成员。 例如,测试人员可能创建一个 Bug,在会审过程中将其分配给其他团队成员。 当另一个团队成员解决 bug 时,它会重新分配给创建该 bug 的测试人员。
例如,可以找到已关闭但随后重新激活的所有工作项。 通过指定 “更改日期” 字段,可以专注于今天、昨天或上周发生的重新激活。
还可以使用 “激活者 ”和 “激活日期” 字段或其他工作流字段。
提示
并非所有字段对所有工作项类型都有效。 跳转到 工作流和看板查询字段 ,查看可包含在查询中的字段集及其应用于的工作项类型。
如果你不熟悉如何创建查询,请参阅 使用查询编辑器列出和管理查询。
支持的运算符和宏
指定标识或与工作流关联的字段的查询子句可以使用下表中列出的运算符和宏。 若要了解字段数据类型,请参阅本文后面提供的 工作流和看板字段 。
Data type
支持的运算符和宏
布尔值1
= , <> , =[Field] , <>[Field]
DateTime
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever
宏: @Today
, @Today +/- n
与任何 DateTime 字段一起有效
标识
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], Contains, Does Not Contain, In, Not In, In Group, Not In Group, Was Ever
宏: @Me
对所有标识字段有效
单个文本 (字符串) 2
= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], Contains, Does Not Contain, In, Not In, In Group, Not In Group, Was Ever
In
使用 和 Not In
运算符筛选或排除两个或多个选取列表条目或一组带分隔符的项。 In Group
使用 或 Not In Group
运算符筛选属于或不属于类别组或安全组的项目。 有关详细信息,请参阅 查询字段、运算符和宏。
日期和时间模式
为 DateTime 字段输入的日期和时间模式应与通过配置文件选择的日期和时间模式匹配。 若要查看或更改选择,请参阅 设置用户首选项、时间和区域设置。
基于标识的查询
使用搜索框或查询编辑器根据对 “标识” 字段所做的分配快速查找工作项。 此外,还可以根据更改、解析或关闭工作项的人员筛选工作项。 通过指定时间段,可以进一步限定查询的范围,这有助于提高性能。
使用 =
查找当前分配, Was Ever
根据过去的分配列出项,以及 @Me
将范围限定为用户标识。
筛选
包括这些查询子句
分配给我的活动项目
Assigned To @Me
And State = Active
在某个时间点分配给我的已关闭项目
Assigned To Was Ever @Me
And State = Closed
分配给 Web 团队的活动用户情景
Work Item Type = User Story
And State = Active
And Assigned To In Group [FabrikamFiber]\Web
我在过去 30 天内修改过的项目
Changed By = @Me
And Changed Date >= @Today-30
未分配的项 (将 “值 ”留空)
Assigned To = _
团队或组成员身份查询
若要筛选分配给属于团队或安全组的人员的项目,请使用 “组内 ”运算符。
可以使用“ 分组中 ”或“ 不在组内 ”运算符,根据属于组成员或不是组成员的多个值筛选查询。 可以指定的组示例包括以下项:
- 团队
- 内置安全组和自定义安全组
- Azure Active Directory 和 Active Directory 安全组
- 工作项类别
基于工作流更改的查询
可以使用“状态”、“原因”和“已解决的原因”字段根据工作流更改查询项。
筛选
包括这些查询子句
已解决的故事
Work Item Type = User Story
And State = Resolved
新建或处于活动状态的故事、bug 和任务
Work Item Type In User Story,Bug,Task
And State In New,Active
重复时删除的项目
State= Removed
And Reason = Duplicate
项目未通过验收测试
Resolved Reason = Acceptance tests fail
过去 15 天内关闭的项目
State = Closed
And Closed Date > @Today-15
工作流更改和基于标识的查询
可以快速找到已更改、已解决或关闭的项目。 还可以查找其他团队成员更改的项目。 多个字段(如“创建者”、“更改者”、“解决者”和“已关闭者”)根据工作流的更改进行填充。
筛选
包括这些查询子句
我关闭的用户情景
Work Item Type = User Story
And Closed By = @Me
我上周解决的项目
Resolved By = @Me
And Resolved Date >= Today-7
查询工作项状态中的更改
若要列出在特定日期范围内已更改状态的工作项,可以使用 “状态更改日期” 字段缩小搜索范围,然后为 “状态 ”字段的更改添加子句。 下图中显示了一个示例。
查询看板更改
使用看板查询字段(“板列”、“板列完成”和“板通道”)可以根据工作项在看板上的流状态列出工作项。 并且,可以根据这些查询创建 状态或趋势图 。
可以基于团队区域路径列出项目,以及它们是否位于特定的自定义看板列和泳道中。 如果重命名列或泳道,则需要更新查询筛选器以反映新名称。 有关更多想法,请参阅此博客文章: 新字段为查询带来看板优等
注意
查询现在默认限定为当前项目。 检查 “跨项目查询 ”,查找集合内其他项目中定义的工作项。
筛选
包括这些查询子句
“代码/执行”列中的用户情景
Work Item Type = User Story
And
Board Column = Code
And
Board Column Done = False
加速泳道中的项目
Board Lane = Expedite
其标签包含“Test”的任何泳道中的项目
Board Lane Contains Test
曾经在“审阅中”列中的项目
Board Column Was Ever In Review
重要
显示在多个团队看板上的工作项可能会产生不符合预期的结果,因为每个团队都可以自定义看板栏和泳道。 分配给看板 栏、 板栏已完成和 板通道 字段的值可能与另一个团队从其他版块更新工作项时所期望的值不同。 若要了解详细信息,请参阅在 Azure Boards 中添加、查看和更新工作项。
工作流和看板字段
以下字段可用于筛选查询。 当工作项从一个状态进展到另一个状态时,其中一些字段会更新。 或者,当你将 看板 中的工作项移动到其他列或泳道时,它们会更新。 其中一些字段未显示在工作项窗体上,但会针对下表中列出的工作项类型跟踪这些字段。
有关字段属性的详细信息,请参阅 工作项字段和属性。
字段名称
说明
工作项类型
激活者 1,2,3
将工作项的状态更改为“ 正在进行” 类别状态的团队成员的姓名。
将工作项的状态从 “新建 ”更改为 “活动 ”或在工作项关闭、完成或完成后重新激活工作项的团队成员的姓名。
引用名称=Microsoft.VSTS.Common.ActivatedBy
数据类型=字符串 (标识)
Bug、更改请求、Epic、功能、问题、产品积压工作项、要求、审阅、风险、共享步骤、任务、测试用例、用户情景
激活日期 1、3
工作项更改为“ 正在进行” 类别状态的日期和时间。
工作项在关闭、完成或完成之后从 “新建 ”更改为 “活动” 或重新激活的日期和时间。
引用名称=Microsoft.VSTS.Common.ActivatedDate
数据类型=DateTime
All
分配给 2
分配给 2、3、4
当前拥有该工作项的团队成员的名称。 有关详细信息,请参阅 有关同步和人名字段的注释 1。
引用名称=System.AssignedTo
数据类型=字符串 (标识)
All
板栏
工作项的当前看板列分配,例如:Active、Closed、Committed、Done 或其他自定义列分配。
引用名称=System.BoardColumn
数据类型=字符串
要求类别 4
要求类别 5
板列完成
当前的工作项分配到“执行 (False) ”或“完成” (True) 看板列。 仅在为看板 列启用拆分列 时分配。
引用名称=System.BoardColumnDone
数据类型=Boolean
要求类别 4
要求类别 5
Board Lane
工作项的当前看板泳道分配,例如:默认、加速、阻止或其他自定义泳道分配。
引用名称=System.BoardLane
数据类型=字符串
要求类别 4
要求类别 5
由 1、2 关闭
由 1、2、3 关闭
将状态设置为“已关闭”、“已完成”或“已完毕”的团队成员的名称。
引用名称=Microsoft.VSTS.Common.ClosedBy
数据类型=字符串 (标识)
All
关闭日期
关闭工作项的日期和时间。
引用名称=Microsoft.VSTS.Common.ClosedDate
数据类型=DateTime
All
创建者 1,2
创建者 1、2、3
创建了该工作项的团队成员的名称。
Reference name='System.CreatedBy
数据类型=字符串 (标识)
All
创建日期
创建工作项的日期和时间。
引用名称=System.CreatedDate
数据类型=DateTime
全部
原因
原因 3,4
工作项处于当前状态的原因。 从一个工作流状态到另一个工作流状态的每次转换都与相应的原因相关联。
对于本地 XML 进程模型,使用 元素在工作项类型定义的 REASON
节中WORKFLOW
定义原因值。 若要修改定义的原因,请参阅 更改工作项类型的工作流。
引用名称=System.Reason
数据类型=字符串
除测试用例和共享步骤以外的所有 ()
已解决 1,2
已解决 1、2、3
将工作项的状态更改为“ 已解决 ”类别状态的团队成员的姓名。
将工作项的状态更改为“ 已解决 ”或“已完成”工作流状态的团队成员的姓名。
Reference name=Microsoft.VSTS.Common.ResolvedBy
, Data type=String (Identity)
All
解决日期
已解决日期 1,2
工作项更改为“ 已解决” 类别状态的日期和时间。
将工作项移动到 “已解决” 或“已完成”工作流状态的日期和时间。
引用名称=Microsoft.VSTS.Common.ResolvedDate
,数据类型=DateTime
全部
解决原因
已解决原因 3
已解决工作项的原因。 例如,用户案例代码已完成或 Bug 已修复。 此字段是只读的,且仅对 Agile 和 CMMI 工作项类型有效。
引用名称=Microsoft.VSTS.Common.ResolvedReason
数据类型=字符串
所有 (Agile、CMMI)
审阅者
响应代码评审请求并在代码评审响应中编录的团队成员的姓名。
引用名称=Microsoft.VSTS.Common.ReviewedBy
数据类型=字符串 (标识)
代码评审响应
状态
状态 3、4
工作项的当前状态。 通过此字段,可在工作项从“新的”或“活动的”变为“已完成”或“已关闭”状态时,更新工作项状态。
若要修改工作流状态,请参阅 自定义流程的工作流。
若要修改工作流状态,请参阅以下文章:
- 有关继承的进程模型:请参阅 自定义进程的工作流
- 对于本地 XML 进程模型:请参阅 更改工作项类型的工作流。
若要修改工作流状态,请参阅 更改工作项类型的工作流。
引用名称=System.State
数据类型=字符串
All
状态更改日期
“状态”字段的值变更的日期和时间。
引用名称=Microsoft.VSTS.Common.StateChangeDate
数据类型=DateTime
All
注意
- 请参阅 日期和标识字段。
- 默认情况下,服务器将系统定义的人员名称或基于标识的字段与 Active Directory 或 Azure Active Directory 同步。 这些字段包括: Activated By、 Assigned To、 Closed By、 Created By 和 Resolved By。 可以通过添加在 AD 或 Azure AD 中创建的安全组,或者将帐户添加到从集合设置 “安全性 ”页定义的现有组或自定义组来授予对项目的访问权限。 请参阅设置 Active Directory 或 Azure Active Directory。
- 请参阅 Activated By/Date 和 Resolved By/Date 字段。
- “要求类别”适用于产品积压工作和看板上显示的所有工作项类型,并可能包括根据“ 在板和积压工作上显示 bug”的团队设置添加到 Bug 类别的类型。 有关工作项类型类别的详细信息,请参阅 使用类别对工作项类型进行分组。
注意
即使向工作项窗体中添加与版块相关的字段(如“板栏”或“板通道”),也无法从窗体中修改该字段。
请参阅 日期和标识字段。
默认情况下,服务器将系统定义的人员名称或基于标识的字段与 Active Directory 或 Azure Active Directory 同步。 这些字段包括:“激活”、“分配给”、“关闭者”、“创建者”和“解决者”。 可以通过添加在 AD 或 Azure AD 中创建的安全组,或者将帐户添加到从集合设置 “安全性 ”页定义的现有组或自定义组来授予对项目的访问权限。 请参阅设置 Active Directory 或 Azure Active Directory。
对于本地部署,可以使用 witadmin changefields 命令行工具启用或禁用人员名称字段的同步。 还可以通过指定 syncnamechanges 属性来同步自定义人员名称字段。 请参阅 管理工作项字段 和 FIELD (定义) 元素引用。
属性设置为 Dimension 的可报告字段。 仅当集合配置为支持本地 XML 模型时有效。 可报告数据将导出到数据仓库,并且可以包含在 Excel 或SQL Server报表中。 对于本地 Azure DevOps,请使用 witadmin changefield 命令更改字段的可报告属性。
索引字段。 为字段启用索引可以提高查找其查询指定该字段的工作项的性能。 对于本地 Azure DevOps,请使用 witadmin indexfield 命令 更改字段的索引属性。
要求类别适用于产品积压工作和看板中显示的所有工作项类型。 类别包括根据在 板和积压工作上显示 bug 的团队设置添加到 Bug 类别的那些项。 有关工作项类型类别的详细信息,请参阅 使用类别对工作项类型进行分组。
注意
即使向工作项窗体中添加与版块相关的字段(如 “板栏” 或“ 板通道”),也无法从窗体中修改该字段。
人员选取器
人员选取器功能支持“ 分配到 ”字段。 例如,从工作项窗体中选择“ 分配到 ”字段时,将激活人员选取器。 如下图所示,只需开始键入要选择的用户的名称,然后进行搜索,直到找到匹配项。 之前选择的用户会自动显示在列表中。 若要选择之前未选择的用户,请输入其全名或针对完整目录进行搜索。
讨论中显示人员选取器@mention 工具的屏幕截图。” />
对于使用 Azure Active Directory (Azure AD) 或 Active Directory 管理其用户和组的组织,人员选取器支持搜索添加到 AD 中的所有用户和组,而不仅仅是添加到项目中的用户和组。
若要将可供选择的标识范围限制为仅添加到项目的那些用户,可以使用 “项目范围用户” 组执行此操作。 有关详细信息,请参阅 管理组织、限制标识搜索和选择。
日期和标识字段
根据工作流状态或转换设置多个日期和标识字段。 某些字段(如 “创建者” 和“ 创建日期”)在添加工作项时由系统设置。 其他字段(如 “关闭日期 ”和“ 关闭者”)是通过工作项类型的工作流定义设置的。 此外,自定义的工作项类型可能还定义了影响日期和标识字段分配的其他规则。
日期和时间模式
为 DateTime 字段输入的日期和时间模式应与通过配置文件选择的日期和时间模式匹配。 若要查看或更改选择,请参阅 设置用户首选项、时间和区域设置。
状态更改
以下 XML 语法示例演示了可以为控制选择字段值的工作项类型定义的规则。
此处,当 State 值设置为 EMPTY
New 时,“解决日期”、“解决者”、“关闭日期”、“关闭日期”、“激活日期”和“激活者”字段设置为 。 首先计算状态值分配,然后计算转换分配。
<WORKFLOW>
<STATES>
<STATE value="New">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedBy">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
<EMPTY />
</FIELD>
</FIELDS>
</STATE>
<STATE value="Active">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedBy">
<EMPTY />
</FIELD>
</FIELDS>
</STATE>
<STATE value="Resolved">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedBy">
<EMPTY />
</FIELD>
</FIELDS>
</STATE>
<STATE value="Closed" />
</STATES>
Activated By 和 Activated Date 转换分配
当 Bug 工作项发生以下转换时,对“激活者”和“激活日期”字段进行以下分配:
<TRANSITION from="" to="New">
<TRANSITION from="New" to="Active">
<TRANSITION from="New" to="Resolved">
<TRANSITION from="New" to="Closed">
<TRANSITION from="Resolved" to="Active">
<TRANSITION from="Closed" to="Active">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
<COPY from="currentuser" />
<VALIDUSER />
<REQUIRED />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
<SERVERDEFAULT from="clock" />
</FIELD>
</FIELDS>
当 Bug 工作项发生以下转换时:
<TRANSITION from="Active" to="New">
<TRANSITION from="Active" to="Closed">
<TRANSITION from="Resolved" to="Closed">
然后将“激活者”和“激活日期”字段设置为 READONLY
。
<FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
<READONLY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
<READONLY />
</FIELD>
“激活者/日期”和“解决者/日期”字段
当基于相应的工作流类别状态发生更改时,系统会更新这些字段(“激活者”、“ 激活日期”、“ 解决者”和“ 解决日期”)。 当工作流状态更改为“建议”状态类别时,将更新“激活者”和“激活日期”。 当工作流状态更改为“ 已解决” 状态类别时,将更新“ 解决者 ”和“ 解决日期 ”。
若要详细了解工作流状态如何映射到状态类别,请参阅 如何在积压工作和版块中使用工作流状态和状态类别。
注意
管理此处所述的字段的逻辑适用于Azure DevOps Services、Azure DevOps Server 2020.1 更新和更高版本。
由于这些字段引用工作流状态类别,因此在更新字段时将引用您添加的自定义工作流状态。 若要了解有关自定义的详细信息,请参阅 自定义流程的工作流。
其他说明:
- 只要工作项从除所设置的类别状态以外的任何类别状态移动,字段都会更新。 例如,如果将工作项从 “新建 ”更新为“ 已修复”,则会更新“ 解决者/解决日期” 字段。 但是,如果从“ 已修复 ”和 “准备进行测试”进行更新(属于同一类别状态),则不会更新“ 解决者”/“已解决日期” 字段。
- 当向后转换时,例如从“ 已解决” 状态转换为 “活动” 状态时,系统会清除“ 解决日期”/“解析日期” 字段的值。 如果从 “活动” 更改为 “新建”,系统将清除“ 激活者”/“激活日期” 字段的值。
- 请勿手动更改这些字段的值。 它们是受系统规则约束的系统字段。 尝试设置的任何值都将超过写入。
相关文章
REST API
若要以编程方式与查询交互,请参阅以下 REST API 资源之一: