将规则应用于工作流状态 (继承过程)
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、导出和筛选审核日志。