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

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

为工作项类型添加或修改工作流状态后,可能需要根据工作流状态更改定义一个或多个应用的规则。 将规则添加到工作流状态支持以下方案:

  • 支持审批流程
  • 防止未经授权的用户设置无效状态
  • 根据状态更改将字段设置为必填字段、只读字段或其他值
  • 限制从一种状态到另一种状态的转换
  • 限制或允许状态转换到特定用户或组
  • 维护受控工作流流程以支持审核要求
  • 自动关闭父工作项
  • 支持审批流程
  • 防止未经授权的用户设置无效状态
  • 根据状态更改将字段设置为必填字段、只读字段或其他值
  • 限制从一种状态到另一种状态的转换
  • 自动关闭父工作项
  • 支持审批流程
  • 根据状态更改将字段设置为必填字段、只读字段或其他值
  • 自动关闭父工作项

查看本文,了解如何定义在更改工作流状态时适用的规则。

  • 了解工作流规则的类型
  • 工作流状态和规则限制以及最佳做法
  • 根据状态选择设置字段值或使字段为只读或必需
  • 限制状态转换
  • 限制或允许状态转换到特定用户或组
  • 自动执行父工作项的状态转换
  • 了解工作流规则的类型
  • 工作流状态和规则限制以及最佳做法
  • 根据状态选择设置字段值或使字段为只读或必需
  • 限制状态转换
  • 自动执行父工作项的状态转换
  • 了解工作流规则的类型
  • 工作流状态和规则限制以及最佳做法
  • 根据状态选择设置字段值或使字段为只读或必需
  • 自动执行父工作项的状态转换

重要

本文适用于 Azure DevOps Services 和 Azure DevOps Server 2019 及更高版本。 若要自定义针对 TFS 2018 或更早版本的集合定义的任何项目,请参阅 本地 XML 进程模型

重要

只能对配置为支持继承过程模型的项目集合上定义的项目使用继承过程模型。 如果本地集合配置为使用本地 XML 进程模型,则只能使用该进程模型来自定义工作跟踪体验。 若要了解详细信息,请参阅 自定义工作跟踪、为项目集合选择流程模型

若要自定义针对 TFS 2018 或更早版本的集合定义的任何项目,请参阅 本地 XML 进程模型

工作流规则

下表指出了可以定义的三组工作流规则。 创建工作项时、处于选定状态或从一个状态移动到另一个状态时,第一个组应用标准操作。 这些标准操作设置字段的值,或使字段为只读或必需。 在此组中,可以指定一个或两个条件和多个操作。

第二组和第三组支持限制状态转换。 这两个组允许指定一个条件,并且只指定一个条件,指示工作项已移动到的状态。 然后,可以指定一个或多个操作来限制从该状态到其他状态的转换。

下表指示可以定义的两组工作流规则。 创建工作项时、处于选定状态或从一个状态移动到另一个状态时,第一个组应用标准操作。 这些标准操作设置字段的值,或使字段为只读或必需。 在此组中,可以指定一个或两个条件和多个操作。

第二个组支持限制状态转换。 在此第二个组中,可以指定一个且唯一一个条件,指示工作项已移动到的状态。 然后,可以指定一个或多个操作来限制从该状态到其他状态的转换。

注意

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

下图演示了可以设置的工作流条件和操作。 在创建工作项、处于选定状态或从一个状态移动到另一个状态时,可以应用标准操作。 这些标准操作设置字段的值,或使字段为只读或必需。 对于这组规则,可以指定一个或两个条件和多个操作。


条件

支持的操作


根据状态设置字段值或设为只读/必需

创建工作项的条件

已创建操作和工作项


根据状态限制转换

条件,工作项已移动

操作,基于状态限制事务。


根据状态和用户或组成员身份隐藏字段或将字段设置为只读或必需

条件,用户组成员身份

操作,基于状态和成员身份限制事务。


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

条件,用户组成员身份

操作,基于状态和成员身份限制事务。


注意

自定义继承的过程时,使用该过程的所有项目都会自动更新以反映自定义项。 出于此原因,建议在进行大量自定义时创建测试过程和测试项目,以便在向组织推出自定义项之前对其进行测试。 若要了解详细信息,请参阅 创建和管理继承的进程

工作流状态和规则限制

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

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

定义工作流状态和规则时,建议考虑以下指南,最大程度地减少性能问题。

  • 最大程度地减少为 WIT 定义的规则数。 虽然可以为 WIT 创建多个规则,但当用户添加和修改工作项时,添加规则可能会对性能产生负面影响。 当用户保存工作项时,系统将验证与其工作项类型字段关联的所有规则。 在某些情况下,规则验证表达式过于复杂,SQL 无法计算。
  • 最大程度地减少定义的自定义 WIT 数量。

通过以下任一接口添加或修改工作项时,将应用工作流规则:

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

定义规则

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

有关定义规则的基础知识,请参阅 添加自定义规则。 必须满足该文章中定义的先决条件。

设置字段值或将字段设置为只读或必需

通过第一组规则,可以指定一个或两个条件,每个规则最多可以指定 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 更新或更高版本。

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

根据业务组使用的术语,为用户情景定义了以下工作流状态。 “ 新建”、“ 已解决”和 “已删除 ”继承状态处于隐藏状态。 而是使用 “建议”、“ 审阅”和“ 剪切 状态”。 此外,还定义了另外三个州: “调查”、“ 设计”“已批准”。 这些状态应遵循下图所示的顺序。

用户情景,工作流状态

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

规则要求

为了支持更受控的工作流,业务组决定制定规则,以支持对 User Story 工作项类型进行以下向前和反向状态转换。

  • 建议只能移动到研究和削减
  • 研究 只能转向 “设计 ”和 “剪切”
  • 设计只能移动到“研究”、“已批准”和“剪切
  • “已批准 ”只能移动到 “设计”、“ 活动”和“ 剪切”
  • 活动 只能移动到 “审阅中”
  • 在“审阅”中,只能移动到“活动” (找到) 、已关闭剪切的其他工时
  • “已关闭”可移动到“研究”、“设计”、“活动”、“审阅 (允许用户错误关闭工作项的情况)
  • 剪切只能移动到“建议”。

注意

限制状态转换时,请考虑用户错误地移动状态的情况。 你希望用户能够正常恢复。

此外,业务组希望为必填字段应用规则:

  • 要求在州/地区从 “已批准 ”变为“活动”时填写“批准者”字段
  • 仅允许属于“授权审批者”组的用户填写“ 审批者 ”字段
  • 当“州”移动到“剪切”时,清除“批准者”字段
  • 当状态变为“活动”时,要求填写接受条件

规则定义

为了实施上述限制,进程管理员添加了自定义 的“批准者身份” 字段、 “授权审批者” 安全组和以下 11 条规则。

   


规则名称

条件

操作


建议状态

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


验证状态转换限制

为进程定义规则并使用进程更新项目后,刷新浏览器,并通过工作项窗体和看板浏览器检查操作。

对于上表中定义的规则,应会看到以下“状态”下拉菜单。 打开看板,检查从一个状态移动到另一个状态的能力。

Proposed 研究 设计 已批准
建议的菜单 “检索”菜单 “设计”菜单 “已批准”菜单
活动 在审阅中 已解决 剪切
活动菜单 在“审阅”菜单中 已关闭菜单 “剪切”菜单

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

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

注意

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

自动转换父工作项的状态

若要根据对其子工作项所做的状态分配自动执行父工作项的状态转换,可以添加 Web 挂钩,并使用 自动化状态转换 GitHub 项目中提供的代码和配置。

注意

自动化状态转换 GitHub 项目是 Azure Boards 不支持的功能,因此产品团队不支持。 有关使用这些扩展时出现的问题、建议或问题,请在 GitHub 项目页中提出。

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

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

A work item state changes to解析,然后Copy the value from 由 创建者分配到

注意

可以通过审核日志查看对继承进程所做的更改。 若要了解详细信息,请参阅 访问、导出和筛选审核日志