在你为已升级的团队项目(使用基于 Microsoft Solutions Framework (MSF) for Agile Software Development v5.0 的过程模板创建)配置功能后,你应该手动更新用户情景和任务工作流分配。 如果你未更新工作流,则任务板仅提供两种状态:“活动”“已关闭”,如下图所示。 这样会妨碍你和你的团队区分正在进行的和尚未开始的任务。

Agile 团队项目的任务板,不包含建议的手动更新

未更新的敏捷团队项目的任务板

已使通过“配置功能”向导进行的更新匹配为你的团队项目定义的现有工作流。 对于 5.0 版本的 MSF Agile 过程模板,这意味着随最新版本引入的“新建”和“已移除”状态不存在。 这些状态支持将用户情景从“新建”状态转换为“活动”状态。 在没有定义“新建”状态的情况下,分配给迭代的用户情景将保留在产品积压工作 (backlog) 上直至得到解决,而这并不是所需的或预期的行为。

以同样的方式将“新建”状态添加到“任务”工作流,允许用户使用任务板将任务从“新建”移至“活动”和“已关闭”。 此外,通过将“已移除”状态添加到用户情景和任务类型定义,将允许用户使用计划工具剪切情景和任务。

要支持所需的行为,你必须将“新建”和“已移除”状态添加到用户情景和任务工作项类型,并更新过程配置中分配的元状态映射。

备注

可以通过使用过程编辑器(它是可下载并安装的针对 Visual Studio 的强大工具外接程序)执行下面描述的某些过程。过程编辑器位于“工具”菜单下,可提供用于自定义 Team Foundation Server 过程模板的图形用户界面。可以使用此工具导入和导出工作项类型并修改过程模板的内容。有关详细信息,请参见 Microsoft 网站上的以下页面:Team Foundation Server 增强工具

要求

  • 若要运行 witadmin 命令行工具,你必须是以下某个组的成员:“Team Foundation Administrators”、**“项目集合管理员”或团队项目的“项目管理员”**组。 请参阅Team Foundation Server 权限参考

更新 Agile 团队项目的工作流和元状态

重要

本主题中的步骤是基于 MSF for Agile Software Development 6.0 编写的。要更新你的团队项目以便支持为 MSF for Agile Software Development 6.1 定义的最新工作流,你可以采用这些步骤而不是复制最新 Agile 过程模板的 WORKFLOW 部分。对最新每季更新中的工作项类型的工作流进行了重要更新。这些更改支持反向转换,因此,当你无意中将看板或任务板的工作项拖动到已解决或已关闭状态时,可以将其拖动回早期的工作流状态。

若要了解有关更新的详细信息,请参阅计划和跟踪的新增功能

你将需要执行以下步骤:

  • 为用户情景和任务类型以及过程配置导出定义。

  • 将代码片段插入用户情景和任务的工作流部分。

  • 更新过程配置的元状态映射。

  • 为工作项类型和过程配置导入更新的定义。

  • 验证任务板上显示的更改。

重要

要使以下步骤有效,必须在为工作项的用户情景和任务类型定义的工作流中指定“活动”状态。

更新用户情景的工作流状态和转换

  1. 若要运行 witadmin 命令行工具,请在安装了 Visual Studio 或 团队资源管理器 的情况下打开命令提示符窗口,然后键入:

    cd %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE
    

    在 64 位版本的 Windows 上,将 %programfiles% 替换为 %programfiles(x86)%

  2. 要导出用户情景的类型定义,请输入以下命令,用你的数据替换此处显示的参数,其中 CollectionURL 指定团队项目集合的 URL,ProjectName 指定集合内定义的团队项目的名称,而“DirectoryPath\FileName.xml”指定要导出的文件的名称和位置。 然后按 Enter 键。

    witadmin exportwitd /collection:CollectionURL /p:"ProjectName" /n:"User Story" /f:"DirectoryPath\FileName.xml"
    

    为 URL 使用此格式:**http://**ServerName:Port/VirtualDirectoryName/CollectionName,例如:http://srvalm:8080/tfs/DefaultCollection。

  3. 在文本编辑器或 Visual Studio 中,打开你导出的文件。

  4. 在行 <STATES> 和 <STATE value="Active"> 之间添加此代码片段:

    <STATE value="New">
       <FIELDS>
          <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
             <EMPTY />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
             <EMPTY />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
             <EMPTY />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
             <EMPTY />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
             <EMPTY />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
             <EMPTY />
          </FIELD>
       </FIELDS>
    </STATE>
    <STATE value="Removed" />
    
  5. 将以 <TRANSITION from=" " to="Active"> 开头和以 <TRANSITION> 结束的部分替换为此代码片段:

    <TRANSITION from="" to="New">
       <REASONS>
          <DEFAULTREASON value="New" />
       </REASONS>
       <FIELDS>
          <FIELD refname="System.Description">
             <DEFAULT from="value" value="As a &amp;lt;type of user&amp;gt; I want &amp;lt;some goal&amp;gt; so that &amp;lt;some reason&amp;gt;" />
          </FIELD>
       </FIELDS>
    </TRANSITION>
    <TRANSITION from="New" to="Active">
       <REASONS>
          <DEFAULTREASON value="Implementation started" />
       </REASONS>
       <FIELDS>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
             <COPY from="currentuser" />
             <VALIDUSER />
             <REQUIRED />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
             <SERVERDEFAULT from="clock" />
          </FIELD>
          <FIELD refname="System.AssignedTo">
             <DEFAULT from="currentuser" />
          </FIELD>
       </FIELDS>
    </TRANSITION>
    <TRANSITION from="New" to="Removed">
       <REASONS>
          <DEFAULTREASON value="Removed from the backlog" />
       </REASONS>
    </TRANSITION>
    <TRANSITION from="Active" to="New">
       <REASONS>
          <DEFAULTREASON value="Implementation halted" />
       </REASONS>
    </TRANSITION>
    <TRANSITION from="Removed" to="New">
       <REASONS>
          <DEFAULTREASON value="Reconsidering the User Story" />
       </REASONS>
    </TRANSITION>
    
  6. 保存并关闭文件。

  7. 导入该文件,用你的数据替换此处显示的参数。

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

更新任务的工作流状态和转换

  1. 导入任务的类型定义,用你的数据替换此处显示的参数。

    witadmin exportwitd /collection:CollectionURL /p:"ProjectName" /n:"Task" /f:"DirectoryPath\FileName.xml"
    
  2. 在文本编辑器或 Visual Studio 中,打开你导出的文件。

  3. 在行 <STATES> 和 <STATE value="Active"> 之间添加此代码片段:

    <STATE value="New">
       <FIELDS>
          <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
             <EMPTY />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
             <EMPTY />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
             <EMPTY />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
             <EMPTY />
          </FIELD>
       </FIELDS>
    </STATE>
    <STATE value="Removed" />
    
  4. 将第一个转换块(对应位于 <TRANSITION from="" to="Active"> 及其结束 </TRANSITION> 标记之间的行)替换为此代码片段:

    <TRANSITION from="" to="New">
       <REASONS>
          <DEFAULTREASON value="New" />
       </REASONS>
    </TRANSITION>
    <TRANSITION from="New" to="Active">
       <ACTIONS>
          <ACTION value="Microsoft.VSTS.Actions.StartWork" />
       </ACTIONS>
       <REASONS>
          <DEFAULTREASON value="Work started" />
       </REASONS>
       <FIELDS>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
             <COPY from="currentuser" />
             <VALIDUSER />
             <REQUIRED />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
             <SERVERDEFAULT from="clock" />
          </FIELD>
          <FIELD refname="System.AssignedTo">
             <DEFAULT from="currentuser" />
          </FIELD>
       </FIELDS>
    </TRANSITION>
    <TRANSITION from="Active" to="New">
       <ACTIONS>
          <ACTION value="Microsoft.VSTS.Actions.StopWork" />
       </ACTIONS>
       <REASONS>
          <DEFAULTREASON value="Work halted" />
       </REASONS>
    </TRANSITION>
    <TRANSITION from="New" to="Closed">
       <ACTIONS>
          <ACTION value="Microsoft.VSTS.Actions.Checkin" />
       </ACTIONS>
       <REASONS>
          <DEFAULTREASON value="Completed" />
          <REASON value="Cut" />
          <REASON value="Deferred" />
       <REASON value="Obsolete" />
       </REASONS>
       <FIELDS>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
             <READONLY />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
             <READONLY />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
             <SERVERDEFAULT from="clock" />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
          <COPY from="currentuser" />
             <VALIDUSER />
             <REQUIRED />
          </FIELD>
       </FIELDS>
    </TRANSITION>
    <TRANSITION from="Closed" to="New">
       <REASONS>
          <DEFAULTREASON value="Reactivated" />
       </REASONS>
       <FIELDS>
          <FIELD refname="System.AssignedTo">
             <COPY from="field" field="Microsoft.VSTS.Common.ClosedBy" />
          </FIELD>
       </FIELDS>
    </TRANSITION>
    <TRANSITION from="New" to="Removed">
       <REASONS>
          <DEFAULTREASON value="Removed from the backlog" />
       </REASONS>
    </TRANSITION>
    <TRANSITION from="Active" to="Removed">
       <REASONS>
          <DEFAULTREASON value="Removed from the backlog" />
       </REASONS>
    </TRANSITION>
    <TRANSITION from="Removed" to="New">
       <REASONS>
          <DEFAULTREASON value="Reconsidering the Task" />
       </REASONS>
    </TRANSITION>
    
  5. 保存并关闭文件。

  6. 导入该文件,用你的数据替换此处显示的参数。

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

更新过程配置的元状态映射

  1. 键入以下命令以导出 ProcessConfiguration 文件,并用你的数据替换显示的参数。

    witadmin exportprocessconfig /collection:CollectionURL /p:"ProjectName" /f:"DirectoryPath\ ProcessConfiguration.xml"
    

    其中,CollectionURL 指定团队项目集合的 URL,ProjectName 指定团队项目的名称。 为 URL 使用此格式:**http://**ServerName:Port/VirtualDirectoryName/CollectionName,例如:http://srvalm:8080/tfs/DefaultCollection。

  2. 使用记事本或其他文本编辑器,打开 ProcessConfiguration.xml 文件。

  3. 找到 <RequirementWorkItems category="Microsoft.RequirementCategory" plural="Stories"> 标记。

  4. 将行 <State type="Proposed" value="Active" /> 替换为以下行:

    <State type="Proposed" value="New" /> 
    <State type="InProgress" value="Active" /> 
    
  5. 找到 <TaskWorkItems category="Microsoft.TaskCategory"> 标记并将行 <State type="Proposed" value="Active" /> 替换为以下行:

    <State type="Proposed" value="New" />
    <State type="InProgress" value="Active" />
    
  6. 验证你拥有以下映射:

    <RequirementWorkItems category="Microsoft.RequirementCategory" plural="Stories">
       <States>
          <State type="Proposed" value="New"/>
          <State type="InProgress value="Active" />
          <State type="InProgress value="Resolved" />
          <State type="Complete" value="Closed" />
       </States>
    </RequirementWorkItems>
    <TaskWorkItems category="Microsoft.TaskCategory">
       <States>
          <State type="Proposed" value="New" />
          <State type="InProgress" value="Active" />
          <State type="Complete" value="Closed" />
       </States>
    </TaskWorkItems>
    
  7. 保存并关闭文件。

  8. 导入该配置文件。

    witadmin importprocessconfig /collection:CollectionURL /p:ProjectName /f:"DirectoryPath\ProcessConfiguration.xml" 
    

验证任务板上显示的更改

  1. 打开 Team Web Access,然后使用具有以下格式的 URL 连接到你的团队项目:

    http://MyServer:8080/tfs/TeamProjectCollectionName/MyProject
    

    如果 TWA 已经打开,则刷新你的浏览器以刷新缓存。

  2. 验证任务板列现在显示**“新建”“活动”“已关闭”**。

    Agile 团队项目的任务板,包含更新的工作流状态

    包含更新工作流的敏捷任务板

    若要了解使用任务板的详细信息,请参阅冲刺

请参见

概念

使用 Visual Studio ALM 和 TFS 跟踪工作

更新升级的团队项目以访问新功能