自定义 Project Server 和 Team Foundation Server 之间的字段映射

若要同步企业项目计划与团队项目之间的数据,必须关联。Visual Studio Team Foundation Server 2012 的工作项字段与 Microsoft Project Server 的字段。 您可以添加字段,并通过自定义字段映射来指定字段的同步方式。 可以映射 Project 中的内置字段和自定义字段。 例如,如果将存储相应类型数据的字段添加到映射中,则可共享与时间表无关的数据(如成本中心、团队名称或运行状况)。

对于承载您希望与 Project Server 同步的团队项目的每个团队项目集合,您都应维护一组字段映射。 必须为已映射到 Project Web Access 或 Project Web App (PWA) 实例的每个团队项目集合定义字段映射。 可以上载默认映射,或自定义映射文件并将其上载。 若要上载默认映射,请参见本主题后面的上载映射。

警告

Team Foundation Server (tfs) 和 project server 集成的映射。Microsoft Project的映射文件是不同的。有关更多信息,请参见Microsoft Project 字段映射文件

如下图所示,可通过五个步骤来自定义映射:

在 Team Foundation Server 和 Project Server 之间自定义字段映射

用于自定义 PS-TFS 字段映射的工作流

重要

可以根据需要以任意频率更新映射文件。将为参与数据同步的每个类型的工作项更新“Project Server”选项卡上显示的字段。不得手动更改“Project Server”选项卡的定义。有关更多信息,请参见本主题后面的自定义“Project Server”选项卡。

主题内容

  • 默认映射

  • 确定要映射的附加字段

  • 将映射下载到文件

  • 更新映射

  • 上载映射

  • (可选)自定义“Project Server”选项卡

备注

有关视频的演示,请参见 Microsoft 网站上的以下页面:Team Foundation server 与 project server 集成的托管字段映射.

需要的权限

若要完成本主题中的过程,必须将**“管理 Project Server 集成”权限设置为“允许”。 此外,还必须向 Team Foundation Server 的服务帐户授予“管理 Project Server 集成”**权限。 有关更多信息,请参见分配权限以支持 Project Server 和 Team Foundation Server 集成

默认映射

映射确定用户在 Team Foundation 或 Project Server 中更新信息时对哪些字段进行同步。 下面每个同步类型都有自己的一组映射:

  • 对于发布同步,使用 Project Server 中的数据更新 Team Foundation 中的数据。 可使用 targetToTfs 元素指定 Project Server 中用于更新 Team Foundation 中的字段的字段。

  • 对于状态同步,Team Foundation 中的数据将会提交到 Project Server 中的状态队列。 可使用 tfsToTarget 元素指定用于更新 Project Server 中的状态队列字段的字段。

有关这两种同步的更多信息,请参见 Team Foundation Server 与 Project Server 集成的同步过程概述

下表列出了在 Team Foundation 与 Project Server 之间映射的默认字段集。 下表还指明工作项的哪些类型根据该默认值的字段处理 TFS 提供的模板。 您不应修改这些映射,如果映射到从过程模板创建基于 agile software development 或能力成熟度模型集成 (CMMI) 过程改进的团队项目。 如果映射到从 scrum 中创建的团队项目过程模板,则需要进行一些修改,进行映射到从 scrum 中创建的团队项目时所需更改的过程模板 本主题后面介绍。

有关映射和同步过程的更多信息,请参见Team Foundation Server 和 Project Server 集成的字段映射 XML 元素参考

Team Foundation 字段

Project Server 字段

状态队列字段

工作项类型敏捷

工作项类型 CMMI

工作项类型 scrum

标题

任务名称

标题

全部

全部

全部

指派给

资源

资源

全部

全部

全部

已完成工作

任务实际工作

资源实际工作

任务

任务

剩余工作

任务剩余工作

资源剩余工作

任务

任务

任务

初始估计

基线工作

  

任务

Bug、更改请求、问题、要求、风险和任务

开始日期

任务开始

资源开始

任务和用户情景

任务和要求

完成日期

任务完成

资源完成

任务和用户情景

任务和要求

返回页首

Gg412658.collapse_all(zh-cn,VS.110).gif进行映射到从 scrum 中创建的团队项目时所需更改的过程模板

必须进行启用从或 scrum 创建的团队项目的数据流 2.0 的两个更改或 scrum 1.0 过程模板。 必须将"已完成工作"和"初始估计"字段添加到任务工作项类型,因此,您必须移除要求"剩余工作"字段为空元素,当团队成员将状态到 执行已移除时。

更新 scrum 任务类型定义

  1. 打开 Visual Studio 或团队资源管理器安装的命令提示符窗口并 enter:

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

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

  2. 若要导出任务的类型定义,键入以下命令,将您的数据替换为显示此处的参数,其中 CollectionURL 指定团队项目集合的 URL,ProjectName 指定在集合中定义的团队项目的名称,并且,“DirectoryPath\FileName.xml”指定名称和位置以文件中导出。 然后选择 Enter

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

  4. 在 FIELDS 定义节中,请在剩余工作的元素之前将此代码段:

    <FIELD name="Completed Work" refname="Microsoft.VSTS.Scheduling.CompletedWork" type="Double" reportable="measure" formula="sum">
       <HELPTEXT>The number of units of work that have been spent on this task</HELPTEXT>
    </FIELD>
    <FIELD name="Original Estimate" refname="Microsoft.VSTS.Scheduling.OriginalEstimate" type="Double" reportable="measure" formula="sum">
       <HELPTEXT>Initial value for Remaining Work - set once, when work begins. </HELPTEXT>
    </FIELD>
    
  5. 在 <WORKFLOW> 节中,从 <STATE value="Done"> 和 <STATE value="Removed"> 定义中移除下面的代码段:

    <FIELD refname="Microsoft.VSTS.Scheduling.RemainingWork">
       <EMPTY />
    </FIELD>
    
  6. 在 <FORM> 节中,添加以下 Control 元素:

    <Control FieldName="Microsoft.VSTS.Scheduling.OriginalEstimate" Type="FieldControl" Label="Original Estimate:" LabelPosition="Left" />
    <Control FieldName="Microsoft.VSTS.Scheduling.CompletedWork" Type="FieldControl" Label="Completed:" LabelPosition="Left" />
    
  7. 保存并关闭文件。

  8. 导入文件,将您的数据替换为显示的参数。

    witadmin importwitd /collection: /p:"ProjectName" /f:"DirectoryPath\FileName.xml"
    
  9. 刷新团队项目或工作项页验证更改。

有关更多信息,请参见从现有项目导出和导入工作项类型定义工作项字段设计和自定义工作项窗体

返回页首

确定要映射的附加字段

为您要同步的默认字段之外的每个字段确定以下信息:

  • Team Foundation 中字段的引用名称。 如果要将 Project Server 中的字段与必须在 Team Foundation 中创建的字段同步,请首先在正在同步的每种工作项中创建该字段。 有关更多信息,请参见工作项字段参考 (Visual Studio ALM)定义工作项字段

  • Project Server 中字段的名称,该字段将更新 Team Foundation 中的字段。 有关可用字段的列表,请参见针对与 Team Foundation Server 的集成映射 Project Server 字段的限制

  • 要在 Project Server 中更新的字段的名称以及 Project Server 中将更新 Team Foundation Server 中镜像字段的字段的名称将进行更新。

  • 是否在工作项窗体上显示字段。 对于要显示在工作项窗体上的字段,可将 displayTfsField 特性的值设置为 true。 可将工作项窗体的 displayTfsMirror 特性的值设置为 true。

  • 是通过允许 Team Foundation 中字段的值覆盖 Project Server 中字段的值来解决数据冲突,还是保留两个值。 此决定确定了 onConflict 特性的值。 设置了 onConflict=”PsWins” 时,Project Server 中的字段值会覆盖 Team Foundation 中的字段值。 有关更多信息,请参见Field Elements and Attributes

  • 为了支持 Project Server 中的选取列表或自定义查找表,必须定义的其他值。

返回页首

Gg412658.collapse_all(zh-cn,VS.110).gif有关可映射的数据的限制

确定要映射的字段后,请注意以下限制:

  • 可将仅任务级信息(pjTask* 字段)从 Project Server 发送至 Team Foundation Server。

  • 可以将仅资源级信息(pjResource* 字段)从 Team Foundation Server 发送到 Project Server 的状态队列。

  • 只有“标题”字段既可发送到 Team Foundation Server 又可发送到状态队列。

  • 对于“指派给”、“剩余工时”和“已完成工作”字段,自动计算汇总。 无法映射其他字段或为其计算汇总。 有关更多信息,请参见在映射到团队项目的企业项目中使用资源汇总

  • 必须确保映射的每个字段的数据类型或单位符合标准和自定义企业字段的字段映射标准。 有关更多信息,请参见针对与 Team Foundation Server 的集成映射 Project Server 字段的限制中的“数据类型和字段映射标准”。

  • 您可以映射与 Team Foundation 中的选取列表关联的字段。 但是,必须在 Project Server 中创建查找表来匹配选取列表。 无法自动同步选取列表与查找表。

有关更多信息,请参见针对与 Team Foundation Server 的集成映射 Project Server 字段的限制

返回页首

Gg412658.collapse_all(zh-cn,VS.110).gif示例:映射要在 Project 中显示的团队名称

在下面的示例中,Team Foundation的自定义字符串字段,MyCompany.MyOrg.DevTeamName,映射到企业自定义文本字段在 Project Server,My Company 团队名称。 可以使用此示例在 Project Professional 中显示与任务相关联的团队名称。

<field tfsName="MyCompany.MyOrg.DevTeamName" tfsMirrorName="Mirror.MyCompany.MyOrg.DevTeamName" displayTfsField="false" displayTfsMirror="false" onConflict="DoNothing">
   <tfsToTarget>
   <target provider="ProjectServerStatusQueue" name=" My Company Team Name" />
   </tfsToTarget>
   <targetToTfs>
      <target provider="ProjectServerPublished" name=" My Company Team Name" />
   </targetToTfs>
</field>

这两个字段都不会出现在工作项窗体上。 而且,如果值不匹配,则每个字段会保留自己的值。

返回页首

Gg412658.collapse_all(zh-cn,VS.110).gif示例:在 Project 中显示区域和迭代路径

可以映射 Team Foundation 中的**“区域”(System.AreaPath) 和“迭代”**(System.IterationPath) 字段,以在项目计划中显示它们。 由于这些树路径字段需要经常更新,因此应将它们作为 Project 中的文本字段进行映射。 使用这些字段的项目经理必须手动输入完整的区域路径或迭代路径。

重要

当前实施的 Team Foundation Server 和 Project Server 集成不支持自动同步为在这两个服务器产品之间映射的字段定义的允许值列表、选取列表、全局列表或树路径列表。最好在项目计划中手动输入与 Team Foundation 中的条目匹配的条目。如果指定了无效条目,当您发布计划时会显示一个验证对话框。

要将“区域”和“迭代”字段添加到项目计划,请执行以下操作:

  1. 将两个自定义企业字段添加到 Project Server,并将其标记为**“区域(TFS)”“迭代(TFS)”**。

    有关更多信息,请参见 Microsoft 网站上的以下页面:创建查找表和企业自定义字段

  2. 从定义团队项目的团队项目集合中导出字段映射。

    有关更多信息,请参见本主题后面的将映射下载到文件。

  3. 向文件中添加以下代码:

    <field tfsName="System.AreaPath" tfsMirrorName="Mirror.System.AreaPath" displayTfsField="true" displayTfsMirror="true">
            <tfsToTarget>
              <target provider="ProjectServerStatusQueue" name="Area (TFS)" />
            </tfsToTarget>
            <targetToTfs>
              <target provider="ProjectServerPublished" name="Area (TFS)" />
            </targetToTfs>
          </field>
          <field tfsName="System.IterationPath" tfsMirrorName="Mirror.System.IterationPath" displayTfsField="true" displayTfsMirror="true">
            <tfsToTarget>
              <target provider="ProjectServerStatusQueue" name="Iteration (TFS)" />
            </tfsToTarget>
            <targetToTfs>
              <target provider="ProjectServerPublished" name="Iteration (TFS)" />
            </targetToTfs>
          </field>
    
  4. 导入更新的字段映射文件,如本主题后面的上载映射中所述。

  5. 将项目计划与 Project Server 同步。

  6. 将两个新的字段列(“区域(TFS)”和“迭代(TFS)”)添加到您的项目计划

**“区域”“迭代”**字段的更改(在 Team Foundation 中)将与项目计划中的这些字段同步。 另外,可在项目中更新这些字段,并将您的更改发布到 Team Foundation(如果指定了在 Team Foundation 中定义的值)。

返回页首

将映射下载到文件

备注

只能从已向其上载映射的团队项目集合下载映射。如果要将默认映射下载到文件,则必须如本主题后面的上载默认映射中所述,先上载默认映射。或者,可以复制默认映射的内容。有关更多信息,请参见Default Field Mappings

将映射下载到文件

  1. 若要运行 TfsAdmin 命令行工具,请打开 Visual Studio 或 团队资源管理器 安装的命令提示符窗口并 enter:

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

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

  2. 键入以下命令,然后按 enter。

    TfsAdmin ProjectServer /DownloadFieldMappings /collection:tpcUrl /filePath:MappingFile 
    

    将 tpcUrl 替换为团队项目集合的统一资源定位器 (URL),将 MappingFile 替换为将要自定义的文件的路径和名称。

  3. 请等待,直到出现以下消息:

    正在将 MappingFile 下载到团队项目集合 tpcUrl。

    您已将字段映射文件 MappingFile 成功下载到团队项目集合 tpcUrl。

返回页首

更新映射

对于要添加到映射文件的每个字段,请指定 field 元素及其子元素和特性。 有关更多信息,请参见Team Foundation Server 和 Project Server 集成的字段映射 XML 元素参考

返回页首

上载映射

可使用 UploadFieldMappings 命令来上载映射。 可使用 /usedefaultfieldmapping 选项上载默认映射。 否则,必须指定包含映射元素的文件。

上载默认映射

  1. 在命令提示符处键入下面的命令,然后按 Enter。

    TfsAdmin ProjectServer /UploadFieldMappings /collection:tpcUrl /usedefaultfieldmappings
    

    将 tpcUrl 替换为团队项目集合的 URL。

  2. 请等待,直到出现以下消息:

    正在将默认字段映射上载到 CollectionUri。

    您已将字段映射成功上载到集合 CollectionUri。

从文件上载映射

  1. 在命令提示符处键入下面的命令,然后按 Enter。

    TfsAdmin ProjectServer /UploadFieldMappings /collection:tpcUrl /filePath:MappingFile /force
    

    将 tpcUrl 替换为团队项目集合的 URL,将 MappingFile 替换为自定义映射文件的路径和名称。 如果要更新现有映射,请指定 /force

  2. 请等待,直到出现以下消息:

    正在将 MappingFile 上载到团队项目集合 tpcUrl。

    您已将字段映射文件 MappingFile 成功上载到团队项目集合 tpcUrl。

返回页首

自定义“Project Server”选项卡

在将企业项目计划与团队项目关联时,会将“Project Server”选项卡添加到工作项窗体,如下图所示。 该选项卡只会添加到您指定要参与数据同步的工作项类型中。 可将要显示在窗体上的字段的 displayTfsField 或 displayTfsMirror 特性设置为 true,以自定义此选项卡。

“Project Server”选项卡

Project Server 选项卡的默认字段

重要

为团队项目集合定义的字段映射将确定在“Project Server”选项卡上显示的字段。在将此选项卡添加到团队项目的某个工作项类型后,可通过修改集合的字段映射来更新它。如果通过将字段添加到“Project Server”选项卡或更改字段在窗体上的位置来手动自定义工作项窗体,则此选项卡不会使用您将对字段映射进行的更改自动更新。如果出现这种情况,您可以手动修改此选项卡。有关更多信息,请参见向工作项类型的定义添加的 XML 元素

有关**“Project Server”**选项卡上显示的每个默认字段的更多信息,请参见为支持数据同步而添加的 Project Server 字段

返回页首

请参见

任务

配置 Team Foundation Server 与 Project Server 的集成

概念

指定可以同步的工作项类型

管理 Team Foundation Server 和 Project Server 集成