自定义托管 XML 流程

Azure DevOps Services

Azure DevOps Services 支持通过管理体验(即基于 Web 的导入过程)来添加和更新进程。 添加进程后,可以从该进程创建一个或多个项目。 你随时可以通过再次导入来更新进程。 然后,对进程模板所做的更改将应用于使用该进程的所有项目。

重要

使用托管 XML 进程模型,可以通过更新进程模板的选定 XML 定义文件来自定义工作跟踪。 仅当使用 Team Foundation Server 数据库导入服务将数据迁移到Azure DevOps Services时,此功能才可用。

若要详细了解自定义和流程模型,请参阅 自定义工作跟踪

进程是包含一组相互依赖文件的 zip 文件。 这些文件定义Azure DevOps Services中工作项跟踪系统的构建基块和其他子系统。 某些构建基块更新现有项目,而其他构建基块仅适用于新项目。 有关构建基块的完整列表,请参阅下表。

在导入/更新进程时使用

创建新项目时使用

替换为系统默认值

忽略

工作项跟踪

斗智 斗 勇

类别

流程配置

区域和迭代

测试管理

工作项

工作项查询

构建

Lab Management

版本控制

Microsoft 项目映射

报告

门户(SharePoint 产品)

支持进程导入的进程插件和对象

Azure DevOps Services支持的内容和本地 Team Foundation Server 支持的内容之间存在差异。 有关这些差异的摘要,请参阅 过程模板自定义差异

如何自定义流程

自定义流程时,从定义完善的流程开始比生成新流程更容易。

如果更新与本地 Team Foundation Server 一起使用的现有进程,请确保它符合 对要导入的模板施加的约束

打开“设置”>“流程”

从“组织设置”>“流程”创建、管理以及自定义流程。

  1. 选择 Azure DevOps 徽标以打开“项目”。 然后选择“组织设置”。

    打开组织设置

  2. 然后,选择“流程”。

    “组织设置”,“进程”页

    重要

    如果未看到“流程”,则表示你使用的是 TFS-2018 或更低版本。 不支持“流程”页。 必须使用本地 XML 流程模型支持的功能。

导出和导入进程

  1. 在“ 进程 ”选项卡中,选择省略号 (...) 打开要导出的托管 XML 进程的快捷菜单。 只能导出托管 XML 进程。

    “进程”页 > “导出托管 XML 进程菜单选项

    保存 zip 文件并从中提取所有文件。

  2. 重命名位于根目录中的 ProcessTemplate.xml 文件中的进程。

    命名进程以将其与现有进程区分开来。

    <name>MyCompany Agile Process </name>

    更改版本类型,并更改主要和次要数字。 为 类型提供不同的 GUID,如以下示例所示:

    <version type="F50EFC58-C2FC-4C66-9814-E395D90778A3" major="1" minor="1"/>

  3. 应用 支持的自定义项。

  4. 创建包含根目录中所有文件和文件夹的 zip 文件。

  5. 导入自定义进程的 zip 文件

支持的自定义项

可以将以下自定义应用于进程:

以下部分列出了系统施加的限制。

限制

最多可以将 32 个进程导入 Azure DevOps Services。 自定义过程必须符合以下所有汇总规则。 否则,导入时可能会出现验证错误消息。

过程模板

ProcessTemplate.xml文件必须符合 ProcessTemplate XML 元素参考中所述的语法和规则。 此外,它必须满足以下条件:

  • 将定义的 WIT 数限制为 64
  • 仅包含一个Categories.xml定义文件
  • 仅包含一个ProcessConfiguration.xml定义文件
  • 在所有字段和 WIT 定义中使用唯一的友好名称

此外,你的进程必须通过以下验证检查:

  • 进程名称是唯一的,最多包含 155 个 Unicode 字符。
    • 与现有进程具有相同名称和版本 GUID 的模板会覆盖该进程。
    • 同名但版本 GUID 不同的模板将生成错误。
    • 进程名称不能包含以下特殊字符: . , ; ' ` : / \ * | ? " & % $ ! + = ( ) [ ] { } < >
      有关其他 约束,请参阅命名 限制。
  • 进程文件夹不包含.exe文件。 即使可以导入包含.exe文件的进程,项目创建也会失败。
  • 进程的总大小最多为 2 GB。 否则,项目创建失败。

进程配置

ProcessConfiguration.xml定义文件必须符合 ProcessConfiguration XML 元素参考中所述的语法和规则。 此外,它必须满足以下条件:

  • 指定所有 TypeFields 元素
  • 仅限 5 个项目组合积压
  • 仅包含一个无父级项目组合积压工作
  • 为每个从属项目组合积压工作仅指定一个父项目组合积压工作
  • 包含所需的工作流状态到 metastate 映射,并且不引用不受支持的元状态

类别

Categories.xml定义文件必须符合 Categories XML 元素引用中所述的语法和规则。 此外,它必须满足以下条件:

  • 限制为 32 个类别
  • 定义 ProcessConfiguration.xml 文件中引用的所有类别

工作项类型

WITD 元素及其子元素必须符合 WITD XML 元素引用中所述的语法和规则。 此外,它必须满足以下条件:

  • 单个 WIT 中最多有 512 个字段,所有 WIT 中最多有 512 个字段。
  • 分配给 WIT 的友好名称和所需的 refname 属性在 WIT 定义文件中是唯一的。
  • 所需的 refname 属性值不包含不允许的字符或使用不允许的命名空间 System。名称和 Microsoft。名称
  • 引用名称至少包含一个句点 (.) ,所有其他字符都是字母,没有空格。
  • WITD 元素包含一个 FORM 元素,该元素定义符合 WebLayout和 Control 元素中指定的语法的 WebLayout 元素

工作项字段

FIELDS 元素及其子元素必须符合 FIELD XML 元素引用中所述的语法和规则。 此外,它必须满足以下条件:

  • 分配给 WIT 的友好名称和所需的 refname 属性在 WIT 定义文件中是唯一的。
  • 所需的 refname 属性值不包含不允许的字符或使用不允许的命名空间 System。名称和 Microsoft。名称
  • 引用名称至少包含一个句点 (.) ,所有其他字符都是字母,没有空格。

FIELD 元素及其子元素可以包含 GLOBALLIST 元素。

限制

  • FIELDS 元素限制为 512 个字段。
  • 工作项类型限制为 64 个人名字段。 人员名称字段是具有 特性和值 的 syncnamechanges=true字段。
  • ALLOWEDVALUESSUGGESTEDVALUES 元素限制为 512 个 LISTITEM 元素。
  • 一个字段限制为 1,024 个规则。

Required fields

ProcessConfiguration.xml 文件中指定了以下字段:

  • 对于定义进程配置积压工作类别中的所有 WIT,请指定用于属性和值的 type=Team 字段和 type=Order
  • 对于类别中定义常规积压工作或项目组合积压工作的所有 WIT,请指定用于 type=Effort的字段。
  • 对于类别中定义 TaskBacklog 元素的所有 WIT,请指定:
    • 用于 的 type=RemainingWork字段。
    • 用于 的 type=Activity字段。
    • 用于 type=Activity的字段的 ALLOWEDVALUES 规则。

规则限制

除了标准 字段规则限制外,还强制执行以下限制:

  • 字段规则元素不能 指定 和属性
  • FIELD 元素不能包含子规则元素 CANNOTLOSEVALUENOTSAMEASMATCHPROHIBITEDVALUES
  • 除以下字段外,System 的 FIELD 定义。名称 字段不能包含字段规则。
    • System.Title 可以包含 “必需 ”和 “默认”规则。
    • System.Description 可以包含 “必需 ”和 “默认”规则。
    • System.AssignedTo 可以包含 REQUIREDDEFAULTALLOWEXISTINGVALUEVALIDUSER 规则
    • System.ChangedBy 可以包含 REQUIREDDEFAULTALLOWEXISTINGVALUEVALIDUSER 的规则

一致的名称和属性

在进程或项目集合中,FIELD 元素定义的名称类型和其他属性在所有 WIT 定义中必须相同。

标识字段

标识字段对应于用于包含帐户、用户或组名称的字段。 以下核心系统字段硬编码为标识字段:

  • 分配对象 (System.AssignedTo)
  • 授权权限 (System.AuthorizedAs)
  • 更改者 (System.ChangedBy)
  • 创建者 (System.CreatedBy)
  • 由 (Microsoft.VSTS.Common.ActivatedBy) 激活
  • 由 (Microsoft.VSTS.Common.ClosedBy) 关闭
  • 已解决 (Microsoft.VSTS.Common.ResolvedBy)
添加自定义标识字段

将属性 syncnamechanges 指定为 True 时,字符串字段被识别为标识字段。

标识字段的规则限制

对于进程导入的当前版本,请勿在 FIELD 定义中指定以下任何规则。

  • SUGGESTEDVALUES
  • 包含非identity 值的规则。
正确的示例

若要限制标识字段中有效的帐户名称,请使用组名称属性指定 VALIDUSER 元素。

    <FIELD name="Project Manager" refname="Fabrikam.ProgramManager" type="String" reportable="dimension" syncnamechanges="true">
        <ALLOWEXISTINGVALUE />
        <VALIDUSER group="[PROJECT]\Program Manager Group" />
        <HELPTEXT>The program manager responsible for signing off on the user story.</HELPTEXT>
    </FIELD>

在导入进程之前,请确保已在进程更新的项目中创建了组。

不正确的示例

以下示例无效,因为它指定:

  • ALLOWEDVALUES 元素。
  • 一个 DEFAULT 指定非identity 字符串 value="Not Assigned"的元素。
    <FIELD name="Project Manager" refname="Fabrikam.ProgramManager" type="String" reportable="dimension" syncnamechanges="true">
        <ALLOWEXISTINGVALUE />
        <ALLOWEDVALUES>
          <LISTITEM value="[PROJECT]\Program Manager Group" />
          <LISTITEM value="Not Assigned" />
        </ALLOWEDVALUES>
        <DEFAULT from="value" value="Not Assigned" />
        <VALIDUSER />
        <HELPTEXT>The program manager responsible for signing off on the user story.</HELPTEXT>
    </FIELD>

工作流

WORKFLOW 元素及其子元素必须符合 WORKFLOW XML 元素引用中所述的语法和规则。 此外,它必须满足以下条件:

  • 将每个 WIT 限制为 16 个工作流状态
  • 定义映射到 ProcessConfiguration 定义文件中的元状态的所有工作流状态
  • 定义映射到“建议”状态类别的所有工作流状态与映射到“InProgress”状态类别的工作流状态之间的转换
  • 定义映射到“InProgress”状态类别的所有工作流状态与映射到“完成”状态类别的工作流状态之间的转换。

有关状态类别和映射的说明,请参阅 工作流状态和状态类别

全局列表

对于托管 XML 进程模型,全局列表导入存在以下限制:

  • 最多有 64 个全局列表。
  • 每个列表最多有 512 个项目。
  • 在所有 WIT 中指定的所有全局列表中总共可以定义大约 10,000 个项目。

窗体布局

FORM 元素及其子元素必须符合 FORM XML 元素引用中所述的语法和规则。

Control 元素无法指定自定义控件。 不支持自定义控件。