如果一个或多个字段未按照预期在 Visual Studio Team Foundation Server 和 Microsoft Project Server 之间同步,请查看本主题。 受影响的字段的数据类型、OnConflict 字段映射特性以及任务层次结构会影响同步引擎更新特定字段的方式。 如果项目经理拒绝一个或多个提交更新或者如果未发布项目计划,则任务不会正确更新。 如果未发布计划,则嵌套子工作项无法流入审批队列。

主题内容

  • 更新字段过程概述

  • 拒绝的提交更新

  • 对标题或任务名称的更新

  • 对开始日期和完成日期的更新

  • 对包含小时数的字段的更新

  • 对任务分配的更新

  • 摘要任务、任务层次结构和多层嵌套工作项的提交

  • 对与选取列表或查找表关联的字段的更新

更新字段过程概述

如下图所示,数据从 Project Server 移动到 Team Foundation Server,再到 PWA 实例中的状态队列,再到企业项目计划,最后返回 Project Server。 下表提供了有关同步过程以及在该过程每一步中如何更新字段的其他说明。

重要

在某个工作项或任务已计划参与同步时,除非从项目计划中删除任务,否则无法从同步中移除该工作项或任务。不能修改分配给任务的“发布到团队计划”值,并且不能在 Team Foundation 中更改“提交到 Project Server”字段。此外,在将任务发布到 Team Foundation Server 或从中提交后,不能将该任务更改为不同类型的工作项。

映射和镜像字段的更新

步骤

同步过程

字段更新

步骤 1

Team Foundation 同步:同步引擎自动检测发布到 Project Server 的添加和更改,并将这些更新拉入 Team Foundation Server。

在此步骤中仅更新从 Project Server 映射到 Team Foundation Server(targetToTfs 映射)的字段。 同步引擎始终更新镜像字段,但是仅当 OnConflict 特性设置为 PSWin 时才更新引用字段。 但是,当某个任务首次发布到 Project Server 时,会同时设置引用字段和镜像字段,而无论向 OnConflict 特性分配了何值。 镜像字段是只读的。

默认情况下,不会为“剩余工作”和“已完成工作”字段指定 OnConflict 特性,这样便允许映射的字段在 Team Foundation Server 与 Project Server 之间不同。 有关详细信息,请参阅本主题后面的对包含小时数的字段的更新。

步骤 2

状态同步:当团队成员添加或修改设置为“提交到 Project Server”的工作项时,同步引擎会自动将更新提交到状态队列。

仅提交为提交到状态队列而映射(tfsToTarget 映射)的字段。

仅当工作项首次提交时,才提交对开始和结束日期的更改。 因为 Team Foundation 中的字段映射到 Project 中的资源字段,所以会对资源字段(如“资源剩余工作”和“资源已完成工作”)进行更新。

步骤 3

审批同步:当审批某个更新时,该更新会出现在企业项目计划中。 批准或拒绝的通知会写入 Team Foundation 中的工作项历史记录。

Project Professional 的 Team Foundation 外接程序可确保 pjTask* 字段和 pjResource* 字段值的正确同步。 因此,必须从安装了 Visual Studio 2013 或 Team Explorer 2013 的客户端计算机使用 Project Professional 来编辑映射到团队项目的企业项目计划。

步骤 4

发布同步:当项目经理发布项目计划时,会将更新写入 Project Server。

将在 Project Server 中更新对项目计划中所有任务的更改。

有关详细信息,请参阅下列主题:

拒绝的提交更新

当项目经理拒绝要求或任务的状态更新时,对应的工作项不再同步,直至拒绝问题得到解决。 拒绝原因会出现在**“历史记录”字段中,而“Project Server”选项卡上的“上次审批状态”字段会指示“已拒绝”**。 团队成员必须解决该拒绝状态才能恢复工作项的同步。

可以创建一个团队查询,以查找更新状态为“已拒绝”的工作项。 有关详细信息,请参阅监视工作项提交和处理拒绝

对标题或任务名称的更新

Team Foundation Server 中的标题字段和 Project Server 中的任务名称会参与双向同步过程。 换言之,一个服务器中的更改会始终在另一个服务器中进行更新。 但是,如果更改标题 (System.Title) 字段的映射,则可以更改此行为。

对开始日期和完成日期的更新

计划字段会参与单向同步过程。 换言之,Team Foundation Server 中的“开始日期”和“完成日期”字段会始终反映在 Project Server 中分配的值,而在 Team Foundation Server 中对这些字段进行的更改从不会提交到 Project Server。 因为 Project 使用计划引擎来确定任务的开始和完成日期,所以会强制执行此规则。

默认情况下,“开始日期”和“完成日期”字段会使用 OnConflict="PSWin" 进行映射,这会导致 Team Foundation 中的日期字段始终反映在 Project Server 中分配的值。 即使更改映射特性以允许使用两组书籍,在 Team Foundation 中对日期字段进行的更改也不会提交到 Project Server,除非是首次提交工作项。 在第一个同步事件之后,这些字段会反映对项目计划进行的更新。

对包含小时数的字段的更新

默认情况下,“已完成小时数”和“剩余小时数”字段会参与维护两组书籍的同步过程。 可以在项目计划或 Team Foundation 中对小时数进行更改。 但是,更改不一定会覆盖任一位置中的信息。 映射字段的未定义 OnConflict 特性会强制执行此功能。

如以下方案所示,将基于进行更新的人员以及项目计划是否接受更新来更新字段。

  • 当团队成员更新小时数,而项目经理批准提交并发布计划时,引用和镜像字段都会与 Team Foundation Server 的下一次同步相匹配。

  • 当团队成员更新小时数,而项目经理拒绝提交时,项目计划不会接受更新。 引用字段和镜像字段的值会不同。

  • 当项目经理更改项目计划中的小时数时,只有镜像字段才会随 Team Foundation Server 的下一次同步而更新。

当任务小时数在两个服务器产品之间不同时,团队主管和项目经理应对差异进行协调。 通过此方式,每个人都可以独立更新其工作,同时注意他人进行的更改。 有关如何查找值与其镜像字段不匹配的字段的信息,请参阅Find Work Items Where the Work in Team Foundation Differs from that in Project Server

每当项目经理设置基线时,Team Foundation 中的**“初始估计”**字段的值都会进行设置或更新,如下图所示。 默认情况下,此字段会映射到 OnConflict="PSWin" 特性。

估计工作量

备注

由于 Visual Studio Scrum 过程模板不使用“已完成工作”和“初始估计”字段,因此你必须将这些字段添加到要参与数据同步的工作项的类型。此外,你必须修改任务类型定义以删除 <EMPTY /> 工作流语句。有关详细信息,请参阅映射到从 Scrum 进程模板创建的团队项目时所需的更改

对分配或资源名称字段的更新

Team Foundation 中的“指派给”字段映射到 Project Server 中的“资源名称”字段。 默认情况下,此字段会映射到 OnConflict="PSWin" 特性。 在将资源分配给企业项目计划中的任务时,请考虑以下规则:

  • 同步引擎不在两个服务器产品之间同步资源信息。 默认情况下,Team Foundation Server 从 Active Directory 同步其资源,但是 Project Server 不这样做。 你可以在 Project Server 中手动添加资源,或者将资源与 Active Directory 同步(作为最佳做法)。 若要将资源分配给参与 Team Foundation Server 同步的企业项目计划中的任务,必须将该资源添加到 Project Server。 可通过将资源添加到 PWA 实例中的 Team Members 组来添加该资源,或者为资源授予 Project 中的“打开项目”和“查看项目网站”权限。 还必须将资源添加到企业项目计划的资源列表,然后发布项目计划以便同步引擎有权访问更新的资源列表。 有关详细信息,请参阅分配权限以支持 TFS-Project Server 集成

  • 如果管理项目详细信息,则只能向每个任务分配一个资源。 如果任务需要多个资源,请将该任务划分为子任务,并为每个子任务分配一个资源。

    如果只是通过自顶向下的规划来管理业务要求,请将每个用户情景或要求分配给开发主管。

    在发布项目计划时,Team Foundation 的客户端外接程序将验证是否只向每个任务分配了一个资源。 如果向一个任务分配了多个资源,则将显示**“验证解决方法”**对话框,并且你必须只将一个资源指定为活动分配。 有关详细信息,请参阅解决验证错误

  • 在将任务链接或映射到工作项之后,你只能向未汇总的任务分配或重新分配资源。 汇总的任务与包含未链接的子工作项的工作项关联。 通常,汇总的任务在“资源名称”字段中包含多个名称。 同步引擎会传输资源汇总以及每个资源工作的小时数。 有关详细信息,请参阅在映射到团队项目的企业项目中使用资源汇总

摘要任务、任务层次结构和多层嵌套工作项的提交

按照设计,同步引擎不为在企业项目计划中具有子任务的链接任务更新 Project 字段。 同步过程会跳过这些任务的更新,因为项目计划为这些任务计算工作。 也不会为这些任务更新对标题和其他非工作字段进行的更改。 此行为是两个服务器产品的集成的已知限制。

当项目经理将包含要求和链接任务的一组详细任务发布到 Team Foundation Server 时,同步引擎会锁定任务层次结构。 团队成员无法在 Team Foundation 中修改任务层次结构,但是可以在团队项目中将任务重新分配给团队成员。 如下图所示,任务在其要求下列出,父任务与子任务之间的层次结构链接会锁定 (“锁定的链接”图标)。 锁定的链接指示从 Project Server 添加到团队项目的要求和子任务。 只有项目计划的项目经理才可以修改任务层次结构。

团队资源管理器中的工作分解时间表

当团队将多个级别的工作项从 Team Foundation 提交到 Project Server 时,必须先审批第一个级别并将其发布到 Project Server,然后才能提交下一个级别。 例如,如果团队提交一批包含三个级别子项的新工作项,则项目经理必须发布项目计划四次,以便使所有工作项都与 Project Server 同步。 在项目经理审批每个级别的工作项并将其发布到 Project Server 时,层次结构链接关系会在 Team Foundation 中锁定,直至整个链接层次结构锁定。 团队成员不能为这些映射的工作项修改层次结构。

对与选取列表或查找表关联的字段的更新

在映射与选取列表关联的 Team Foundation Server 字段或与查找表关联的 Project Server 字段时,必须考虑其他步骤才能确保良好的用户体验。 同步引擎不会自动创建对应的关联列表或在其他服务器中同步这些列表的允许值。 作为最佳做法,你应在 Project Server 中创建查找表以匹配在 Team Foundation 中定义的选取列表,并在 Team Foundation 中创建选取列表以匹配在 Project Server 中定义的查找表。 如果选取列表或查找表发生更改,则必须始终在另一个服务器产品中手动更新对应列表。

请参见

概念

已添加到 TFS 以支持数据同步的 Project Server 字段

其他资源

使用 TFS-Project Server 集成管理项目

自定义 TFS 与 Project Server 之间的字段映射