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

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

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

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

重要

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

先决条件

若要将规则应用于 Azure DevOps 中的工作流状态,需要特定的权限和访问级别:

  • 权限

    • 作为项目管理员,用于管理项目级别的安全组和权限,其中包括为工作流状态设置规则。
    • 具有 工作项跟踪权限,该权限允许你管理工作跟踪区域,该区域可以授予项目管理员组的成员或通过特定权限授予。
  • 访问级别:

    • 具有 基本 访问权限,这通常足以满足大多数需要管理工作项并将规则应用于工作流状态的用户。

了解工作流规则

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

  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 更新或更高版本。

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

为 User Story 定义了以下工作流状态。 “ 新建”、“ 已解决”“已删除 ”继承状态处于隐藏状态。 而是使用“建议”、“审阅”和“削减状态”。 此外,还定义了另外三个状态:调查设计和批准。 这些状态应遵循如下图所示的顺序。

用户情景,工作流状态

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

规则要求

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

State 转换规则
Proposed 只能移动到“研究和剪切”
调查 只能移动到设计和剪切
设计 只能移动到“研究”、“批准”和“剪切”
已审核 只能移动到“设计”、“活动”“剪切”
活动 只能移动到 “审阅中”
正在审核 只能移动到 “活动 ”(找到更多工作)、 “关闭 ”或 “剪切”
Closed 可以移动到“研究”、“设计”、“活动”、“审阅”(允许用户关闭错误的工作项的情况)
剪切 只能移动到“建议”

注意

限制状态转换时,请考虑到用户可能会出错移动状态的情况。 确保用户可以正常恢复。

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

  • 当状态从“已批准”移动到“活动”时,需要填写“已批准者”字段。
  • 仅允许“已授权审批者”组中的用户填写“已批准者”字段。
  • 状态移动到“剪切”时,清除“已批准者”字段。
  • 当状态移动到“活动”时,需要填写“接受条件”字段。

规则定义

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


规则名称

条件

操作


建议的状态

什么时候 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 Closed 剪切
活动菜单 在“审阅”菜单中 关闭菜单 剪切菜单

根据用户或组成员身份限制状态转换

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

注意

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

自动转换父工作项的状态

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

根据状态更改自动重新分配

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

解析Copy the value from A work item state changes to由分配到的创建者。