Azure DevOps Server |Azure DevOps Server 2022
每个项目都包含由其流程定义的一组工作项类型,即敏捷、 基本、 Scrum 或 CMMI。 使用工作项类型 跟踪不同类型的工作。 修改现有类型或添加自定义类型,以匹配团队的跟踪要求和工作流。
注意
本文适用于本地 XML 进程模型。 有关使用继承进程模型的 Azure DevOps Services 或集合,请参阅 “添加和管理工作项类型”。
自定义工作项类型的常见原因包括:
- 添加或修改字段或字段规则
- 更改工作流(状态、原因、转换)
- 自定义工作项窗体布局
若要仅修改字段,请参阅 “添加或修改字段”。
可以通过 XML 定义文件、进程配置定义或 witadmin 命令行工具自定义工作项类型。 以下列表显示了可以使用每个方法执行的操作。
工作项类型定义
进程配置定义
命令行更改
先决条件
| 类别 | 要求 |
|---|---|
| 权限 | - 列出工作项类型: 查看项目级信息 权限设置为 “允许”。 - 若要添加或自定义工作项类型:项目集合管理员组的成员,或编辑进程权限设置为“允许”。 |
若要以管理员身份添加,请参阅 更改项目集合级别权限。
对工作项类型的修改如何影响现有工作项
下表汇总了修改字段或工作项类型定义时对现有工作项的影响。
| 操作 | 对现有工作项的影响 |
|---|---|
| 从工作项类型中删除字段 | 已删除字段的数据保留在数据存储中。 但是,字段不再显示在工作项类型定义中,因此无法输入新数据。 |
| 重命名字段 | 重命名字段的数据在数据存储中以新的易记名称保留。 |
| 删除字段 | 已删除字段的数据将从数据存储中删除。 |
| 重命名工作项类型 | 所有数据在新名称下保持不变。 |
| 删除工作项类型 | 使用已删除的工作项类型创建的工作项的所有数据都将永久删除,且没有恢复机会。 |
若要从数据存储中完全删除字段,请使用 witadmin deletefield 命令行工具。
导入和导出工作项类型定义文件
注意
如果使用托管 XML 进程模型,请导入和导出项目使用的进程模板。 有关详细信息,请参阅 自定义工作项跟踪 Web 表单。
如果你没有项目的管理权限,请获取它们。
- 根据 witAdmin 中提供的说明打开命令提示符窗口:自定义和管理用于跟踪工作的对象。 例如:
导出要在其中修改或添加字段的工作项类型定义文件。 指定工作项类型的名称和文件的名称。
witadmin exportwitd /collection:CollectionURL /p:ProjectName /n:TypeName /f:"DirectoryPath/FileName.xml"CollectionURL 的示例是
http://MyServer:8080/tfs/TeamProjectCollectionName。编辑文件。
导入定义文件。
witadmin importwitd /collection:CollectionURL /p:ProjectName /f:"DirectoryPath/FileName.xml"打开 Web 门户或刷新页面以查看更改。
有关使用
witadmin的详细信息,请参阅 导入、导出和管理工作项类型。
添加或修改工作项类型
若要添加自定义工作项类型或修改现有工作项类型,请定义或修改 XML 定义文件,然后 根据所使用的进程模型将其导入项目。 定义文件包含三个主要部分: FIELDS、 WORKFLOW 和 FORM。
添加新工作项类型的最简单方法是复制现有工作项类型,然后修改定义文件。
添加或修改字段、字段规则、标签或空文本
将要用于跟踪数据的任何字段添加到定义文件。 此准则适用于除系统字段(其引用名称以 System 开头)之外的所有字段。 所有系统字段都为所有工作项类型定义,无论你是否将其包含在工作项类型定义中。 有关每个字段的详细信息,请参阅 “工作项”字段索引。
将字段和字段规则添加到 FIELDS 节。 要使字段显示在工作项窗体上,请将其添加到定义的 FORM 节。
例如,若要将工作项 ID 添加到窗体,请在 FORM 节中指定以下 XML 语法。
<Control FieldName="System.ID" Type="FieldControl" Label="ID" LabelPosition="Left" />
有关定义字段的详细信息,请参阅 “添加或修改字段”。
修改工作流
工作流中的 STATES 和 REASONS 节指定“状态”和“原因”字段中的选取列表值。 这些部分跟踪工作项的状态。 TRANSITIONS 部分指定状态之间的有效转换,如下图所示。 需要指定前向转换和回归转换。
更改工作流以实现以下目标:
- 添加或删除状态、原因或转换。
- 指定状态变更、原因变更或转换时要为某字段应用的值。
- 指定自定义 ACTION,以基于状态、原因或转换的更改自动执行字段赋值。
自定义工作流时,请执行以下两个步骤:
-
更改敏捷工具页上显示的工作项类型的工作流时,需要执行第二个步骤。 这些工作项类型属于“要求”或“任务”类别。
工作流域规则
更改状态、指定原因或在工作流转换期间,可以应用字段规则。
例如,通过在状态设置为“活动”时添加 EMPTY 规则,可以自动将“关闭日期”和“关闭者”字段设为无效,并将其设置为只读。 从关闭状态重新激活工作项时,此规则非常有用。
<STATE value="Active">
<FIELDS>
. . .
<FIELD refname="Microsoft.VSTS.Common.ClosedDate"><EMPTY/></FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedBy"><EMPTY/></FIELD>
</FIELDS>
</STATE>
应用工作流字段规则来完成以下操作:
- 通过指定 CANNOTLOSEVALUE、 EMPTY、 FROZEN、 NOTSAMEAS、 READONLY 和 REQUIRED 来限定字段可以具有的值。
- 使用 COPY、 DEFAULT 和 SERVERDEFAULT 将值复制到字段中。
- 限制可以修改字段的人员。
- 使用 MATCH 对字符串字段强制实施模式匹配。
- 使用 WHEN、WHENNOT、WHENCHANGED 和 WHENNOTCHANGED 根据其他字段中的值有条件地应用规则。
- 限制应用于特定用户或组的规则。 大多数规则支持 for 或 not 属性,以指定规则适用于或不适用的对象。
有关应用工作流字段规则的详细信息,请参阅 FIELD (Workflow) 元素参考 和 规则和规则评估。
自定义工作项窗体
以下屏幕截图突出显示了工作项表单上的常见元素。 可以自定义除标题区域和窗体控件以外的所有控件。 用于自定义窗体的元素取决于 是否启用了新窗体。
自定义表单以实现以下目标:
在积压工作或任务板中添加或删除工作项类型
敏捷规划工具 - 产品积压工作、冲刺积压工作板和任务板页 - 根据用于创建项目的过程模板显示特定的工作项类型。 可以从这些页面中添加或删除工作项类型。 例如,如果项目使用 Scrum 工作项类型,则积压工作项和 bug 都显示在积压工作页上。 但是,如果项目使用敏捷、CMMI 或其他进程模板,待办事项或任务板上不会出现缺陷。
若要在积压工作或任务板中添加或删除工作项类型,请参阅 向积压工作和板添加工作项类型。 若要添加新的工作项类型以支持项目组合积压工作,请参阅 添加项目组合积压工作级别。
更改工作项类型的颜色、图标或工作流状态颜色
在 Web 门户中,工作项显示在查询结果和敏捷工具的待办事项和看板页面上。 若要更改与现有工作项类型关联的颜色或图标,或添加新工作项类型的颜色, 请编辑进程配置。 若要更改工作流状态的颜色, 请编辑进程配置。
更改现有工作项的类型
有关基于平台提供的功能,请参阅 批量移动工作项并更改工作项类型。
停用或禁用工作项类型
若要将特定工作项类型的创建限制为一组用户, 请将工作项类型添加到“隐藏类别”组 ,以防止大多数参与者创建它。 若要授予对特定用户组的访问权限, 请创建指向 模板的超链接,该模板将打开工作项表单,并与需要创建该表单的团队成员共享该链接。
注意
无法添加字段规则来限制工作流,因为无法将规则应用于系统字段。
删除工作项类型
若要防止团队成员使用特定工作项类型创建工作项,请将其从项目中删除。
使用 witadmin destroywitd时,将永久删除使用该工作项类型和工作项类型本身创建的所有工作项。
例如,如果你的团队不使用“障碍”,请从 Fabrikam 网站项目中删除标记为“障碍”的工作项类型。
witadmin destroywitd /collection:"http://FabrikamPrime:8080/tfs/DefaultCollection" /p:"Fabrikam Web Site" /n:"Impediment"
删除属于某个类别的工作项类型时,请更新项目的类别定义以反映删除。 有关详细信息,请参阅 导入、导出和管理工作项类型 以及 导入和导出类别。
重命名工作项类型
若要重命名现有工作项类型,请使用 witadmin renamewitd。 例如,可以将标记为“QoS 项目”的工作项类型重命名为“服务协议”。
witadmin renamewitd /collection:"http://FabrikamPrime:8080/tfs/DefaultCollection" /p:"Fabrikam Web Site" /n:"QoS Item" /new:"Service Agreement"
重命名属于某个类别的工作项类型时,更新项目的类别定义以反映新名称。 在更新类别定义之前,待办事项和看板 不起作用。
有关详细信息,请参阅 导入、导出和管理工作项类型 以及 导入和导出类别。