自定义 TFS 与 Project Server 之间的字段映射
若要在企业项目计划与团队项目之间同步数据,必须将 Visual Studio Team Foundation Server (TFS) 中的工作项字段与 Microsoft Project Server 中的字段进行关联。 你可以添加字段,并通过自定义字段映射来指定字段的同步方式。 可以映射 Project 中的内置字段和自定义字段。 例如,如果将存储相应类型数据的字段添加到映射中,则可共享与时间表无关的数据(如成本中心、团队名称或运行状况)。
对于承载你希望与 Project Server 同步的团队项目的每个团队项目集合,你都应保留一组字段映射。 必须为已映射到 Project Web Access 或 Project Web App (PWA) 实例的每个团队项目集合定义字段映射。 可以上载默认映射,或自定义映射文件并将其上载。 若要上载默认映射,请参阅本主题后面的上载映射。
备注
TFS 与 Project Server 的集成的映射不同于 Microsoft Project 的映射文件。有关详细信息,请参阅自定义 Microsoft Project 字段映射文件。
如下图所示,可通过五个步骤来自定义映射:
在 Team Foundation Server 和 Project Server 之间自定义字段映射
备注
可以根据需要以任意频率更新映射文件。将为参与数据同步的每个类型的工作项更新“Project Server”选项卡上显示的字段。不得手动更改“Project Server”选项卡的定义。有关详细信息,请参阅本主题后面的自定义“Project Server”选项卡。
主题内容
默认映射
确定要映射的附加字段
将映射下载到文件
更新映射
上载映射
(可选)自定义“Project Server”选项卡
备注
有关演示视频,请参阅 Microsoft 网站上的以下页面:管理 Team Foundation Server 和 Project Server 的集成的字段映射。
要求
若要完成本主题中的过程,必须将**“管理 Project Server 集成”权限设置为“允许”。 此外,还必须向 Team Foundation Server 的服务帐户授予“管理 Project Server 集成”**权限。 有关详细信息,请参阅分配权限以支持 TFS-Project Server 集成。
默认映射
映射确定用户在 Team Foundation 或 Project Server 中更新信息时对哪些字段进行同步。 下面每个同步类型都有自己的一组映射:
对于发布同步,使用 Project Server 中的数据更新 Team Foundation 中的数据。 可使用 targetToTfs 元素指定 Project Server 中用于更新 Team Foundation 中的字段的字段。
对于状态同步,Team Foundation 中的数据将会提交到 Project Server 中的状态队列。 可使用 tfsToTarget 元素指定用于更新 Project Server 中的状态队列字段的字段。
有关这两种同步的详细信息,请参阅TFS-Project Server 集成的同步过程概述。
下表列出了在 Team Foundation 与 Project Server 之间映射的默认字段集。 此表还指示了基于 TFS 所提供的默认过程模板使用这些字段的工作项类型。 如果映射到从基于 Agile Software Development 或 Capability Maturity Model Integration (CMMI) Process Improvement 的过程模板创建的团队项目,则不应修改这些映射。 如果映射到从 Scrum 过程模板创建的团队项目,你将需要按照本主题后面的映射到从 Scrum 过程模板创建的团队项目时所需的更改所述进行一些修改。
有关映射和同步过程的详细信息,请参阅TFS-Project Server 集成的字段映射 XML 元素引用。
Team Foundation 字段 |
Project Server 字段 |
状态队列字段 |
Agile 中的工作项类型 |
CMMI 中的工作项类型 |
Scrum 中的工作项类型 |
---|---|---|---|---|---|
标题 |
任务名称 |
标题 |
全部 |
全部 |
全部 |
指派给 |
资源 |
资源 |
全部 |
全部 |
全部 |
已完成工作 |
任务实际工作 |
资源实际工作 |
任务 |
任务 |
无 |
剩余工作 |
任务剩余工作 |
资源剩余工作 |
任务 |
任务 |
任务 |
初始估计 |
基线工作 |
|
任务 |
Bug、更改请求、问题、要求、风险和任务 |
无 |
开始日期 |
任务开始 |
资源开始 |
任务和用户情景 |
任务和要求 |
无 |
完成日期 |
任务完成 |
资源完成 |
任务和用户情景 |
任务和要求 |
无 |
映射到从 Scrum 过程模板创建的团队项目时需要作出的更改
若要启用从 Microsoft Visual Studio Scrum 过程模板创建的团队项目中的数据流,你必须作出以下两个更改。 你必须将“已完成工作”和“初始估计”字段添加到任务工作项类型,而且必须删除团队成员将状态更改为**“已完成”或“已删除”**后需要“剩余工作”字段为空的元素。
更新 Scrum 任务类型定义
打开已安装 Visual Studio 或团队资源管理器的命令提示符窗口,然后输入:
cd %programfiles(x86)%\Microsoft Visual Studio 12.0\Common7\IDE
在 32 位版本的 Windows 上,将 %programfiles(x86)% 替换为 %programfiles%。
要导出任务的类型定义,请键入以下命令,用你的数据替换此处显示的参数,其中 CollectionURL 指定团队项目集合的 URL,ProjectName 指定集合内定义的团队项目的名称,而“DirectoryPath\FileName.xml”指定要导出的文件的名称和位置。 然后选择**“输入”**。
witadmin exportwitd /collection: /p:"ProjectName" /n:"Task" /f:"DirectoryPath\FileName.xml"
在文本编辑器或 Visual Studio 中,打开你导出的文件。
在 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>
在 <WORKFLOW> 部分中,从 <STATE value="Done"> 和 <STATE value="Removed"> 定义中删除以下代码段:
<FIELD refname="Microsoft.VSTS.Scheduling.RemainingWork"> <EMPTY /> </FIELD>
在 <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" />
保存并关闭文件。
导入该文件,用你的数据替换此处显示的参数。
witadmin importwitd /collection: /p:"ProjectName" /f:"DirectoryPath\FileName.xml"
刷新团队项目或工作项页以验证更改。
有关详细信息,请参阅导出和导入工作项类型 [重定向]、定义工作项字段和设计和自定义工作项窗体 [重定向]。
确定要映射的附加字段
为你要同步的默认字段之外的每个字段确定以下信息:
Team Foundation 中字段的引用名称。 如果要将 Project Server 中的字段与必须在 Team Foundation 中创建的字段同步,请首先在正在同步的每种工作项中创建该字段。 有关详细信息,请参阅Visual Studio ALM 的工作项字段参考和定义工作项字段。
Project Server 中字段的名称,该字段将更新 Team Foundation 中的字段。 有关可用字段的列表,请参阅对在 TFS-Project 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 中的字段值。 有关详细信息,请参阅字段元素和属性。
为了支持 Project Server 中的选取列表或自定义查找表,必须定义的其他值。
有关可映射的数据的限制
确定要映射的字段后,请注意以下限制:
可仅将任务级信息(pjTask* 字段)从 Project Server 发送至 Team Foundation Server。
可以仅将资源级信息(pjResource* 字段)从 Team Foundation Server 发送到 Project Server 的状态队列。
只有“标题”字段既可发送到 Team Foundation Server 又可发送到状态队列。
对于“指派给”、“已完成工作”和“剩余工作”字段,将自动计算汇总。 无法映射其他字段或为其计算汇总。 有关详细信息,请参阅在映射到团队项目的企业项目中使用资源汇总。
必须确保映射的每个字段的数据类型或单位符合标准和自定义企业字段的字段映射标准。 有关详细信息,请参阅对在 TFS-Project Server 集成中映射 Project Server 字段的限制中的“数据类型和字段映射条件”。
你可以映射与 Team Foundation 中的选取列表关联的字段。 但是,必须在 Project Server 中创建查找表来匹配选取列表。 无法自动同步选取列表与查找表。
有关详细信息,请参阅对在 TFS-Project Server 集成中映射 Project Server 字段的限制。
示例:映射要在 Project 中显示的团队名称
在下列示例中,Team Foundation 中的自定义字符串字段 MyCompany.MyOrg.DevTeamName 映射至 Project Server 中的企业自定义文本字段 My Company Team Name。 可以使用此示例在 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>
这两个字段都不会出现在工作项窗体上。 而且,如果值不匹配,则每个字段会保留自己的值。
返回页首
示例:在 Project 中显示区域和迭代路径
可以映射 Team Foundation 中的**“区域”(System.AreaPath) 和“迭代”**(System.IterationPath) 字段,以在项目计划中显示它们。 由于这些树路径字段需要经常更改,因此应将它们作为 Project 中的文本字段进行映射。 使用这些字段的项目经理必须手动输入完整的区域路径或迭代路径。
重要
当前实施的 Team Foundation Server 和 Project Server 集成不支持自动同步为在这两个服务器产品之间映射的字段定义的允许值列表、选取列表、全局列表或树路径列表。最好在项目计划中手动输入与 Team Foundation 中的条目匹配的条目。如果指定了无效条目,当你发布计划时会显示一个验证对话框。
若要将“区域”和“迭代”字段添加到项目计划,请执行以下操作:
将两个自定义企业字段添加到 Project Server,并将其标记为**“区域 (TFS)”和“迭代 (TFS)”**。
有关详细信息,请参阅 Microsoft 网站上的以下页面:创建查找表和企业自定义字段。
从定义团队项目的团队项目集合中导出字段映射。
有关详细信息,请参阅本主题后面的将映射下载到文件。
向文件中添加以下代码:
<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>
导入更新的字段映射文件,如本主题后面的上载映射中所述。
将项目计划与 Project Server 同步。
将两个新的字段列(“区域 (TFS)”和“迭代 (TFS)”)添加到你的项目计划
**“区域”和“迭代”**字段的更改(在 Team Foundation 中)将与项目计划中的这些字段同步。 另外,可在 Project 中更新这些字段,并将你的更改发布到 Team Foundation(如果指定了在 Team Foundation 中定义的值)。
返回页首
将映射下载到文件
备注
只能从已向其上载映射的团队项目集合下载映射。如果要将默认映射下载到文件,则必须如本主题后面的上载默认映射中所述,先上载默认映射。或者,可以复制默认映射的内容。有关详细信息,请参阅TFS-Project Server 集成的字段映射 XML 元素引用。
将映射下载到文件
若要运行 TfsAdmin 命令行工具,请在安装了 Visual Studio 或 团队资源管理器 的情况下打开“命令提示符”窗口,然后输入:
cd %programfiles%\Microsoft Visual Studio 11.0\Common7\IDE
在 64 位版本的 Windows 上,将 %programfiles% 替换为 %programfiles(x86)%.。
键入以下命令,然后选择 Enter。
TfsAdmin ProjectServer /DownloadFieldMappings /collection:tpcUrl /filePath:MappingFile
将 tpcUrl 替换为团队项目集合的统一资源定位器 (URL),将 MappingFile 替换为将要自定义的文件的路径和名称。
请等待,直到出现以下消息:
正在将 MappingFile 下载到团队项目集合 tpcUrl。
你已将字段映射文件 MappingFile 成功下载到团队项目集合 tpcUrl。
更新映射
对于要添加到映射文件的每个字段,请指定 field 元素及其子元素和特性。 有关详细信息,请参阅TFS-Project Server 集成的字段映射 XML 元素引用。
上载映射
可使用 UploadFieldMappings 命令来上载映射。 可使用 /usedefaultfieldmapping 选项上载默认映射。 否则,必须指定包含映射元素的文件。
上载默认映射
在命令提示符处键入下面的命令,然后选择 Enter。
TfsAdmin ProjectServer /UploadFieldMappings /collection:tpcUrl /usedefaultfieldmappings
将 tpcUrl 替换为团队项目集合的 URL。
请等待,直到出现以下消息:
正在将默认字段映射上载到 CollectionUri。
你已将字段映射成功上载到集合 CollectionUri。
从文件上载映射
在命令提示符处键入下面的命令,然后选择 Enter。
TfsAdmin ProjectServer /UploadFieldMappings /collection:tpcUrl /filePath:MappingFile /force
将 tpcUrl 替换为团队项目集合的 URL,将 MappingFile 替换为自定义映射文件的路径和名称。 如果要更新现有映射,请指定 /force。
请等待,直到出现以下消息:
正在将 MappingFile 上载到团队项目集合 tpcUrl。
你已将字段映射文件 MappingFile 成功上载到团队项目集合 tpcUrl。
自定义“Project Server”选项卡
在将企业项目计划与团队项目关联时,会将“Project Server”选项卡添加到工作项窗体,如下图所示。 该选项卡只会添加到你指定要参与数据同步的工作项类型中。 可将要显示在窗体上的字段的 displayTfsField 或 displayTfsMirror 特性设置为 true,以自定义此选项卡。
“Project Server”选项卡
重要
为团队项目集合定义的字段映射将确定在“Project Server”选项卡上显示的字段。在将此选项卡添加到团队项目的某个工作项类型后,可通过修改集合的字段映射来更新它。如果通过将字段添加到“Project Server”选项卡或更改字段在窗体上的位置来手动自定义工作项窗体,则此选项卡不会使用你将对字段映射进行的更改来进行自动更新。如果出现这种情况,你可以手动修改此选项卡。有关详细信息,请参阅向工作项类型的定义添加的 XML 元素。
有关**“Project Server”**选项卡上显示的每个默认字段的详细信息,请参阅已添加到 TFS 以支持数据同步的 Project Server 字段。