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

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

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

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

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

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

重要

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

工作流规则

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

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

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

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

注意

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

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


条件

支持的操作


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

条件、工作项已创建

操作,工作项已创建


根据状态限制转换

条件,工作项已移动

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


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

条件、用户组成员身份

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


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

条件、用户组成员身份

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


注意

自定义继承的进程时,使用该进程的任何项目都会自动反映自定义项。 为了确保平稳过渡,我们建议创建一个测试过程和项目,这样就可以在实现自定义项组织之前对其进行测试。 有关详细信息,请参阅 创建和管理继承的进程

工作流状态和规则限制

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

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

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

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

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

  • 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


验证状态转换限制

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

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

提出 调查 设计 已批准
建议的菜单 “研究”菜单 “设计”菜单 “已批准”菜单
活动 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由分配到的创建者。

注意

通过审核日志查看对继承过程所做的更改。 有关详细信息,请参阅 Access、导出和筛选审核日志