TFS-Project Server 集成的字段映射 XML 元素引用
通过自定义字段映射,可以定义 Visual Studio Team Foundation Server (TFS) 和 Microsoft Project Server 中应保持同步的字段,以及 Project Server 和 Team Foundation 的状态队列中应更新的字段。
备注
适用于 TFS 与 Project Server 的集成的字段映射与适用于 Microsoft Project 的映射文件不同。有关后面这个文件的信息,请参阅 自定义 Microsoft Project 字段映射文件。
对于承载你希望与 Project Server 同步的团队项目的每个团队项目集合,你都应保留一组字段映射。 若要检索字段映射,可从集合将字段映射下载到某个文件。 修改文件后,可以将该文件上载到集合中,所做的更改将应用于为该集合定义的所有团队项目。 有关如何下载或上载字段映射的详细信息,请参阅自定义 TFS 与 Project Server 之间的字段映射。
主题内容
必填字段
已映射的默认字段
映射元素和特性
默认字段映射
必填字段
为了支持数据同步,必须映射以下字段。 如果已自定义用于计划工作的字段,则必须自定义字段映射以引用所使用的字段。
System.Title 必须映射到 pjTaskName。
System.AssignedTo 必须映射到 pjResourceNames。
在 Team Foundation 中用于跟踪工作开始的字段必须映射到 pjTaskStart。 默认情况下,此字段为 Microsoft.VSTS.Scheduling.StartDate。
在 Team Foundation 中用于跟踪已完成工作的字段必须映射到 pjTaskFinish。 默认情况下,此字段为 Microsoft.VSTS.Scheduling.FinishDate。
已映射的默认字段
对于每个 TFS 字段,可以指定两个映射。 在第一个映射中,应指定 TFS 中的字段在状态队列中更新的 Project 中的字段。 在第二个映射中,应指定将更新 TFS 中的字段的 Project 中的字段。 此外,还可以指定 TFS 字段是否显示在工作项窗体中以及更新引用和镜像字段的方式。
默认情况下,还会对所有映射的 Project 字段进行镜像,这意味着这些字段的值将存储在 TFS 中。
重要
在大多数配置中,由于同步过程需要默认字段映射,因此不应将它们删除。例如,如果企业项目计划映射到采用基于 Microsoft Solutions Framework (MSF) Agile Software Development 或 Capability Maturity Model Integration (CMMI) Process Improvement 的过程模板创建的团队项目,则不要删除默认映射。
但是,如果你的计划映射到使用 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”**选项卡中显示这些字段。 有关此选项卡的详细信息,请参阅已添加到 TFS 以支持数据同步的 Project Server 字段。
映射元素和特性
使用 field 元素,可在 Team Foundation 中指定要同步的引用字段。 所有 field 元素都包含在 mappingFile、persistables 和 Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping 容器元素中。
重要
将字段从 TFS 映射到 Project Server 时,请确保该字段与这些字段的数据类型匹配。否则,当尝试上载字段映射时,可能会出现以下错误:
索引(从零开始)必须大于或等于零,且小于参数列表的大小。
以下示例演示 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 任务字段。 此外,映射的字段单位必须符合预先确定的条件。 有关详细信息,请参阅对在 TFS-Project 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 中的值始终会替换“标题”、“指派给”、“开始日期”和“结束日期”字段的值。 默认情况下,仅使用两组书籍保留“已完成工作”和“剩余工作”字段。 有关详细信息,请参阅Updates to Fields that Contain Hours。 |
|
tfsToTarget |
指定 Team Foundation 将更新的 Project 中的字段的名称。 |
|
target |
指定将接收来自 Team Foundation 的更新的目标。 |
|
provider |
指定更新提供程序的名称。 对于 tfsToTarget,唯一有效的值是 ProjectServerStatusQueue。 |
|
name |
指定将使用 Team Foundation 中的值更新的 Project 字段的名称。 你可以只映射 Project Server 中的内置字段或企业自定义字段。 有关可用字段的列表,请参阅对在 TFS-Project Server 集成中映射 Project Server 字段的限制。 |
|
targetToTfs |
指定字段映射以将 Project Server 中的更新与 Team Foundation Server 同步。 |
|
target |
指定将接收来自 Project Server 的更新的目标。 |
|
provider |
指定更新提供程序的名称。 对于 targetToTfs,唯一有效的值是 ProjectServerPublished。 |
|
name |
指定将用于更新 Team Foundation 中的字段的 Project 中的字段的名称。 你可以只映射内置字段或企业自定义字段。 有关可用字段的列表,请参阅对在 TFS-Project Server 集成中映射 Project Server 字段的限制。 |
|
transforms |
可选。 transform 元素的容器元素。 |
|
transform |
transformType |
指定要应用于字段的转换类型。 你只可以为 targetToTfs 指定 transformType,并且仅适用于数值字段类型。 唯一有效的值是 ClearValueIfParent。 当同步引擎在与 Project Server 同步的工作项下检测到层次结构时,它将为工作和分配执行汇总以发送到 Project Server。 但是,当 transformType 设置为 ClearValueIfParent 时,同步引擎将清除 Team Foundation Server 中的父工作项上的工作字段,以避免标准 Team Foundation Server 报告中的错误数据。 |
默认映射
以下代码列出了在运行 TfsAdmin ProjectServer /UploadFieldMappings 命令并指定 /useDefaultFieldMappings 选项时定义的默认字段映射。 可以将这些映射下载到文件中,然后向其中添加元素,或修改所列字段的特性。
有关为参与数据同步而添加某一类型工作项时添加到该类型工作项中的所有字段的列表,请参阅已添加到 TFS 以支持数据同步的 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>
请参见
参考
概念
对在 TFS-Project Server 集成中映射 Project Server 字段的限制
已添加到 TFS 以支持数据同步的 Project Server 字段
管理 Team Foundation Server 和 Project Server 的集成