将规则应用于工作流状态(继承过程)

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

为工作项类型添加或修改工作流状态后,定义基于工作流状态更改应用的规则。 向工作流状态添加规则支持以下场景:

  • 支持审批流程
  • 防止未授权用户设置无效状态
  • 基于状态更改使字段成为必需项或只读项或设置其他值
  • 限制从一个状态到另一个状态的转换
  • 限制或允许特定用户或组的状态转换
  • 维护受控的工作流过程,支持审核要求
  • 自动关闭父工作项
  • 支持审批流程
  • 防止未授权用户设置无效状态
  • 基于状态更改使字段成为必需项或只读项或设置其他值
  • 限制从一个状态到另一个状态的转换
  • 自动关闭父工作项

重要说明

继承过程模型适用于配置为支持模型类型的项目。 如果使用较旧的集合,请检查进程模型兼容性。 如果本地集合配置为使用本地 XML 进程模型,则只能使用该进程模型来自定义工作跟踪体验。 有关详细信息,请参阅 组织级进程自定义

先决条件

类别 要求
权限 - 若要在项目级别管理安全组和权限,其中包括为工作流状态设置规则:项目管理员
- 要管理工作跟踪区域:项目管理员或被专门授予工作项跟踪权限。
访问级别 基本 访问权限,这通常足以满足大多数需要管理工作项并将规则应用于工作流状态的用户的需求。

了解工作流规则

下表概述了可以定义的三组工作流规则:

  1. 标准操作:

    • 在创建工作项时、在选定状态中或从一个状态移动到另一个状态时应用。
    • 操作包括设置字段值、使字段只读或使字段成为必需项。
    • 可以指定一个或两个条件和多个操作。
  2. 限制状态转换(组 1):

    • 指定一个条件,指示工作项从中移动的状态。
    • 定义限制从该状态到其他状态的转换的操作。
  3. 限制状态转换(组 2):

    • 与第一组类似,指定一个条件,指示工作项从中移动的状态。
    • 定义限制从该状态到其他状态的转换的操作。

下表概述了可以定义的两组工作流规则:

  1. 标准操作:

    • 在创建工作项时、在选定状态中或从一个状态移动到另一个状态时应用。
    • 操作包括设置字段值、使字段只读或使字段成为必需项。
    • 可以指定一个或两个条件和多个操作。
  2. 限制状态转换:

    • 指定一个条件,指示工作项从中移动的状态。
    • 定义一个或多个限制从该状态到其他状态的转换的操作。

注意

某些功能需要安装 Azure DevOps Server 2020.1 更新。 有关详细信息,请参阅 Azure DevOps Server 2020 Update 1 RC1 发行说明,Boards


条件

支持的操作


基于状态设置字段值或使字段只读/必需

条件,工作项已创建

操作,工作项已创建


根据状态限制转换

条件,工作项已移动

操作,根据状态限制事务。


基于状态以及用户或组成员身份隐藏字段或使字段只读或必填

条件、用户组成员身份

操作,根据状态和成员身份限制事务。


基于用户或组成员身份,设置字段属性或限制状态转换

条件、用户组成员身份

操作,根据状态和成员身份限制事务。


注意

自定义继承的流程时,使用该流程的任何项目都会自动应用这些自定义设置。 为了确保平稳过渡,我们建议您先创建一个测试流程和项目,以测试您的自定义项,然后再在整个组织范围内实施。 有关详细信息,请参阅创建和管理继承的进程

了解工作流状态和规则限制

当你通过以下任何界面添加或修改工作项时,会应用工作流规则:

  • Web 门户:工作项表单、批量更新、查询视图中的更新
  • Web 门户:面板或任务板,将工作项移动到列
  • Visual Studio 2017 及更早版本,工作项表单
  • CSV 文件格式:批量导入或更新
  • Excel:批量导入或更新
  • REST API:添加或修改工作项

下表总结了继承进程的工作流状态和规则限制。

Object 继承限制
为进程定义的工作项类型 64
为工作项类型定义的工作流状态 32
为工作项类型定义的规则 1024

定义工作流状态和规则时,请遵循以下指南以最大程度地减少性能问题:

  • 限制 WIT 的规则数量:虽然你可以为工作项类型 (WIT) 创建多个规则,但更多的规则可能会在用户添加或修改工作项时对性能产生负面影响。 当用户保存工作项时,系统会验证与工作项类型的字段相关联的所有规则。 在某些情况下,规则验证表达式可能变得过于复杂,导致 SQL 无法评估。
  • 限制自定义工作项类型的数量:减少自定义工作项类型的数量有助于保持最佳性能。

定义规则

在基于工作流状态定义规则之前,请确保已具备以下元素:

有关定义规则的更多信息,请参阅添加自定义规则

设置字段值或使字段只读或必需

对于第一组规则,你可以指定一个或两个条件,每个规则最多 10 个操作。

在进行实际工作前确保团队负责人审批的示例

在此示例中,开发团队希望确保在获得团队负责人批准之前,不会处理任何用户情景。 使用默认工作流状态,添加了自定义字段“批准人”和安全组“团队负责人组”

默认工作流状态

敏捷流程、用户情景、默认工作流状态

规则要求

为确保在进行实际工作前获得批准,请定义以下规则:

  • 当状态从“新建”移动到“活动”时,要求填写“批准人”字段
  • 限制不在“团队负责人组”中的用户填写“批准人”字段
  • 当状态移动到“新建”或“已移除”时,清除“批准人”字段

规则定义

这些规则要求转换为以下四个规则定义。


规则名称

条件

操作


状态为“新建”时清除“批准人”

A work item state changes to New

Clear the value of Approved By

状态为“已移除”时清除“批准人”

A work item state changes to Removed

Clear the value of Approved By

“批准人”只读

Current user is not member of group Team Leads Group

Make read-only Approved By

“批准人”为必需项

A work item state changes from New to Active

Make required Approved By


限制状态转换

在指定条件 A work item state moved from ... 时,你只能指定该条件。 你可以指定最多 10 个操作。

注意

此功能需要 Azure DevOps Server 2020.1 更新或更高版本。

限制状态转换和“已批准”状态的示例

为用户情景定义了以下工作流状态。 “新建”、“已解决”和“已移除”继承状态被隐藏。 而是使用“提议”、“审阅中”和“已剪切”状态。 此外,还定义了三个更多状态:“调查”、“设计”和“已批准”。 这些状态应遵循下图所示的顺序。

用户情景、工作流状态

如果没有任何限制,用户可以在序列中前后从一个状态移动到任何其他状态。

规则要求

为了支持更受控的工作流,业务组决定制定规则,支持用户情景工作项类型上的以下正向和反向状态转换。

状态 转换规则
提议 只能移动到“调查”和“已剪切”
调查 只能移动到“设计”和“已剪切”
设计 只能移动到“调查”、“已批准”和“已剪切”
已批准 只能移动到“设计”、“活动”和“已剪切”
活动 只能移动到“审阅中”
审阅中 只能移动到“活动”(发现更多工作)、“已关闭”或“已剪切”
已关闭 可以移动到“调查”、“设计”、“活动”、“审阅中”(允许用户错误关闭工作项的情况)
剪切 只能移动到“提议”

注意

限制状态转换时,要考虑用户可能错误移动状态的情况。 确保用户可以顺利恢复。

此外,业务组希望应用以下必需字段规则:

  • 当状态从“已批准”移动到“活动”时,要求填写“批准人”字段。
  • 只允许“授权审批人”组中的用户填写“批准人”字段。
  • 当状态移动到“已剪切”时,清除“批准人”字段。
  • 当状态移动到“活动”时,要求填写“验收标准”字段。

规则定义

为实现前面提到的限制,流程管理员添加了自定义“批准人”标识字段、“授权审批人”安全组以及以下规则。


规则名称

条件

操作


“提议”状态

A work item state moved from Proposed

Restrict the state transition to Design
Restrict the state transition to Approved
Restrict the state transition to Active
Restrict the state transition to In Review
Restrict the state transition to Closed

“调查”状态

A work item state moved from Research

Restrict the state transition to Proposed
Restrict the state transition to Approved
Restrict the state transition to Active
Restrict the state transition to In Review
Restrict the state transition to Closed

“设计”状态

A work item state moved from Design

Restrict the state transition to Proposed
Restrict the state transition to Research
Restrict the state transition to Active
Restrict the state transition to In Review
Restrict the state transition to Closed

“已批准”状态

A work item state moved from Approved

Restrict the state transition to Proposed
Restrict the state transition to Research
Restrict the state transition to Design
Restrict the state transition to In Review
Restrict the state transition to Closed

“活动”状态

A work item state moved from Active

Restrict the state transition to Proposed
Restrict the state transition to Research
Restrict the state transition to Design
Restrict the state transition to Approved
Restrict the state transition to Closed

“审阅中”状态

A work item state moved from In Review

Restrict the state transition to Proposed
Restrict the state transition to Research
Restrict the state transition to Design
Restrict the state transition to Approved

“已关闭”状态

A work item state moved from Closed

Restrict the state transition to Proposed
Restrict the state transition to Cut

“已剪切”状态

A work item state moved from Cut

Restrict the state transition to Research
Restrict the state transition to Design
Restrict the state transition to Approved
Restrict the state transition to Active
Restrict the state transition to In Review
Restrict the state transition to Closed

“已批准”状态必需字段

A work item changes from Approved to Active

Make required Acceptance Criteria
Make required Approved By

授权审批人

Current user is not a member of Authorized Approvers

Make read-only Approved By

清除“批准人”字段

A work item state changes to Cut

Clear the value of Approved By


验证状态转换限制

定义流程规则并更新项目后,刷新浏览器。 通过工作项表单和浏览器验证操作。

对于前面表格中定义的规则,请检查“状态”下拉菜单。 打开面板并确保可以从一个状态移动到另一个状态。

提议 调查 设计 已批准
提议菜单 调查菜单 设计菜单 已批准菜单
活动 In Review 已关闭 剪切
活动菜单 审阅中菜单 已关闭菜单 已剪切菜单

基于用户或组成员身份限制状态转换

当你指定基于用户或组成员身份的两个条件之一(Current user is member of group ...Current user is not member of group ...)时,你只能指定一个条件。 此外,如果指定操作 Restrict the transition to state...,则只能指定一个操作。

注意

工作项要遵守适用于它们的规则。 基于用户或组成员身份的条件规则会缓存在 Web 浏览器中。 如果你发现自己被限制更新某个工作项,可能是受制于以下规则之一。 如果你认为遇到的问题并不适用,请参阅工作项表单 IndexDB 缓存问题

自动执行父工作项的状态转换

要基于子工作项的状态分配自动执行父工作项的状态转换,请参阅自动执行工作项状态转换

基于状态更改自动重新分配

敏捷流程的 bug 工作项类型以前有一个规则,将 bug 重新分配给其创建者。 我们从默认系统流程中移除了此规则。 你可以使用以下条件和操作恢复该规则或向其他工作项类型添加类似规则:

A work item state changes to已解决Copy the value from 创建者分配给