自定义托管 XML 流程

Azure DevOps Services

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

重要

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

若要了解有关自定义和处理模型的详细信息,请参阅 “自定义工作跟踪”。

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

导入/更新进程时使用

创建新项目时使用

替换为系统默认值

忽视

工作项跟踪

机智

类别

进程配置

区域和迭代

测试管理

工作项

工作项查询

生成

实验室管理

版本控制

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 元素
  • 限制为五个投资组合积压工作
  • 仅包含一个未父母的项目组合积压工作
  • 为每个从属项目组合积压工作仅指定一个父项目组合积压工作
  • 包含所需的工作流状态到元状态映射,并且不引用不受支持的元状态

类别

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

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

工作项类型

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

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

工作项字段

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

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

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

限制限制

  • FIELDS 元素限制为 1024 个字段。
  • 工作项类型限制为 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 规则。

规则限制

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

  • 字段规则元素不能指定 fornot 属性。
  • FIELD 元素不能包含子规则元素 CANNOTLOSEVALUE、NOTSAMEASMATCHPROHIBITEDVALUES
  • 除以下字段外, System 的 FIELD 定义除外。名称 字段不能包含字段规则。
    • System.Title 可以包含必需DEFAULT 规则
    • System.Description 可以包含 REQUIREDDEFAULT 规则
    • System.AssignedTo 可以包含 REQUIRED、DEFAULT、ALLOWEXISTINGVALUEVALIDUSER 的规则
    • System.ChangedBy 可以包含 REQUIRED、DEFAULT、ALLOWEXISTINGVALUEVALIDUSER 的规则

一致的名称和属性

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

标识字段

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

  • 已分配到 (System.AssignedTo)
  • 授权方式 (System.AuthorizedAs)
  • 更改者 (System.ChangedBy)
  • 创建者 (System.CreatedBy)
  • Activated By (Microsoft.VSTS.Common.ActivatedBy)
  • 关闭者(Microsoft.VSTS.Common.ClosedBy)
  • 解析者 (Microsoft.VSTS.Common.ResolvedBy)
添加自定义标识字段

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

标识字段的规则限制

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

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

若要限制标识字段中有效的帐户名称,请使用组名称属性指定 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 指定非实体字符串 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 元素及其子元素必须符合 WORKFLOW XML 元素引用中所述的语法和规则。 此外,它必须满足以下条件:

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

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

全局列表

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

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

窗体布局

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

控件元素不能指定自定义控件。 不支持自定义控件。