关于进程自定义和继承进程

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

若要自定义工作跟踪系统,请 通过组织的管理用户界面自定义 继承的过程。 使用继承进程的所有项目都获取对该过程进行的自定义。 另一方面,为每个 团队配置 敏捷工具(积压工作、冲刺、看板和任务板)。

重要

若要自定义本地项目或更新 XML 定义文件以支持自定义,请参阅 本地 XML 进程模型。 本文仅适用于 Azure DevOps Services 和 Azure DevOps Server 2019。

可以进行许多自定义。 主要任务是添加自定义工作项类型(WIT),或修改现有 WIT 以添加自定义字段、修改布局或更改工作流。

注意

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

在下面,你将找到一个索引,这些任务可以执行以自定义继承的进程。 继承元素的某些选项已锁定,无法自定义。

系统进程与继承的进程

你将看到两种类型的进程:

  • locked icon 系统进程(敏捷、基本、Scrum 和 CMMI)已锁定,无法更改。
  • inherited icon 继承的进程,你可以自定义这些进程,并从创建它们的系统进程继承定义。 系统进程由 Microsoft 定期拥有和更新。 对系统进程所做的任何更新都会自动对继承的进程及其子继承进程进行更新。 汇报流程记录在Azure DevOps Server 发行说明。

注意

基本流程适用于 Azure DevOps Server 2019 更新 1 及更高版本。

此外,所有进程都共享。 也就是说,一个或多个项目可以使用单个进程。 无需自定义单个项目,而是自定义过程。 对进程所做的更改会自动更新使用该进程的所有项目。 创建继承的过程后,可以对其进行自定义、基于它创建项目、创建项目的副本,并更改现有项目以使用它。

例如,如下图所示,你将看到为 fabrikam 组织定义的项目列表。 第二列显示每个项目使用的过程。 若要更改 Fabrikam Fiber 项目的自定义项,需要修改 MyScrum 进程(它继承自 Scrum 系统进程)。 对 MyScrum 进程所做的任何更改也会更新使用该进程的其他项目。 另一方面,在将查询测试项目更改为继承自 Agile 的过程之前,无法自定义它。

Screenshot of Admin context, Organization settings, Project list and the process they use.

进程名称限制

进程名称必须是唯一的,并且 128 个 Unicode 字符或更少。 此外,名称不能包含以下字符: .,;'`:~\/\*|?"&%$!+=()[]{}<>

若要重命名进程,请打开 ... 进程的上下文菜单,然后选择“ 编辑”。

更改项目的引用过程

如果要将项目使用的进程从一个系统进程切换到另一个系统进程,则可以执行此操作。 若要进行这些更改,必须基于要切换到的进程创建继承的进程。 例如,提供了支持以下更改的说明:

按照上述文章中提供的指南,还可以进行其他更改,例如,从 CMMI 更改为敏捷或敏捷到 CMMI。

在进行此更改之前,我们建议你熟悉要更改的过程。 系统进程汇总在“关于进程”和“进程模板”中

进行更改时的最佳做法

对继承的过程进行更改是直接安全的。 但是,在将这些更改应用到活动项目之前,始终是测试这些更改的最佳做法。 按照以下步骤可帮助你呈现进程更改可能带来的任何负面影响。

继承的对象与自定义对象

你创建的每个继承进程都将继承系统进程(基本、敏捷、Scrum 或 CMMI)中定义的 WIT。 例如,敏捷流程提供 bug、任务、用户情景、功能、史诗、问题和与测试相关的 WIT。

Conceptual image of Agile process work item hierarchy.

可以为在“工作项类型”页上显示的所有继承 WIT 添加字段并修改工作流和工作项窗体。 如果不希望用户创建 WIT,可以禁用它。 此外,还可以添加自定义 WIT。

字段自定义项

系统进程中定义的字段将显示一个 继承的图标,指示你可以在继承的进程中对其进行有限的修改。

为组织中的所有项目和流程定义字段。 这意味着,可以在一个进程中为 WIT 定义的任何自定义字段添加到为另一个进程定义的任何其他 WIT。


字段类型

自定义支持


继承的字段


自定义字段


自定义控件


添加自定义字段时,请注意以下限制:

  • 每个 WIT 最多可以定义 64 个字段
  • 每个流程最多可以定义 512 个字段

此外,还可以 将现有字段 添加到进程中的另一个 WIT。 例如,可以将截止日期添加到用户情景或 bug WIT。

无法自定义的内容

  • 定义字段名称或数据类型后,无法更改该字段名称或数据类型
  • 无法修改状态、原因、区域路径和迭代路径字段所在的窗体上的灰色区域
  • 不能导入或定义托管 XML 和本地 XML 进程模型支持的全局列表。 若要了解详细信息,请参阅 “定义全局列表”。
  • 定义字段名称或数据类型后,无法更改该字段名称或数据类型
  • 无法修改状态、原因、区域路径和迭代路径字段所在的窗体上的灰色区域
  • 对于选取列表,当前无法执行以下操作:
    • 更改继承字段的选取列表,例如“活动”或“纪律”字段
    • 更改选取列表顺序,按字母顺序显示选取列表
  • 无法修改继承字段的说明帮助文本
  • 导入或定义托管 XML 和本地 XML 进程模型支持的全局列表。 若要了解详细信息,请参阅 “定义全局列表”。

注意

使用继承的过程,不能修改预定义字段的选取列表,例如活动、自动化状态规则、优先级和其他字段。

可配置选取列表

以下选取列表针对每个项目进行了配置,无法通过继承的过程进行自定义。

根据添加到项目或团队的用户管理与人员姓名字段关联的选取列表,例如“分配给”和“已更改者”。

是否可以重命名字段或更改其数据类型?

不支持重命名字段或更改数据类型。 但是,可以从“布局”选项卡更改工作项窗体上字段显示的标签。在查询中选择字段时,需要选择字段名称而不是字段标签。

是否可以删除或还原已删除的字段?

可以删除字段,然后还原该字段。 删除字段会删除与该字段关联的所有数据,包括历史值。 删除后,只能使用 字段 - 更新 REST API 还原字段并恢复数据。

你可能希望改为隐藏或删除工作项窗体中的字段,而不是删除字段。 有关详细信息,请参阅 “添加和管理字段”、“显示”、“隐藏”或删除字段

什么是字段? 如何使用字段名称?

每个工作项类型都与 31 个系统字段和多个类型特定的字段相关联。 使用工作项计划和跟踪项目。

每个字段都支持跟踪有关要执行的工作的一条信息。 分配给字段的值存储在工作跟踪数据存储中,你可以创建查询来确定状态和趋势。

有关为核心系统进程(Scrum、Agile 和 CMMI 系统进程)定义的每个字段的说明和用法,请参阅“工作项”字段索引

字段名

工作项字段名称唯一标识每个工作项字段。 请确保字段名称符合以下准则:

  • 字段名称在组织或项目集合中必须是唯一的
  • 字段名称必须是 128 个 Unicode 字符以内
  • 字段名称不能包含任何前导或尾随空格,也不能包含两个或多个相连的空格
  • 字段名称必须至少包含一个字母字符
  • 字段名称不能包含以下字符:.,;'`:~\/\*|?"&%$!+=()[]{}<>

由于为组织定义了所有字段,因此不能添加与组织中已存在的相同字段名称的自定义域,也不能在另一个继承过程中添加到 WIT。

注意

将项目更改为使用继承的过程时,可能会发现一个或多个敏捷工具或工作项处于无效状态。 例如:

  • 如果将字段设置为必填字段,则未定义该字段的工作项会显示错误消息。 需要解决这些错误才能进行其他更改并保存工作项。
  • 如果添加或删除/隐藏显示在看板上的 WIT 的工作流状态,则需要更新项目中定义的所有团队的看板列配置。

自定义规则和系统规则

每个 WIT(bug、任务、用户情景等)都有多个已定义的系统规则。 有些是简单的,例如,使“标题”字段是必需的,或者为“值区域”字段设置默认值。 此外,许多系统规则定义工作流状态更改时要执行的操作。

例如,存在多个规则,以便在以下条件下复制当前用户标识:

  • 修改工作项后,将用户标识复制到“更改者”字段
  • 当工作流状态更改为“已关闭”或“完成”时,将用户标识复制到“关闭者”字段。

重要

预定义的系统规则对定义将覆盖它的任何自定义规则都具有先例。

自定义规则为许多业务用例提供支持,使你可以超越设置字段的默认值或使其是必需的。 规则允许你清除字段的值,将值复制到字段中,并根据不同字段值之间的依赖关系应用值。

使用自定义规则,可以根据特定条件定义多个操作。 例如,可以应用规则来支持以下类型的方案:

  • 为“优先级”定义值时,将“风险”设置为必填字段
  • 对发布值进行更改时,请清除“里程碑”的值
  • 对剩余工时的值进行更改时,请将“已完成工时”设置为必填字段
  • 当“已批准”值为 True 时,将“审批者”设置为必填字段
  • 创建用户情景时,需要以下字段:优先级、风险和工作量

提示

不能使用规则定义公式。 但是,你可能会找到一个解决方案,以满足你的需求与 Power AutomateTFS 聚合器(Web 服务)市场扩展。 另 请参阅工作和其他字段的汇总。

有关定义自定义规则的详细信息,请参阅 规则和规则评估

限制对选择用户组的选择字段的修改

使用以下两个条件之一,可以为安全组的用户或不是安全组成员的用户选择字段。

  • current user is a member of a group...
  • current user is not a member of a group...

例如,可以为选择用户或组设置“标题”或“状态”字段只读。

根据区域路径限制工作项的修改

可以通过设置区域路径的权限来禁止用户修改选择的工作项。 这不是规则设置,而是权限设置。 若要了解详细信息,请参阅 “创建子节点”,修改区域路径下的工作项。

工作项类型 (WIT) 自定义

下面是继承和自定义 WIT 的自定义选项。


工作项类型

自定义支持


继承的工作项类型


自定义工作项类型


无法自定义的内容

  • 不能向积压工作添加或删除继承的 WIT
  • 不能更改继承字段在窗体布局中的位置(但是,可以在窗体的一个区域中隐藏该字段,并在窗体中的其他位置添加该字段)
  • 无法从产品中删除继承的项目组合级别(但可以重命名它们)
  • 无法更改自定义 WIT 的名称。

工作项表单自定义

可以对 WIT 窗体进行以下自定义。


组或页面类型

自定义支持


继承的组


自定义组


继承的页面


自定义页面


布局和调整大小

Web 窗体布局分为三列,如下图所示。

Illustration of 3-column page layout for work item form.

如果只向前两列添加组和字段,布局将反映两列布局。 同样,如果只向第一列添加组和字段,布局将反映一列布局。

Web 窗体根据可用宽度和布局中的列数调整大小。 在最大宽度下,在大多数 Web 浏览器中,页面中的每个列在其自己的列中显示。 随着显示宽度的减少,每列的大小按比例调整,如下所示:

  • 对于三列:50%、25% 和 25%
  • 对于两列:66% 和 33%
  • 对于一列:100%。

当显示宽度不能容纳所有列时,列显示在左侧的列内。

工作流自定义项

可以通过隐藏继承状态或添加自定义状态来自定义任何工作项类型的工作流(WIT)。 继承状态因系统进程(Agile、Basic、Scrum 或 CMMI)而异,你从中选择了从中创建自定义进程。

每个 WIT 的每个默认工作流定义两到四种状态,并指定以下工作流操作:

  • 每个状态之间的向前和向后转换
  • 每个状态转换的默认原因

例如,基本过程、问题 WIT 的特点是三种状态(微软待办执行完成)以及下图所示的转换。

Basic Process, Issue work item type, workflow state model


状态类型

支持的自定义


Inherited icon 继承状态

自定义状态


工作流状态必须符合以下规则

  • 必须至少为“建议”或正在进行”状态类别定义一个状态

    注意

    在添加工作流状态之前,请查看 工作流状态和状态类别 ,了解工作流状态如何映射到状态类别。

  • 必须至少定义两个工作流状态
  • 每个工作项类型最多可以定义 32 个工作流状态

不支持的工作流自定义

  • 无法修改继承的状态(无法更改其名称、颜色或类别),但可以隐藏它
  • 在“已完成”状态类别中只能有一个状态。 如果将自定义状态添加到“已完成”类别,则会删除或隐藏任何其他状态
  • 无法更改自定义状态的名称
  • 不能指定状态的原因,而是定义默认原因,例如 已移动到状态会审移出状态会审
  • 无法更改窗体上“状态”和“原因”字段的位置
  • 无法自定义状态类别名称
  • 无法修改继承的状态(无法更改其名称、颜色或类别),但可以隐藏它
  • 在“已完成”状态类别中只能有一个状态。 系统禁止向此类别添加任何自定义状态
  • 无法更改自定义状态的名称
  • 无法更改状态的顺序,状态根据工作项窗体下拉列表中的状态类别在其自然序列中列出
  • 不能指定状态的原因,而是定义默认原因,例如 已移动到状态会审移出状态会审
  • 无法更改窗体上“状态”和“原因”字段的位置
  • 不能限制转换,所有转换都从任何状态定义到另一个状态。

积压工作和板自定义

积压工作和董事会是创建和管理团队工作的基本敏捷工具。 从系统流程继承的标准积压工作(产品、迭代和产品组合)是完全可自定义的。 此外,还可以为总共五个项目组合积压工作添加自定义项目组合积压工作。


积压工作类型

自定义支持


继承积压工作


自定义项目组合积压工作


无法自定义的内容

  • 无法从产品中删除继承的项目组合级别(但可以重命名项目组合级别,并且可以禁用继承的工作项类型)
  • 无法在现有定义的积压工作集中插入积压工作级别
  • 无法对积压工作级别重新排序
  • 不能将工作项类型添加到两个不同的积压工作级别
  • 无法创建自定义任务积压工作级别,尽管可以将自定义 WIT 添加到迭代积压工作
  • 无法将 Bug WIT 添加到任何积压工作级别。 相反,系统允许每个团队决定如何管理 bug。 若要了解详细信息,请参阅 在积压工作和板上显示 bug。
  • 无法向积压工作添加或删除继承的 WIT,例如,无法将问题 WIT 添加到产品积压工作
  • 无法从产品中删除继承的项目组合级别(但可以重命名项目组合级别,并且可以禁用继承的工作项类型)
  • 无法在现有定义的积压工作集中插入积压工作级别
  • 无法对积压工作级别重新排序
  • 不能将工作项类型添加到两个不同的积压工作级别
  • 虽然可以向迭代积压工作添加自定义工作项类型,但无法创建自定义任务级别
  • 无法将 Bug WIT 添加到任何积压工作级别。 相反,系统允许每个团队决定如何管理 bug。 若要了解详细信息,请参阅 在积压工作和板上显示 bug。

注意

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

更改积压工作级别的默认 WIT 时,它会导致 WIT 在快速添加面板中默认显示。 例如, 客户票证 默认出现在以下产品积压工作快速添加面板中。

Screenshot of Product backlog, Quick Add Panel, Displays Default WIT for a backlog level

对象限制

有关对字段数、WIT、积压工作级别和其他可以自定义的对象的限制列表,请参阅 “工作跟踪对象限制”。