将工作项类型添加到积压工作和面板

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

重要

本文适用于托管 XML 和本地 XML 进程模型的项目自定义。 有关继承进程模型,请参阅 自定义流程的积压工作或板。 有关流程模型的概述,请参阅 自定义工作跟踪体验

为了满足选择的业务流程,你的团队可能需要将其他工作项类型(WIT)作为要求或作为任务进行跟踪。 这样,就可以在产品和冲刺积压工作或看板和任务板中添加和跟踪它们。

例如,你可能希望根据目标客户或基于其源的不同类型的 bug 跟踪不同类型的要求。 在这里,Fabrikam Fiber 团队添加了服务应用 WIT 来跟踪支持其客户服务团队的工作。

将自定义 WIT(例如服务应用)添加到要求类别,以像要求一样跟踪它

提示

如果要做的就是将 bug 添加到积压工作和板,请参阅 积压工作和板 上的“显示 bug”,使团队能够选择。 如果要添加另一个 WIT 和项目组合积压工作,请参阅 “添加项目组合积压工作”级别

若要添加 WIT 以跟踪要求、任务或 bug,请执行以下步骤:

注意

建议将 WIT 添加到以下类别之一:要求类别、任务类别或 Bug 类别。 系统阻止向要求类别和任务类别添加相同的 WIT。 添加到 Bug 类别的 WIT 将遵循 团队设置的 bug 行为。

自定义序列

托管 XML 进程模型自定义序列

注意

如果通过导入/导出定义文件来自定义过程,请使用以下指南。 否则,如果通过管理员 UI 自定义进程,请参阅 添加或修改进程的自定义工作项类型。

你将对进程定义文件进行更改,然后将该进程导入以更新现有项目或使用该过程创建项目。

本地 XML 进程模型自定义序列

首先导出工作跟踪定义文件,更新它们,然后将其导入项目。

添加 WIT 以像要求一样跟踪它

添加到要求类别的 WIT 显示在产品积压工作和看板中。 必须确保 WIT 定义包含支持敏捷规划工具的必填字段。

  1. 导出进程(托管 XML)或定义文件(本地 XML),如第一步所示

  2. 编辑 WIT 定义以支持规划工具。

    自定义/语法以添加或更新

    堆栈排名 字段(敏捷,CMMI)

    <FIELD name="Stack Rank" refname="Microsoft.VSTS.Common.StackRank" type="Double" reportable="dimension">     
    <HELPTEXT>Work first on items with lower-valued stack rank. Set in triage. 
    </HELPTEXT>      
    </FIELD> 
    

    积压工作优先级 字段 (Scrum)

    <FIELD name="Backlog Priority" refname="Microsoft.VSTS.Common.BacklogPriority" type="Double" reportable="detail" /> 
    

    “值区域” 字段

    <FIELD name="Value Area" refname="Microsoft.VSTS.Common.ValueArea" type="String"> 
    <REQUIRED />   
    <ALLOWEDVALUES>    
    <LISTITEM value="Architectural" />   
    <LISTITEM value="Business"/>   
    </ALLOWEDVALUES>   
    <DEFAULT from="value" value="Business" /> 
    <HELPTEXT>Business = delivers value to a user or another system; Architectural = work to support other stories or components  
    </HELPTEXT>   
    </FIELD>
    

    “要求类型” 字段 (CMMI)

    <FIELD name="Requirement Type" refname="Microsoft.VSTS.CMMI.RequirementType" type="String" reportable="dimension">  
    <REQUIRED />  
    <ALLOWEDVALUES>  
    <LISTITEM value="Scenario" />  
    <LISTITEM value="Quality of Service" />  
    <LISTITEM value="Functional" /> 
    <LISTITEM value="Operational" />  
    <LISTITEM value="Interface" />  
    <LISTITEM value="Security" />  
    <LISTITEM value="Safety" />  
    <LISTITEM value="Business Objective" />  
    <LISTITEM value="Feature" />  
    </ALLOWEDVALUES> 
    <DEFAULT from="value" value="Functional" />  
    </FIELD>
    

    WORKFLOW 节更新或验证 WORKFLOW 分区,如下所示:

    • 敏捷用户情景:添加从Active/ResolvedRemovedRemoved转换;删除在 state= 时填充Activated ByActivated Date字段的规则Resolved
    • Scrum,产品积压工作项:从 Committed 中添加转换 Removed
      如果已自定义,WORKFLOW请确保在 ProcessConfiguration RequirementBacklog定义所需的状态到元状态映射。

    FORM 节添加或验证是否已将以下字段添加到该 FORM 节:

    • 敏捷:
    <Control FieldName="Microsoft.VSTS.Scheduling.StoryPoints" Type="FieldControl" Label="Story Points" LabelPosition="Left" />  
    <Control FieldName="Microsoft.VSTS.Common.ValueArea" Type="FieldControl" Label="Value area" LabelPosition="Left" />  
    
    • Cmmi:
    <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.Size" Label="Size" LabelPosition="Left" />
    <Control Type="FieldControl" FieldName="Microsoft.VSTS.CMMI.RequirementType" Label="Type" LabelPosition="Left" /> 
    <Control FieldName="Microsoft.VSTS.Common.ValueArea" Type="FieldControl" Label="Value area" LabelPosition="Left" />  
    
    • Scrum:
    <Control FieldName="Microsoft.VSTS.Scheduling.Effort" Type="FieldControl" Label="Effort" LabelPosition="Left" />  
    <Control FieldName="Microsoft.VSTS.Common.ValueArea" Type="FieldControl" Label="Value area" LabelPosition="Left" />  
    
  3. 编辑类别定义。 将 WIT 添加到要求类别。 在这里,我们将添加服务应用。

    <CATEGORY name="Requirement Category" refname="Microsoft.RequirementCategory">
       <DEFAULTWORKITEMTYPE name="User Story" />
       <WORKITEMTYPE name="Service App" />
    </CATEGORY>
    
  4. 更新或验证 ProcessConfiguration 定义: RequirementBacklog 要添加的 WIT 部分。 具体而言,请确保满足以下条件:

    • 将每个工作流状态的开始映射到 type="Proposed"
    • 将要显示在看板上的每个中间工作流状态映射到 type="InProgress"
    • 将每个工作流状态的末尾映射到 type="Complete"
    • 确保只有一个状态映射到 type="Complete"
      例如,添加挂起的工作流状态:
    <States>    
         <State value="New" type="Proposed" />  
         <State value="Active" type="InProgress" />  
         <State value="Pending" type="InProgress" />  
         <State value="Resolved" type="InProgress" />  
         <State value="Closed" type="Complete" />  
    </States>   
    
  5. 将 WIT 颜色定义添加到 ProcessConfiguration WorkItemColors 节。 例如:

    <WorkItemColor primary="FF33CC33" secondary="FFD6F5D6" name="Service App" />
    
  6. 更新项目:

添加 WIT 以像任务一样跟踪它

添加到任务类别的 WIT 显示在冲刺积压工作和任务板上。 添加的 WIT 必须指定必填字段才能支持敏捷规划工具。

  1. 导出进程(托管 XML)或定义文件(本地 XML),如第一步所示

  2. 编辑 WIT 定义以支持规划工具。

    自定义/语法以添加或更新

    堆栈排名 字段(敏捷,CMMI)

    <FIELD name="Stack Rank" refname="Microsoft.VSTS.Common.StackRank" type="Double" reportable="dimension">  
    <HELPTEXT>Work first on items with lower-valued stack rank. Set in triage.  
    </HELPTEXT>   
    </FIELD> 
    

    ** 积压工作优先级** 字段 (Scrum)

    <FIELD name="Backlog Priority" refname="Microsoft.VSTS.Common.BacklogPriority" type="Double" reportable="detail" />   
    

    活动 字段(敏捷、Scrum)

    <FIELD name="Activity" refname="Microsoft.VSTS.Common.Activity" type="String" reportable="dimension"> 
    <HELPTEXT&gt;Type of work involved&lt/HELPTEXT> 
    <SUGGESTEDVALUES&gt;  
    <LISTITEM value="Development" />    
    <LISTITEM value="Testing" />    
    <LISTITEM value="Requirements" />    
    <LISTITEM value="Design" />    
    <LISTITEM value="Deployment" />    
    <LISTITEM value="Documentation" />    
    </SUGGESTEDVALUES>    
    </FIELD>    
    

    纪律 字段 (CMMI)

    <FIELD name="Discipline" refname="Microsoft.VSTS.Common.Discipline" type="String" reportable="dimension">  
    <ALLOWEDVALUES&gt;  
    <LISTITEM value="Analysis" />    
    <LISTITEM value="User Experience" />   
    <LISTITEM value="User Education" />    
    <LISTITEM value="Development" />   
    <LISTITEM value="Test" />   
    </ALLOWEDVALUES>    
    </FIELD>    
    

    剩余工时 字段(全部)

    <FIELD name="Remaining Work" refname="Microsoft.VSTS.Scheduling.RemainingWork" type="Double" reportable="measure" formula="sum">    
    <HELPTEXT>    
    An estimate of the work remaining to complete the task (in person hours)  
    </HELPTEXT>
    </FIELD>    
    

    其他计划字段(敏捷,CMMI)

    <FIELD name="Original Estimate" refname="Microsoft.VSTS.Scheduling.OriginalEstimate" type="Double" reportable="measure" formula="sum">    
    <HELPTEXT&gt; The original estimate of work required to complete the task (in person hours)</HELPTEXT>   
    </FIELD>    
    <FIELD name="Remaining Work" refname="Microsoft.VSTS.Scheduling.RemainingWork" type="Double" reportable="measure" formula="sum">    
    <HELPTEXT>An estimate of the work remaining to complete the task (in person hours)
    </HELPTEXT>  
    </FIELD>    
    <FIELD name="Completed Work" refname="Microsoft.VSTS.Scheduling.CompletedWork" type="Double" reportable="measure" formula="sum">    
    <HELPTEXT>    
    The work that has been completed for this task (in person hours)  
    <HELPTEXT>    
    </FIELD>    
    <FIELD name="Start Date" refname="Microsoft.VSTS.Scheduling.StartDate" type="DateTime" reportable="dimension" />   
    <FIELD name="Finish Date" refname="Microsoft.VSTS.Scheduling.FinishDate" type="DateTime" reportable="dimension" />   
    

    WORKFLOW 部分
    更新或验证分区 WORKFLOW ,如下所示:

    • 敏捷用户情景:添加从Active/ResolvedRemovedRemoved转换;删除在 state= 时填充Activated ByActivated Date字段的规则Resolved
    • Scrum,产品积压工作项:从 Committed 中添加转换 Removed
      如果已自定义,WORKFLOW请确保在 ProcessConfiguration TestBacklog定义所需的状态到元状态映射。

    FORM 部分
    添加或验证是否已将以下字段添加到 FORM 该节:

    • 敏捷:
    <Control FieldName="Microsoft.VSTS.Scheduling.StoryPoints" Type="FieldControl" Label="Story Points" LabelPosition="Left" />    
    <Control FieldName="Microsoft.VSTS.Common.ValueArea" Type="FieldControl" Label="Value area" LabelPosition="Left" />    
    
    • Cmmi:
    <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.Size" Label="Size" LabelPosition="Left" /&gt;    
    <Control FieldName="Microsoft.VSTS.Common.ValueArea" Type="FieldControl" Label="Value area" LabelPosition="Left" />    
    
    • Scrum:
    <Control FieldName="Microsoft.VSTS.Scheduling.Effort" Type="FieldControl" Label="Effort" LabelPosition="Left" />   
    <Control FieldName="Microsoft.VSTS.Common.ValueArea" Type="FieldControl" Label="Value area" LabelPosition="Left" />    
    
  3. 编辑类别定义。 将 WIT 添加到任务类别。 在此处添加服务任务。

    <CATEGORY name="Task Category" refname="Microsoft.TaskCategory">
       <DEFAULTWORKITEMTYPE name="Task" />
       <WORKITEMTYPE name="Service Task" />
    </CATEGORY>
    
  4. 更新或验证 ProcessConfiguration 定义: TaskBacklog 要添加的 WIT 部分。
    具体而言,请确保满足以下条件:

    • 将每个工作流状态的开始映射到 type="Proposed"
    • 将要显示在任务板上的每个中间工作流状态映射到 type="InProgress"
    • 将每个工作流状态的末尾映射到 type="Complete"
    • 确保只有一个状态映射到 type="Complete"

    例如,添加 Blocked 工作流状态:

    <States>  
       <State value="New" type="Proposed" />  
       <State value="Active" type="InProgress" />  
       <State value="Blocked" type="InProgress" />  
       <State value="Resolved" type="InProgress" />  
       <State value="Closed" type="Complete" />  
    </States>  
    
  5. 将 WIT 颜色定义添加到 ProcessConfiguration WorkItemColors 节。 例如:

    <WorkItemColor primary="FFF2CB1D" secondary="FFF6F5D2" name="Service Task" />
    
  6. 更新项目:

  7. 确认可以将 WIT 添加到任务板。 打开任务板页,或刷新页面(如果已打开)。
    应能够选择“任务”或服务任务作为链接到用户情景的工作项。
    添加了服务任务工作项类型的任务板

    在任务板上,拖动工作项以更新其状态。 你会注意到,无法将项拖到状态无效的列。 例如,不能将任务拖到“阻止”状态,也不能将任务拖到已解析状态。 如果要使用这些状态,请将它们添加到相应 WIT 定义的工作流定义中。

将 WIT 添加到 Bug 类别

添加到 Bug 类别的 WIT 将基于 团队设置进行处理。 由于这些 WIT 可能被视为要求或任务,因此它们必须满足要求和任务的敏捷规划工具要求。

  1. 导出进程(托管 XML)或定义文件(本地 XML),如第一步所示

  2. 编辑 WIT 定义以支持规划工具,方法是满足“添加 WIT”的步骤 2 中列出的条件以跟踪作为要求并添加 WIT 以跟踪为任务

  3. 编辑类别定义。 将 WIT 添加到 Bug 类别。 在这里,我们添加了两个 WIT。

    <CATEGORY name="Bug Category" refname="Microsoft.BugCategory">  
       <DEFAULTWORKITEMTYPE name="Bug" />  
       <WORKITEMTYPE name="Service Bug" />  
       <WORKITEMTYPE name="Feedback" />  
    </CATEGORY>
    
  4. 更新或验证 ProcessConfiguration 定义: BugWorkItems 要添加的 WIT 部分。

    具体而言,请确保满足以下条件:

    • 将每个工作流状态的开始映射到 type="Proposed"
    • 将要显示在看板或任务板上的每个中间工作流状态映射到 type="InProgress"
    • 将每个工作流状态的末尾映射到 type="Complete"
    • 确保只有一个状态映射到 type="Complete"

    例如,添加 Investigate 工作流状态:

    <States>  
     <State value="New" type="Proposed" />  
     <State value="Active" type="InProgress" />  
     <State value="Investigate" type="InProgress" />  
     <State value="Resolved" type="InProgress" />  
     <State value="Closed" type="Complete" />  
    </States>  
    
  5. 将 WIT 颜色定义添加到 ProcessConfiguration WorkItemColors 节。 例如:

    <WorkItemColor primary="FFF2CB1D" secondary="FFF6F5D2" name="Service Bug" />  
    <WorkItemColor primary="FFFF00FF" secondary="FFFFCCFF" name="Feedback" />  
    
  6. 更新项目:

  7. 选择团队设置,了解 bug 的跟踪方式。

  8. 确认 WIT 按预期显示在积压工作和版块上,并且可以按预期通过积压工作添加它。

导入和导出定义文件(本地 XML)

使用 witadmin 命令导入和导出定义文件。 有关详细信息,请参阅 wit管理员:自定义和管理用于跟踪工作的对象。

提示

使用 witadmin,可以 导入和导出定义文件。 可以使用的其他工具包括进程编辑器 (要求你已安装 Visual Studio) 版本。 从 Visual Studio Marketplace 安装进程模板编辑器

  1. 根据 witAdmin:自定义和管理用于跟踪工作的对象中提供的说明打开命令提示符窗口。 例如:
  1. 输入 witadmin 命令,将数据替换为显示的参数。 例如,若要导入 WIT,

    witadmin importwitd /collection:CollectionURL /p:"ProjectName" /f:"DirectoryPath\WITDefinitionFile.xml"
    

    对于 CollectionURL ,请指定项目集合的 URL,对于 ProjectName ,指定集合中定义的项目的名称。 必须使用以下格式指定 URL: http://ServerName:Port/VirtualDirectoryName/CollectionName

    对于 DirectoryPath,请指定保存下载的进程模板的文件夹的路径 WorkItem Tracking/TypeDefinitions 。 目录路径必须遵循以下结构: Drive:\TemplateFolder\WorkItem Tracking\TypeDefinitions

    例如,导入 ServiceApp WIT:

    witadmin importwitd /collection:"http://MyServer:8080/tfs/DefaultCollection"/p:MyProject /f:"DirectoryPath/ServiceApp.xml"
    

使用以下命令导出和导入 WIT、类别和进程配置:

witadmin exportwitd /collection:CollectionURL /p:"ProjectName" /n:TypeName /f:"DirectoryPath\WITDefinitionFile.xml"  
witadmin importwitd /collection:CollectionURL /p:"ProjectName" /f:"DirectoryPath\WITDefinitionFile.xml"  
witadmin exportcategories /collection:"CollectionURL" /p:"ProjectName" /f:"DirectoryPath/categories.xml"  
witadmin importcategories /collection:"CollectionURL" /p:"ProjectName" /f:"DirectoryPath/categories.xml"   
witadmin exportprocessconfig /collection:"CollectionURL" /p:"ProjectName" /f:"DirectoryPath/ProcessConfiguration.xml"  
witadmin importprocessconfig /collection:"CollectionURL" /p:"ProjectName" /f:"DirectoryPath/ProcessConfiguration.xml"  

我们只是演示如何将另一个 WIT 添加到积压工作或板。 但是,如果要添加另一个 WIT 以充当项目组合积压工作,请参阅 “添加项目组合积压工作”。

有关可用于自定义工作跟踪对象的所有选项的概述,请参阅 “自定义工作跟踪体验 ”。

若要了解积压工作或板上的分层元素或嵌套元素的显示方式,请参阅 积压工作和板如何显示分层(嵌套)项