修改或添加字段以支持查询、报告和工作流

团队项目包含 100 个或更多数据字段,这些字段基于用于创建团队项目的过程模板。 每个字段均与一对名称、特性和规则关联。 可修改现有字段或添加自定义字段以支持跟踪其他数据要求。 例如,可在下拉菜单中自定义选取列表,添加规则以指定默认值或限制它可采用的值,或更改字段特性。

若要添加字段规则,添加自定义字段或更改工作项窗体上的字段标签,请编辑工作项类型 (WIT) 的 XML 定义。 若要更改字段特性或重命名字段,请使用 witadmin 命令行工具。

字段定义名称、特性和规则

自定义选取列表

选取列表是枚举值,它们出现在工作项窗体的下拉菜单中和查询编辑器的“值”列中。 用于自定义选取列表的方法因字段而异。

通用字符串或整数字段

若要修改工作项窗体中的大多数字符串或整数字段的选取列表,请编辑 WIT 定义。 例如,若要添加自定义解决方法字段和选取列表,请指定所示的 XML 代码。



自定义字段和选取列表

自定义字段的选取列表
<FIELD name="Resolution" refname="MyCompany.Resolution" type="String">    
<ALLOWEDVALUES>
   <LISTITEM value="By Design" />
   <LISTITEM value="Duplicate" />
   <LISTITEM value="External" />
   <LISTITEM value="Fixed" />
   <LISTITEM value="Not Repro" />
   <LISTITEM value="Postponed" />
   <LISTITEM value="Won’t Fix" />
</ALLOWEDVALUES>
</FIELD>

规则支持组合列表、限制列表应用于的用户以及设置列表显示在工作项窗体上的条件。 通过使用可选的 expanditems 和 filteritems 特性,规则可以控制是否展开通讯组列表以显示其单个成员或者是否对列表进行筛选。 使用全局列表最大程度地减少更新跨 WIT 或团队项目共享的列表所需的工作量。

若要了解更多信息,请参见定义选取列表定义全局列表

其选取列表通过其他方式定义的特定字段

若要修改下列字段的选取列表,请参见相应的主题:

对于具有与之关联的选取列表的所有其他字段(如活动自动化状态专业优先级以及其他字段),可以通过工作项字段的索引查找这些字段的定义。

向字段添加规则

若要添加自定义字段或将规则添加到字段,请编辑 WIT 定义。 可将规则限制为应用于特定用户或组。 大多数规则都支持 for 或 not 特性以关注规则将应用于和不应用于哪些用户或组。

例如,通过使用以下代码片段,可以实施这样的规则,即在创建完工作项后,只有管理团队的成员(定义了 TFS 组的客户)才能修改“堆栈级别”字段。

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

应用规则以完成以下操作:

完成此操作:

使用该 XML 元素:

指定工具提示。

HELPTEXT

限定字段可以包含的值。

CANNOTLOSEVALUE、EMPTY、FROZEN、NOTSAMEAS、READONLY 和 REQUIRED

复制值或指定默认值。

COPY、DEFAULT 和 SERVERDEFAULT

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

VALIDUSER、for 和 not 字段规则特性

对字符串字段强制实施模式匹配。

MATCH

基于其他字段中的值来有条件地应用规则。

WHEN、WHENNOT、WHENCHANGED 和 WHENNOTCHANGED

有关应用字段规则的更多信息,请参见所有 FIELD XML 元素引用

编辑 WIT XML 定义文件以添加规则或添加自定义字段

若要添加规则或添加自定义字段,请导出、编辑然后导入 WIT 定义文件。

用于自定义 WIT 对象的进程

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

必须将要用来跟踪数据的所有字段添加到 WIT 定义文件中。 此情况适用于自动为每个 WIT 定义的系统字段(引用名称以 System. 开头的字段)之外的所有字段。

若要添加自定义字段,请编辑 WIT 定义以在 FIELDS 部分中添加 FIELD 元素,并在 FORM 部分中添加 Control 元素。

添加自定义字段

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

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

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

    在 64 位版本的 Windows 上,将 %programfiles% 替换为 %programfiles(x86)%。 你可以免费下载团队资源管理器

  3. 导出 WIT 定义。

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

    CollectionURL 的一个示例是 http://fabrikamprime:8080/tfs/DefaultCollection。

  4. 找到 XML 文件的部分,该部分为类型定义字段且以 FIELDS 开头。

  5. 添加 FIELD 元素,该元素指定了要添加的自定义字段的名称。 你必须指定以下必需特性:友好 name、refname(引用名称)和 type。 有关详细信息,请参阅FIELD(定义)元素引用

    下面的代码指定引用名称为 FabrikamFiber.MyTeam.Requestor 的自定义字段“请求者”和默认值为“客户”的允许值的选取列表。

    <FIELD name="Requestor" refname="FabrikamFiber.MyTeam.Requestor" type="String" reportable="Dimension">
       <ALLOWEDVALUES>
          <LISTITEM value="Customer" />
          <LISTITEM value="Executive Management" />
          <LISTITEM value="Other" />
          <LISTITEM value="Support" />
          <LISTITEM value="Team" />
          <LISTITEM value="Technicians" />
          <DEFAULTVALUE value="Customer" />
        </ALLOWEDVALUES>
    </FIELD>
    

    提示

    列表中的元素始终以字母数字顺序显示,这与你在 XML 定义文件中输入元素的方式无关。

    “引用名称”(或 refname)是字段的编程名称。所有其他规则都应该引用此 refname。有关详细信息,请参阅工作项跟踪对象的命名约定

  6. 在 FORM 部分中添加 Control 元素,以便自定义字段显示在你希望其显示于的元素组的窗体中。

    例如,以下代码片段将添加“请求者”字段,该字段将显示在工作项窗体上的“原因”字段下。

    <Column PercentWidth="50">
       <Group Label="Status">
          <Column PercentWidth="100">
             <Control FieldName="System.AssignedTo" Type="FieldControl" Label="Assi&amp;gned To:" LabelPosition="Left" />
             <Control FieldName="System.State" Type="FieldControl" Label="&amp;State:" LabelPosition="Left" />
             <Control FieldName="System.Reason" Type="FieldControl" Label="Reason:" LabelPosition="Left" ReadOnly="True" />
             <Control FieldName="FabrikamFiber.MyTeam.Requestor" Type="FieldControl" Label="Requestor:" LabelPosition="Left" ReadOnly="True" />
          </Column>
       </Group>
    </Column>
    

    提示

    工作项跟踪的架构定义将以 Camel 大小写格式定义 FORM 元素的所有子元素,并以全大写格式定义所有其他元素。如果在验证类型定义文件时遇到错误,请检查元素的大小写结构。同时,根据 XML 语法规则,开始标记与结束标记的大小写结构还必须匹配。

    有关详细信息,请参阅Control XML 元素引用

  7. 导入 WIT 定义文件。

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

  8. 打开 TWA 或团队资源管理器以查看更改。 如果客户端已打开,请刷新页面。

    下图显示了现在包含新字段的产品积压工作 (backlog) 项的工作项窗体。

    已添加到类型定义和表单的自定义字段

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

更改工作项窗体上的字段标签

  1. 导出 WIT 定义文件。

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

  2. 在 FORM 和 Layout 部分中,找到要修改的字段的定义。 此示例修改**“标题”**字段的标签:

    <Column PercentWidth="70">
      <Control Type="FieldControl" FieldName="System.Title" Label="Title" LabelPosition="Left" />
    </Column>
    
  3. 更改该字段的标签,从而使处理此特定团队项目的葡萄牙分公司可在使用该工作项窗体时读取**“标题”**字段的名称。 在“标题”字段中包含标题的葡萄牙语一词 Titulo。

    <Column PercentWidth="70">
      <Control Type="FieldControl" FieldName="System.Title" Label="Title (Título):" LabelPosition="Left" />
    </Column>
    
  4. 导入 WIT 定义文件。

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

更改现有字段的特性

使用 witadmin changefield 更改现有字段的特性。 例如,以下命令将为 MyCompany.Type 定义的友好名称更改为“计算方法”。

witadmin changefield /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:MyCompany.Type /name:"Evaluation Method"

下表汇总了可使用 witadmin changefield 更改的特性。

特性

描述

数据类型

指定字段接受的数据类型。 一般情况下,一旦定义字段数据类型便无法更改。 你只能为 HTML 或 PlainText 类型的字段切换字段数据类型。

友好名称

友好名称出现在工作项查询的下拉菜单中,它在团队项目集合中定义的所有字段中必须是唯一的。 友好名称可能与工作项窗体上显示的格式标签不同。

是可索引的

可以为字段启用索引以缩短筛选字段时的查询响应时间。 默认情况下,将为以下字段编制索引:“指派给”、 “创建日期”、“更改者”、“状态”、“原因”、“区域 ID”、“迭代 ID”和“工作项类型”。

报告特性

可以更改字段在报表中的显示名称、报表引用名称和报告类型。 可以本地化报告友好名称。

报告类型确定字段的数据是被写入关系仓库数据库、同时被写入关系仓库数据库和 OLAP 多维数据集,还是在处理 OLAP 多维数据集时生成预先计算的值的和。

有关默认可报告字段的完整列表,请参见 Visual Studio ALM 的可报告字段引用。 有关 OLAP 多维数据集的详细信息,请参见Visual Studio 的 Analysis Services 多维数据集中提供的透视和度量值组

同步

可以针对与用户帐户关联的字段启用或禁用与 Active Directory 的同步。

问题解答

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

**答:**你可以添加自定义字段、自定义选取列表、添加或修改区域和迭代路径以及将规则添加到字段。 配置功能向导将更新你的团队项目,并且你将获取对最新功能的访问权限。

若要了解你可以安全进行的其他自定义和应避免哪些自定义,请参阅自定义工作跟踪体验:在你进行自定义之前,了解维护和升级的影响

问:可从何处了解已为我的团队项目定义的所有字段和字段特性?

**答:**有关在默认 TFS 过程模板中定义的字段的索引,请参见 Visual Studio ALM 的工作项字段参考

除了可为工作项字段更改的特性外,每个字段还有多个不可更改和几乎隐藏的特性。 可以使用工作项字段资源管理器工具来查找这些字段的分配。 在安装 TFS 增强工具后,你可以从过程编辑器增强工具中访问此工具。

工作项字段资源管理器

工作项字段资源管理器

有关每个特性的说明,请参阅此文章:工作项字段特性 - 可以更改的和不可更改的内容

问:如何添加支持与测试、生成和版本控制集成的字段?

**答:**多个 WIT 包含提供由自动化过程生成的信息的字段,这些过程与 Team Foundation Build、Microsoft 测试管理器和 Team Foundation 版本控制集成。 若要将这些字段之一添加到你的自定义 WIT 中,请按照本主题前面介绍的步骤操作来编辑 WIT 定义。

例如,你可以添加 Bug 的类型定义中显示“发现版本”和“集成版本”字段。 这些字段将 Bug 与发现或修复这些 Bug 的生成关联。 可以使用以下代码片段将这些字段添加到工作项类型定义中。

<FIELD name="Found In" refname="Microsoft.VSTS.Build.FoundIn" type="String" reportable="dimension">
    <HELPTEXT>Product build number (revision) in which this item was found</HELPTEXT>
</FIELD>
<FIELD name="Integration Build" refname="Microsoft.VSTS.Build.IntegrationBuild" type="String" reportable="dimension">
    <HELPTEXT>Product build number this bug was fixed in</HELPTEXT>
</FIELD>

有关详细信息,请参阅用于支持与测试、生产和版本控制的集成的字段

问:何时应使用全局列表而不是简单选取列表?

**答:**当你在多个 WIT 中或多个团队项目中使用列表时,将其作为全局列表进行维护可最大程度地降低维护要求。 此外,如果你需要在 WIT 或团队项目中对部分列表进行不同显示,则可以为选取列表的一部分定义全局列表。 请参见定义选取列表定义全局列表

问:是否存在有关修改系统字段的限制?

**答:**可以。 你无法对系统字段进行重命名,也无法将某些规则应用于系统字段。 例如,你无法复制或设置为空白字段,这些字段用于跟踪创建、更改或关闭系统使用的工作项或日期时间字段的人员。

系统字段的名称都以“System”前缀开头(例如 System.ID)。 所有系统字段是针对所有 WIT 定义的,无论你是否将其包含在 WIT 定义中。 若要了解有关每个字段的更多信息,请参见 Visual Studio ALM 的工作项字段参考

问:是否有评估规则所采用的顺序?

**答:**有,但有多个因素会影响系统评估多个规则的方式,这样一来,最终结果从一开始始终就无法完全理解。 若要获得预期行为和交互的一些思路,请参见将规则应用于工作项字段

问:我应如何命名字段以支持报告?

**答:**你可以添加字段或更改现有字段的特性来支持报告。 添加或更改字段时,应系统地命名它们,以便你可以在 Analysis Services 多维数据集中查找字段,因为这些字段按逻辑分组到各个文件夹中。 若要了解更多信息,请参见 添加或修改工作项字段以支持报告

问:是否有方法限制“指派给”字段中显示的名称的数目?

**答:**可以。 默认情况下,“指派给”字段的下拉菜单显示已获得 TFS 的访问权的所有用户。 这是默认的有效用户组。 此规则的例外情况是,在 Team Web Access 中,支持指派工作项的上下文菜单只限于该团队的成员。

应用安全限制的最有效方法是创建自定义组,你可在 Windows 或 TFS 中管理该组。

  1. 创建要使用的安全组并将帐户添加到该组。 例如,创建名为“团队参与者”的新组。 请参阅向团队项目添加用户

  2. 修改希望限制用户设置的每个工作项类型的定义文件。 将 VALIDUSER 元素添加到“指派给”字段的 FIELD 元素定义并指定 TFS 组。

    例如,下面的代码片段可添加到任务定义,以便将“指派给”字段的用户组限定为那些添加到 TFS 团队任务组中的团队成员。

    <FIELD name="Assigned To" refname="System.AssignedTo" type="String" reportable="dimension" syncnamechanges="true">
       <HELPTEXT>The person currently working on this task</HELPTEXT>
       <ALLOWEXISTINGVALUE />
       <VALIDUSER group="Team Contributors" />
    </FIELD>
    

    通过指定 ALLOWEXISTINGVALUE 元素,可以避免在成员离开团队以及不再注册为项目参与者时本会出现的验证错误。

问:如何将自定义控件添加到字段?

**答:**通过使用用于跟踪工作项的对象模型,可通过编程方式创建、更改和查找 Bug、任务和其他 WIT。 还可以创建你自己的自定义控件,以便将功能添加到工作项窗体。

例如,可以添加以下自定义控件,可通过 TFS 工作项跟踪的自定义控件 CodePlex 项目获得这些控件:

  • 允许将图像剪切并粘贴到 HTML 字段中的屏幕快照控件。

  • 允许用户承载网页并将字段值传递到该网页的 Web 浏览器控件。

  • 通过显示复选框列表来支持为一个字段输入多个值的多值控件。

问:如何更改支持 Project-TFS 集成的字段映射?

**答:**从默认 TFS 过程模板创建的团队项目包含默认的 Microsoft Project 映射文件。 如果使用 Project 计划并跟踪存储在 TFS 中的工作项,你可能需要映射其他 Project 字段或更改发布和刷新 TFS 字段的方式。 可通过自定义 Microsoft Project 映射文件来执行此操作。

若要了解如何将 Project 与 TFS 工作项结合使用,请参见使用 Project 创建积压工作 (backlog) 和任务

问:管理大量自定义字段的最佳方法是什么?

**答:**如果需要添加大量将在多个 WIT 或多个团队项目中使用的自定义字段,请使用全局工作流。 可通过使用全局工作流来维护全局字段集和选取列表,从而简化维护操作。 请参阅全局工作流 XML 元素引用

问:如何删除字段?

**答:**从特定工作项类型中删除某个字段时,不会将该字段从集合或数据库服务器中删除,即使任何 WIT 都不再引用它。 若要删除字段,请按照以下步骤操作。

  1. 从所有 WIT 定义和任何引用它的全局工作流中删除 FIELD 定义。

  2. 确认此字段未在使用中。 例如:

    witadmin listfields /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:MyCompany.CustomContact
    
    Field: MyCompany.CustomContact
    Name: Custom Contact
    Type: String
    Reportable As: dimension
    Use: Not In Use
    Indexed: False
    
  3. 删除此字段。 例如:

    witadmin deletefield /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:MyCompany.CustomContact
    
  4. 如果已删除的字段是可报告的,则重新生成数据仓库以清除旧字段及其值

有关详细信息,请参阅管理工作项字段 [witadmin]

问:还可以自定义哪些区域?

**答:**请参见 可在 Visual Studio TFS 中配置并自定义的内容的端到端视图

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

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