自定义托管 XML 流程

Azure DevOps Services

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

重要

使用托管 XML 进程模型,可以通过更新进程模板的 SELECT XML 定义文件来自定义工作跟踪。 仅当数据通过使用 Azure DevOps 数据迁移工具迁移到 Azure DevOps Services 时,此功能才可用。 如果使用继承过程模型,可以通过 创建继承过程通过用户界面自定义工作跟踪。 如果使用本地 XML 进程模型,则可以自定义进程模板,请参阅 上传或下载进程模板自定义进程模板

有关自定义和进程模型的详细信息,请参阅 “自定义工作跟踪”。

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

导入/更新进程时使用 创建新项目时使用 替换为系统默认值 忽视
工作项跟踪 区域和迭代 生成 Microsoft 项目映射
工作项类型 (WIT) 测试管理 实验室管理 报表
类别 工作项 版本控制 门户 (SharePoint 产品)
进程配置 工作项查询

先决条件

有关定制 Azure Boards 以满足特定业务需求的指导,请参阅 关于配置和自定义 Azure Boards

类别 要求
权限 - 若要创建、删除或编辑进程:必须是项目集合管理员组的成员,或者将特定集合级别权限(创建进程删除进程编辑进程从组织中删除字段)设置为允许。 有关详细信息,请参阅 设置工作跟踪的权限和访问权限,自定义继承的进程
- 若要更新版块:必须是团队管理员或是项目管理员组的成员。
访问 - 即使你拥有 基本 或更低访问权限,如果有人授予你执行此作的权限,你仍然可以更改进程。
- 若要更新和更改现有工作项的类型:必须是项目的成员。
项目进程模型 - 具有包含项目的项目集合的继承流程模型
- 如果将数据迁移到 Azure DevOps Services,请使用 Team Foundation Server 数据库导入服务
知识 熟悉 自定义和处理模型

自定义进程

与其从头创建一个新的流程,不如从一个定义明确的流程开始,自定义流程效率更高。

如果要更新以前用于 Azure DevOps Server 的现有进程,请确保它遵循 模板导入所需的约束 ,以避免在导入过程中出现验证错误。

导出和导入进程

执行以下步骤来导入或导出进程:

  1. 登录到你的组织 (https://dev.azure.com/{Your_Organization})。

  2. 选择“组织设置”。

    屏幕截图显示了突出显示的“组织设置”按钮。

  3. 选择 “进程”。

    屏幕截图显示“组织设置,流程”页。

    重要

    如果未看到 “进程”(Process),则你正在使用不支持 “进程”(Process) 页的早期版本。 使用本地 XML 进程模型支持的功能。

  4. 选择省略号(...)以打开要导出的托管 XML 进程的快捷菜单。 只能导出托管 XML 进程。

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

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

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

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

    <name>MyCompany Agile Process </name>

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

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

  6. 应用 支持的自定义

  7. 在根目录中创建所有文件和文件夹的 zip 文件。

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

支持的自定义

可以将以下自定义应用到你的进程:

差异

Azure DevOps Services 和 Azure DevOps Server 使用不同的模型来关联项目和流程:

  • 在 Azure DevOps Server 中,进程模板充当项目的起点,自定义范围限定为单个项目。
  • 在 Azure DevOps Services 中,进程跨多个项目共享,并充当自定义范围。

定义进程模板的结构和语法大多是一致的,只有针对 Azure DevOps Services 和 Azure DevOps Server 设计的模板之间的细微差异。

注释

仅 Azure DevOps Services 支持从托管 XML 迁移到继承的模型,而 Azure DevOps Server 中不支持这种迁移。

限制

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

不支持的自定义项和未引用的插件文件

任何 XML 定义文件中对以下对象的引用都会导致导入时出现验证错误:

  • 工作项窗体上的自定义控件
  • 自定义链接类型
  • 全局工作流
  • 团队现场支持
  • 肯定否定 规则
  • 匹配规则支持

以下插件及其关联的文件不用于定义过程,也不用于更新现有项目:但是,在创建新项目时,它们用于创建对象或项目。

  • 分类
  • 使用工作项查询语言 (WIQL) 语法定义的工作项查询
  • 测试管理
  • 工作项

注释

WIQL 长度不得超过 32-K 个字符。 系统不允许创建或运行超过该长度的查询。

以下插件及其关联的文件将替换为系统默认值:

  • 生成
  • 组和权限
  • 实验室
  • 版本控制

将忽略以下插件及其关联的文件:

  • Microsoft 项目映射
  • 报表
  • Windows SharePoint 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 中最多有 1,024 个字段,所有 WIT 中最多有 1,024 个字段。
  • 分配给 WIT 的友好名称和必需 refname 属性在 WIT 定义文件中是唯一的。
  • 必需的 refname 属性值不包含不允许的字符或使用不允许的 System.Name 命名空间和 Microsoft.Name
  • 引用名称至少包含一个句点(.),所有其他字符都是没有空格的字母。
  • WITD元素包含一个FORMWebLayout元素,该元素定义符合 WebLayout 和 Control 元素中指定的语法的元素。

工作项字段

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

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

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

限制限制

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

必填字段

类别 要指定的字段
进程配置积压工作 用于属性和值的字段 type=Teamtype=Order
常规积压或组合积压 用于 type=Effort
任务积压 - 用于 type=RemainingWork
的字段 - 用于 type=Activity
- ALLOWEDVALUES 的字段,适用于 type=Activity 的规则的字段

规则限制

限制 详细信息
字段规则元素不能指定 fornot 属性。 字段规则元素中不允许使用这些属性。
FIELD元素不能包含子规则元素CANNOTLOSEVALUENOTSAMEASMATCHPROHIBITEDVALUES 这些子规则元素不受支持在FIELD元素中。
FIELD 字段 System.Name 的定义不能包含字段规则,但特定字段除外。 只有某些字段可以包含特定规则,如本文中所述。
System.Title 可以包含规则 REQUIREDDEFAULT
System.Description 可以包含规则 REQUIREDDEFAULT
System.AssignedTo 可以包含规则REQUIREDDEFAULTALLOWEXISTINGVALUEVALIDUSER
System.ChangedBy 可以包含规则REQUIREDDEFAULTALLOWEXISTINGVALUEVALIDUSER

一致的名称和属性

在进程或项目集合中,所有由name元素定义的typeFIELD和其他属性在所有 WIT 定义中必须相同。

标识字段

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

字段名称 引用名称
分配到 System.AssignedTo
授权为 System.AuthorizedAs
更改者 System.ChangedBy
创建者 System.CreatedBy
激活者 Microsoft.AzureDevOps.Common.ActivatedBy
关闭者 Microsoft.AzureDevOps.Common.ClosedBy
解决者 Microsoft.AzureDevOps.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 XML 元素引用中所述的语法和规则。 此外,它必须满足以下条件:

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

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

全局列表

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

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

窗体布局

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

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