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

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

重要

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

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

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

Add a custom WIT, e.g., Service App, to the Requirement Category to track it like a requirement

提示

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

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

注意

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

自定义序列

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

注意

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

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

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

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

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

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

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

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

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

    堆栈排名 字段 (Agile、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"&gt; 
    <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 分区,如下所示:

    • 敏捷,用户情景:添加从ActiveResolvedRemoved转换Removed;删除在 state= 时填充Activated ByActivated Date字段的规则Resolved
    • Scrum,产品积压工作项:从中添加转换CommittedRemoved
      如果已自定义, 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" />   
    

    活动 字段 (Agile、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>    
    

    (Agile、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 分区,如下所示:

    • 敏捷,用户情景:添加从ActiveResolvedRemoved转换Removed;删除在 state= 时填充Activated ByActivated Date字段的规则Resolved
    • Scrum,产品积压工作项:从中添加转换CommittedRemoved
      如果已自定义, 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 添加到任务板。 打开任务板页,或刷新页面(如果已打开)。
    应能够选择“任务”或服务任务作为链接到用户情景的工作项。
    Task board with Service Task work item type added

    在任务板上,拖动工作项以更新其状态。 你会注意到,无法将项目拖到状态无效的列。 例如,无法将任务拖到“阻止”状态,或者将任务拖到已解析状态。 如果希望使用这些状态,请将它们添加到工作流定义以获取相应的 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 命令导入和导出定义文件。 有关详细信息,请参阅 witAdmin:自定义和管理用于跟踪工作的对象

提示

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

或者,可以使用 GitHub 提供的开源客户端 TFS 团队项目经理

提示

使用 witadmin,可以 导入和导出定义文件。 可以使用的其他工具包括进程编辑器 (要求已安装 Visual Studio) 版本。 从 Visual Studio 市场安装 TFS 进程模板编辑器。 可以使用此版本的进程编辑器修改旧样式的工作项窗体。 不能使用它来编辑与 新 Web 窗体关联的表单

或者,可以使用 GitHub 提供的开源客户端 TFS 团队项目经理

  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 作为项目组合积压工作,请参阅 添加项目组合积压工作

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

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