Team Foundation Server 和 Project Server 集成的字段映射 XML 元素参考
通过自定义字段映射,可以定义应保持在 Visual Studio Team Foundation Server 2012 与 Microsoft Project Server 的哪些字段同步,并且哪些字段。更新在 Project Server 中的状态队列和在 Team Foundation。
备注
用于将 Team Foundation Server 与 Project Server 集成的字段映射不同于 Microsoft Project 的映射文件。有关后面这个文件的信息,请参见 Microsoft Project 字段映射文件。
对于承载您希望与 Project Server 同步的团队项目的每个团队项目集合,您都应维护一组字段映射。 若要检索字段映射,可从集合将字段映射下载到一个文件中。 修改文件后,可以将该文件上载到集合中,所做的更改将应用于为该集合定义的所有团队项目。 有关如何下载或上载字段映射的更多信息,请参见自定义 Project Server 和 Team Foundation Server 之间的字段映射。
主题内容
必填字段
已映射的默认字段
映射元素和特性
默认字段映射
必填字段
为了支持数据同步,必须映射以下字段。 如果已自定义用于计划工作的字段,则必须自定义字段映射以引用所使用的字段。
System.Title 必须映射到 pjTaskName。
System.AssignedTo 必须映射到 pjResourceNames。
在 Team Foundation 中用于跟踪工作开始的字段必须映射到 pjTaskStart。 默认情况下,此字段为 Microsoft.VSTS.Scheduling.StartDate。
在 Team Foundation 中用于跟踪已完成工作的字段必须映射到 pjTaskFinish。 默认情况下,此字段为 Microsoft.VSTS.Scheduling.FinishDate。
返回页首
已映射的默认字段
对于 Team Foundation 中的每个字段,可以指定两个映射。 在第一个映射中,应指定 Team Foundation 中的字段在状态队列中更新的 Project 中的字段。 在第二个映射中,应指定将更新 Team Foundation 中的字段的 Project 中的字段。 此外,还可以指定 Team Foundation 中的字段是否出现在工作项窗体中以及更新引用和镜像字段的方式。
默认情况下,还会对所有映射的 Project 字段进行镜像,这意味着这些字段的值将存储在 Team Foundation 中。
重要
在大多数配置中,由于同步过程需要默认字段映射,因此不应将它们移除。例如,不要移除默认映射,如果您的企业项目计划映射到从过程模板创建基于 (agile software development 的 Microsoft solutions framework (MSF) 或 capability maturity model integration process (CMMI) 的团队项目。
但是,因此,如果您计划映射到创建使用 Visual Studio scrum 过程模板的团队项目,则可能需要移除一些默认映射。如果项目集合只包含使用 Scrum 模板创建的团队项目,则可能会在配置这两个服务器产品时收到错误。为了得到最佳结果,请将“已完成工作” (Microsoft.VSTS.Scheduling.CompletedWork) 和“初始估计”(Microsoft.VSTS.Scheduling.OriginalEstimate) 添加到您打算映射的工作项。此外,还需要从任务类型定义中移除 <EMPTY /> 工作流语句。有关更多信息,请参见 进行映射到从 scrum 中创建的团队项目时所需更改的过程模板。
下表描述了分配给 Team Foundation 中字段的默认映射。 可以指定更新引用和镜像字段的方式。 可将 OnConflict 设置为 PSWins,以便用 Project Server 中的值覆盖 Team Foundation 中的值。 如果不指定 OnConflict 特性,则字段会保留不同的值。 有关更多信息,请查看本主题后面的字段元素和特性表。
有关镜像字段和同步过程的更多信息,请参见 了解如何管理特定字段的更新。
Team Foundation 字段 |
Project 字段 |
在工作项窗体的 Project Server 选项卡上显示字段 (displayTfsField) |
在工作项窗体的 Project Server 选项卡上显示镜像的字段 (displayTfsMirror) |
字段更新 (OnConflict) |
---|---|---|---|---|
标题 |
任务名称 |
否 |
否 |
Project Server 中的值替换 Team Foundation 中的值。 |
指派给 |
资源 |
否 |
否 |
Project Server 中的值替换 Team Foundation 中的值。 |
剩余工作 |
资源剩余工作(状态队列) 任务剩余工作 (Project Server) |
是 |
是 |
保留每个值。 |
已完成工作 |
资源实际工作(状态队列) 任务实际工作 (Project Server) |
是 |
是 |
保留每个值。 |
初始估计 |
基线工作 |
否 |
是 |
Project Server 中的值替换 Team Foundation 中的值。 |
开始日期 |
资源开始(状态队列) 任务开始 (Project Server) |
否 |
否 |
Project Server 中的值替换 Team Foundation 中的值。 |
结束日期 |
资源完成(状态队列) 任务完成 (Project Server) |
否 |
否 |
Project Server 中的值替换 Team Foundation 中的值。 |
如果将更多 Project 字段添加到字段映射中,则可在 Team Foundation 中工作项窗体的**“Project Server”**选项卡中显示这些字段。 有关此选项卡的更多信息,请参见为支持数据同步而添加的 Project Server 字段。
返回页首
映射元素和特性
使用 field 元素,可在 Team Foundation 中指定要同步的引用字段。 所有 field 元素都包含在 mappingFile、persistables 和 Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping 容器元素中。
重要
将字段从 Team Foundation Server 映射到 Project Server 时,请确保该字段与这些字段的数据类型匹配。否则,当尝试上载字段映射时,可能会出现以下错误:
索引(从零开始)必须大于或等于零,且小于参数列表的大小。
有关更多信息,请参见Data Types and Field Mapping Criteria。
以下示例演示 XML 元素的嵌套结构。 若要查看默认映射,请参见本主题后面的默认映射文件。
<mappingFile>
<persistables>
<Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping>
<field tfsName="System.Title" tfsMirrorName="Mirror.System.Title" displayTfsField="false" displayTfsMirror="false" onConflict="PSWin">
<tfsToTarget>
<target provider="ProjectServerStatusQueue" name="pjTaskName" />
</tfsToTarget>
<targetToTfs>
<target provider="ProjectServerPublished" name="pjTaskName" />
</targetToTfs>
</targetToTfs>
</field>
. . .
</Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping>
</persistables>
</mappingFile>
字段元素语法
下面的语法定义 field 元素的特性:
<field tfsName="FieldName" tfsMirrorName="FieldMirrorName" displayTfsField="true | false" displayTfsMirror=" true | false" onConflict="PSWin">
目标元素语法
下面的语法定义 target 元素的特性:
<target provider="ProviderName" name="ProjectFieldName" />
若要确定字段名称,请在串联的友好名称前加上“pj”前缀。 例如,状态管理器的字段名称是 pjStatusManager,自定义 01 的字段名称是 pjCustom01。
返回页首
字段元素和特性
下表描述了 field 元素的子元素和特性。 将 Team Foundation 字段映射到需要在状态同步过程中更新其值的 Project 资源字段。 将 Team Foundation 字段映射到其值将在发布同步过程中更新 Team Foundation Server 的 Project 任务字段。 此外,映射的字段单位必须符合预先确定的条件。 有关更多信息,请参见针对与 Team Foundation Server 的集成映射 Project Server 字段的限制。
元素 |
特性 |
描述 |
---|---|---|
field |
指定 Team Foundation 中要映射的字段以及字段的映射方式。 |
|
tfsName |
指定 Team Foundation 中要同步的字段的引用名称。 必须指定在团队项目集合中定义的字段。 通过运行 witadmin listfields 命令,可以列出集合中的所有字段。 有关更多信息,请参见管理工作项字段 [witadmin]。 |
|
tfsMirrorName |
必需。 指定在 Team Foundation Server 中存储 Project Server 字段的值时使用的引用名称。 可在引用名称前添加前缀“Mirror”。例如,可以为 System.Title 指定 Mirror.System.Title。
说明
将自动创建所指定的镜像字段。无需将镜像字段添加到工作项类型定义。
|
|
displayTfsField |
可选。 默认情况下,此特性设置为 true。 如果此特性设置为 true,则该字段会出现在 Team Foundation 中工作项窗体的“Project Server”选项卡上。 如果此特性设置为 false,则将该字段不会出现在窗体上。 默认情况下,只有“已完成工作”和“剩余工作”字段会出现在窗体上。 |
|
displayTfsMirror |
可选。 默认情况下,此特性设置为 true。 如果此特性设置为 true,则该字段会出现在 Team Foundation 中工作项窗体的“Project Server”选项卡上。 如果此特性设置为 false,则将该字段不会出现在窗体上。 |
|
onConflict |
可选。 指定同步引擎更新引用字段。 只有 PSWin 是有效值。 当此属性设置为 PSWin时,引用字段的值更新,当从 Project Server 中发布的当前值与镜像中的值不同。 如果不定义此特性,则表明应保留两组书籍。 换言之,Project 中的值可能与 Team Foundation 中的值不同。 默认情况下,Project 中的值始终会替换“标题”、“指派给”、“开始日期”和“结束日期”字段的值。 默认情况下,仅使用两组书籍维护“已完成工作”和“剩余工作”字段。 有关更多信息,请参见对包含小时数的字段的更新。 |
|
tfsToTarget |
指定 Team Foundation 将更新的 Project 中的字段的名称。 |
|
target |
指定将接收来自 Team Foundation 的更新的目标。 |
|
provider |
指定更新提供程序的名称。 对于 tfsToTarget,唯一有效的值是 ProjectServerStatusQueue。 |
|
name |
指定将使用 Team Foundation 中的值更新的 Project 字段的名称。 您可以只映射 Project Server 中的内置字段或企业自定义字段。 有关可用字段的列表,请参见Fields Available for Mapping to the Status Queue。 |
|
targetToTfs |
指定字段映射以将 Project Server 中的更新与 Team Foundation Server 同步。 |
|
target |
指定将接收来自 Project Server 的更新的目标。 |
|
provider |
指定更新提供程序的名称。 对于 targetToTfs,唯一有效的值是 ProjectServerPublished。 |
|
name |
指定将用于更新 Team Foundation 中的字段的 Project 中的字段的名称。 您可以只映射内置字段或企业自定义字段。 有关可用字段的列表,请参见Fields Available for Mapping from Project Server to Team Foundation Only。 |
|
transforms |
可选。 transform 元素的容器元素。 |
|
transform |
transformType |
指定类型的变换应用于字段。 只能仅指定 transformType 为 targetToTfs 以及数字字段类型。 只有 ClearValueIfParent 是有效值。 当同步引擎检测到一个层次结构中与 Project Server 同步的工作项之下,它执行工作和分发一个汇总可以发送到 Project Server。 但是,当 transformType 设置为 ClearValueIfParent,同步引擎清除在父工作项的工作"字段在 Team Foundation Server 避免在标准 Team Foundation Server 报表的不正确的数据。 |
返回页首
默认映射
以下代码列出了在运行 TfsAdmin ProjectServer /UploadFieldMappings 命令并指定 /useDefaultFieldMappings 选项时定义的默认字段映射。 可以将这些映射下载到文件中,然后向其中添加元素,或修改所列字段的特性。
有关为参与数据同步而添加某一类型时添加到该类型工作项中的所有字段的列表,请参见为支持数据同步而添加的 Project Server 字段。
<mappingFile>
<persistables>
<Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping>
<field tfsName="System.Title" tfsMirrorName="Mirror.System.Title" displayTfsField="false" displayTfsMirror="false" onConflict="PSWin">
<tfsToTarget>
<target provider="ProjectServerStatusQueue" name="pjTaskName" />
</tfsToTarget>
<targetToTfs>
<target provider="ProjectServerPublished" name="pjTaskName" />
</targetToTfs>
</field>
<field tfsName="System.AssignedTo" tfsMirrorName="Mirror.System.AssignedTo" displayTfsField="false" displayTfsMirror="false" onConflict="PSWin">
<tfsToTarget>
<target provider="ProjectServerStatusQueue" name="pjTaskResourceNames" />
</tfsToTarget>
<targetToTfs>
<target provider="ProjectServerPublished" name="pjTaskResourceNames" />
</targetToTfs>
</field>
<field tfsName="Microsoft.VSTS.Scheduling.CompletedWork" tfsMirrorName="Mirror.Microsoft.VSTS.Scheduling.CompletedWork" displayTfsField="true" displayTfsMirror="true">
<tfsToTarget>
<target provider="ProjectServerStatusQueue" name="pjResourceActualWork" />
</tfsToTarget>
<targetToTfs>
<target provider="ProjectServerPublished" name="pjTaskActualWork" />
<transforms>
<transform transformType="clearValueIfParent">
</transforms>
</targetToTfs>
</field>
<field tfsName="Microsoft.VSTS.Scheduling.RemainingWork" tfsMirrorName="Mirror.Microsoft.VSTS.Scheduling.RemainingWork" displayTfsField="true" displayTfsMirror="true">
<tfsToTarget>
<target provider="ProjectServerStatusQueue" name="pjResourceRemainingWork" />
</tfsToTarget>
<targetToTfs>
<target provider="ProjectServerPublished" name="pjTaskRemainingWork" />
<transforms>
<transform transformType="clearValueIfParent">
</transforms>
</targetToTfs>
</field>
<field tfsName="Microsoft.VSTS.Scheduling.OriginalEstimate" tfsMirrorName="Mirror.Microsoft.VSTS.Scheduling.OriginalEstimate" displayTfsField="false" displayTfsMirror="true" onConflict="PSWin">
<targetToTfs>
<target provider="ProjectServerPublished" name="pjTaskBaselineWork" />
</targetToTfs>
</field>
<field tfsName="Microsoft.VSTS.Scheduling.StartDate" tfsMirrorName="Mirror.Microsoft.VSTS.Scheduling.StartDate" displayTfsField="false" displayTfsMirror="false" onConflict="PSWin">
<tfsToTarget>
<target provider="ProjectServerStatusQueue" name="pjResourceStart" />
</tfsToTarget>
<targetToTfs>
<target provider="ProjectServerPublished" name="pjTaskStart" />
</targetToTfs>
</field>
<field tfsName="Microsoft.VSTS.Scheduling.FinishDate" tfsMirrorName="Mirror.Microsoft.VSTS.Scheduling.FinishDate" displayTfsField="false" displayTfsMirror="false" onConflict="PSWin">
<tfsToTarget>
<target provider="ProjectServerStatusQueue" name="pjResourceFinish" />
</tfsToTarget>
<targetToTfs>
<target provider="ProjectServerPublished" name="pjTaskFinish" />
</targetToTfs>
</field>
</Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping>
</persistables>
</mappingFile>
返回页首
请参见
参考
管理 Team Foundation Server 与 Project Server 集成的字段映射
概念
针对与 Team Foundation Server 的集成映射 Project Server 字段的限制
管理 Team Foundation Server 和 Project Server 集成