修改或添加自定义工作项类型 (WIT)

作为项目管理员,你可能需要修改现有工作项类型 (WIT) 以支持其他跟踪要求或工作流过程。 修改 WIT 的最常见原因是添加或修改字段集或字段规则、更改工作流或自定义工作项窗体。 这三个原因对应于 WIT XML 定义文件的三个主要部分:FIELDS、WORKFLOW 和 FORM。

所有这些修改都需要你编辑 WIT 定义,只能对 TFS 本地部署执行此操作。 本主题概述了可自定义的内容以及指向说明如何执行此操作的内容的指针。

工作项类型,自定义

添加或修改字段、字段规则、标签或空文本

将字段和字段规则添加到 FIELDS 部分。 对于要显示在工作项窗体上的字段,你还必须将它添加到 WIT 定义的 FORM 部分。

例如,若要将工作项 ID 添加到窗体,请在 FORM 部分中指定以下 XML 语法。

<Control FieldName="System.ID" Type="FieldControl" Label="ID" LabelPosition="Left" />

若要了解有关定义字段的更多信息,请参见添加或修改字段以支持查询、报表和工作流

更改工作流状态、原因、转换或添加工作流字段规则

WORKFLOW 中的 STATES 和 REASONS 部分指定**“状态”“原因”**字段中的选择列表值。 它们跟踪工作项的状态。 如下图所示,TRANSITIONS 部分指定状态之间的有效转换。 指定正向和回归转换。

工作流状态关系图示例

用户情景工作流状态,敏捷过程模板

你更改工作流以实现以下目标:

  • 添加或移除状态、原因或转换。

  • 指定在更改状态、原因或转换期间要应用的字段的值。

  • 指定自定义 ACTION 以基于状态、原因或转换更改自动化字段赋值。

当你自定义工作流时,请按照这两个步骤操作:

  1. 修改 WIT 定义的 WORKFLOW

  2. 修改过程配置以将新工作流状态映射到元状态

    需要在下列情况下执行第二步:

    • 当你针对出现在敏捷计划工具页面上的 WIT 而更改工作流时。 这些 WIT 属于“要求”或“任务”类别。 若要了解有关配置这些工具的更多信息,请参见配置和自定义团队项目的敏捷计划工具

    • 当你更改了测试计划和测试套件工作流以及你在 Visual Studio 2013.2 版本或更早期版本所提供的 Test Manager 客户端上工作时。 将应用层服务器更新至 TFS 2013.3 后,WIT 就变得可用。 出现在敏捷计划工具页面上。

      如果在更改工作流后连接到工作项目时,出现了“应用程序检测到意外错误”错误,你可以将新工作流状态映射到元状态,从而解决该问题。 若要消除此错误,请参阅导入和导出过程配置 [witadmin].

工作流字段规则

你可在更改状态、指定原因时或在工作流转换期间应用字段规则。

例如,在状态设置为“活动”时,通过添加 EMPTY 规则,可自动置空“关闭日期”和“关闭者”字段并使其成为只读字段。 在将工作项从已关闭状态重新激活时,这会很有用。

<STATE value="Active">
   <FIELDS>
. . .
      <FIELD refname="Microsoft.VSTS.Common.ClosedDate"><EMPTY/></FIELD>
      <FIELD refname="Microsoft.VSTS.Common.ClosedBy"><EMPTY/></FIELD>
   </FIELDS>
</STATE>

应用工作流字段规则以完成以下操作:

  • 通过指定 CANNOTLOSEVALUE、EMPTY、FROZEN、NOTSAMEAS、READONLY 和 REQUIRED 来限定字段可具有的值。

  • 使用 COPY、DEFAULT 和 SERVERDEFAULT 将值添加到字段中。

  • 限制可以修改字段的用户。

  • 通过使用 MATCH 对字符串字段强制实施模式匹配。

  • 使用 WHEN、WHENNOT、WHENCHANGED 和 WHENNOTCHANGED 基于其他字段中的值来有条件地应用规则。

  • 将规则限制为应用于特定用户或组。 大多数规则都支持 for 或 not 特性以关注规则将应用于和不应用于哪些用户或组。

有关应用工作流字段规则的更多信息,请参见 FIELD(工作流)元素

自定义工作项窗体

下图突出显示了工作项窗体上的最常用元素。 可以自定义除标题区域和窗体控件之外的所有元素。

工作项窗体元素和控件

可以自定义 WIT 窗体以实现以下目标:

编辑 WIT 定义

若要编辑 WIT 定义,请导出、修改然后导入 WIT 定义文件。

用于自定义 WIT 对象的进程

利用 witadmin,可以导入和导出定义文件。 可用来修改对象的 XML 语法的其他工具包括过程编辑器(可随 TFS 增强工具一起下载)或 TFS 团队项目管理器(CodePlex 上提供的社区资源项目)。

  1. 如果你不具有团队项目的管理权限,请获取这些权限

  2. 打开已安装 Visual Studio 或团队资源管理器的命令提示符窗口,然后输入:

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

    在 64 位版本的 Windows 上,将 %programfiles% 替换为 %programfiles(x86)%。 请转到此处免费下载团队资源管理器

  3. 导出要修改或添加字段的 WIT 定义文件。 指定 WIT 的名称和文件的名称。

    witadmin exportwitd /collection:CollectionURL /p:ProjectName /n:TypeName /f:"DirectoryPath/FileName.xml"
    

    CollectionURL 的一个示例是 http://MyServer:8080/tfs/TeamProjectCollectionName。

  4. 编辑文件。 有关详细信息,请参阅工作项跟踪:XML 元素定义的索引

  5. 导入 WIT 定义文件。

    witadmin importwitd /collection:CollectionURL /p:ProjectName /f:"DirectoryPath/FileName.xml"
    
  6. 打开 TWA 或团队资源管理器以查看更改。 如果客户端已打开,请刷新页面。

    在团队资源管理器中,选择 刷新**“刷新”**按钮。

    此时将从服务器下载最新更新,包括你刚刚导入的更改。 请等待几秒钟,直到刷新完成。

    有关使用 witadmin 的详细信息,请参见导入、导出和管理工作项类型 [witadmin]

问题解答

问:如何使用标记?

**答:**若要了解如何添加标记和筛选列表,请转到此处

问:在 TFS 升级后,我可以进行哪些自定义并继续使用“配置功能”向导更新我的团队项目?

**答:**你可以添加自定义 WIT 并更改窗体布局。 配置功能向导将更新你的团队项目,并且你将获取对最新功能的访问权限。

更改工作流或重命名 WIT 可能会要求你在更新团队项目时执行某些手动操作。 若要了解你可以安全进行的其他自定义和应避免哪些自定义,请参阅自定义工作跟踪体验:在你进行自定义之前,了解维护和升级的影响

问:如何添加新的 WIT?

**答:**添加新 WIT 的最简单方法是复制现有 WIT,然后修改此定义文件。 有关示例,请参见创建工作项类型

问:是否能重命名 WIT?

**答:**可以。 若要重命名现有 WIT,请使用 witadmin renamewitd。 例如,可以将标记为“QoS 项目”的 WIT 重命名为“服务协议”。

witadmin renamewitd /collection:"http://FabrikamPrime:8080/tfs/DefaultCollection" /p:"Fabrikam Web Site" /n:"QoS Item" /new:"Service Agreement"

在重命名属于某个类别的 WIT 时,你必须更新团队项目的类别定义以反映新名称。 具体而言,在更新类别定义之前,Agile 计划工具将无法运行。

有关详细信息,请参阅导入、导出和管理工作项类型 [witadmin]导入和导出类别 [witadmin]

问:如何停用或禁用 WIT?如何限制用户创建特定类型的工作项?

**答:**如果你有要停用的 WIT,但需要保留基于该类型创建的工作项,则可添加禁止所有有效用户保存工作项类型的规则。

<TRANSITION from=" " to="New">
   <FIELDS>
     <FIELD refname="System.CreatedBy">
         <VALIDUSER not="[Team Project Name]Project Valid Users" />
     </FIELD>
   </FIELDS>
</TRANSITION> 

若要只允许一组用户创建特定 WIT,可通过两种方式来限制访问:

  • 将 WIT 添加到隐藏的类别组可防止大多数参与者创建它们。 若要允许一组用户进行访问,你可创建模板的超链接,这将打开工作项窗体并与需要创建它们的团队成员共享此链接。

  • 通过为 System.CreatedBy 字段添加用于工作流的字段规则,可以有效地限制一组用户创建特定类型的工作项。 如下面的示例所示,创建工作项的用户必须属于 Allowed Group 才能保存工作项。

    <TRANSITION from=" " to="New">
       <FIELDS>
         <FIELD refname="System.CreatedBy">
             <VALIDUSER for="Allowed Group" not="Disallowed Group" />
         </FIELD>
       </FIELDS>
    </TRANSITION> 
    

问:如何删除 WIT?

**答:**若要阻止团队成员使用特定 WIT 创建工作项,可将其从团队项目中移除。 当你使用 witadmin destroywitd 时,你会永久性地移除使用该 WIT 创建的所有工作项以及 WIT 本身。 例如,如果你的团队未使用“Impediment”,则可从 Fabrikam 网站项目中删除标记为“Impediment”的 WIT。

witadmin destroywitd /collection:"http://FabrikamPrime:8080/tfs/DefaultCollection" /p:"Fabrikam Web Site" /n:"Impediment" 

当删除属于某个类别的 WIT 时,你必须更新团队项目的类别定义以反映新名称。 具体而言,在更新类别定义之前,Agile 计划工具将无法运行。

有关详细信息,请参阅导入、导出和管理工作项类型 [witadmin]导入和导出类别 [witadmin]

问:是否能更改与 WIT 关联的颜色?

**答:**可以。 在 Team Web Access 中,工作项将出现在查询结果中和 Agile 计划工具的积压工作 (backlog) 和面板页上。 若要更改与现有 WIT 关联的颜色或添加要用于新 WIT 的颜色,请编辑过程配置

针对不同工作项类型的颜色分配

问:是否能在积压工作 (backlog) 或任务板中添加或移除 WIT?

**答:**可以。 Agile 计划工具(产品积压工作 (backlog)、冲刺 (sprint) 积压工作 (backlog) 和任务板页)显示了基于用于创建团队项目的过程模板的特定 WIT。 可以添加或删除这些页上显示的 WIT。 例如,如果团队项目使用 Scrum WIT,则产品积压工作 (backlog) 项和 Bug 都将出现在积压工作 (backlog) 页上。 但是,如果你的团队项目是使用 Agile、CMMI 或其他过程模板创建的,则 Bug 不会显示在积压工作 (backlog) 或任务板上。

例如,可以从产品积压工作 (backlog) 页添加 Bug。

添加了 Bug 工作项类型的已更新面板

若要了解如何从积压工作 (backlog) 或任务板中添加或移除 WIT,请转到此处。 若要添加新的 WIT 以支持项目组合积压工作 (backlog),请转到此处

问:在修改 WIT 时,它会如何影响现有工作项?

**答:**下表总结了修改字段或 WIT 定义时对现有工作项产生的影响。

操作

对现有工作项产生的影响

从 WIT 中删除字段

已移除的字段的数据保留在数据存储中。 但是,无法添加新的数据,因为你已将其从 WIT 定义中移除。

重命名字段

重命名的字段的数据保留在数据存储中的新友好名称下。

删除字段

从数据存储中移除已删除的字段的数据。

重命名 WIT

所有数据在新名称下保持不变。

删除 WIT

永久性删除创建为已删除的 WIT 的工作项的所有数据,且无法恢复。

若要从数据存储中完全移除这些字段,请使用 witadmin deletefield 命令行工具。 请参阅管理工作项字段 [witadmin]

问:如何更改现有工作项的类型?

**答:**无法更改现有工作项的类型,但你可以复制工作项并指定新类型。 例如,可以复制现有产品积压工作 (backlog) 项并将类型更改为 Bug,如下图所示。

复制工作项并指定新类型

此外,如果你具有要进行类型更改的多个工作项,则可能需要使用 Excel 导出它们,然后重新将其添加为新类型。

问:是否能从 TFS 中删除工作项?

**答:**可以。 使用 witadmin destroywi从数据库中永久移除工作项

问:应了解有关 WIT 自定义和 TFS 升级的哪些内容?

**答:**请参见 更新升级的团队项目以访问新功能

问:如果我遇到更多问题,可向何处寻求帮助?

**答:**若要查找答案或发布问题,请访问论坛:Team Foundation Server - 项目管理和工作项

有关详细信息,请参阅指定工作项窗体控件

使用过程编辑器(可随 TFS 增强工具一起下载)来修改工作流或查看该工作流的状态。