Справочник по XML-элементу сопоставления полей для интеграции TFS и Project Server
Настроив сопоставления полей, можно указать, какие поля в Visual Studio Team Foundation Server (TFS) и Microsoft Project Server должны синхронизироваться и какие поля будут обновляться в очереди состояний Project Server и в Team Foundation.
Примечание
Сопоставления полей для интеграции Team Foundation Server с 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.
Сопоставляемые поля по умолчанию
Для каждого поля Team Foundation Server можно указать два сопоставления. В первом сопоставлении указывается поле Project, которое поле Team Foundation Server обновляет в очереди состояний. Во втором сопоставлении указывается поле Project, которое обновляет поле в Team Foundation Server. Кроме того, можно указать, отображается ли поле Team Foundation Server в форме рабочего элемента, а также способ обновления эталонных и зеркальных полей.
По умолчанию все сопоставленные поля Project также зеркалируются. Это означает, что их значения хранятся в Team Foundation Server.
Важно!
В большинстве конфигураций не следует удалять сопоставления полей по умолчанию, поскольку они необходимы для процесса синхронизации.Например, не удаляйте сопоставления по умолчанию, если план корпоративного проекта сопоставлен с командным проектом, созданным на основе шаблона процесса Microsoft Solutions Framework (MSF) для гибкой разработки программного обеспечения или улучшения процесса Capability Maturity Model Integration (CMMI).
Однако если план сопоставлен с командным проектом, созданным с помощью шаблона процесса Visual Studio Scrum, некоторые сопоставления по умолчанию может потребоваться удалить.Если коллекция проектов содержит только командные проекты, созданные с использованием шаблона Scrum, при настройке двух серверных продуктов может возникнуть ошибка.Для наилучших результатов добавьте поля "Завершенная работа" (Microsoft.VSTS.Scheduling.CompletedWork) и "Исходная оценка" (Microsoft.VSTS.Scheduling.OriginalEstimate) в рабочие элементы, которые планируется сопоставить.Кроме того, необходимо удалить операторы рабочего процесса <EMPTY /> из определения типа задач.Подробнее см. в разделе Необходимые изменения при сопоставлении с командным проектом, созданным на основе шаблона процесса Scrum.
В таблице ниже описываются сопоставления по умолчанию, назначенные полям в Team Foundation. Вы можете указать способ обновления эталонных и зеркальных полей. Для атрибута OnConflict можно задать значение PSWins, чтобы перезаписать значение в Team Foundation значением из Project Server. Если не задать атрибут 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 на вкладке Project Server формы рабочего элемента в Team Foundation, если добавить их в сопоставления полей. Подробнее об этой вкладке см. в статье Поля Project Server, добавляемые в TFS для поддержки синхронизации данных.
Сопоставление элементов и атрибутов
Используйте элемент field, чтобы указать эталонное поле в Team Foundation для синхронизации. Все элементы field содержатся в элементах контейнера mappingFile, persistables и Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping.
Важно!
При сопоставлении поля из Team Foundation Server с Project Server, убедитесь в том, что типы данных полей совпадают.В противном случае при попытке отправить сопоставления полей может появиться следующее сообщение об ошибке.
Индекс (отсчитываемый от нуля) должен быть больше или равен нулю, но меньше размера списка аргументов.
Для получения дополнительной информации см. Ограничения на сопоставление полей Project Server при интеграции 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 используется следующий синтаксис:
<field tfsName="FieldName" tfsMirrorName="FieldMirrorName" displayTfsField="true | false" displayTfsMirror=" true | false" onConflict="PSWin">
Синтаксис элемента target
Для определения атрибутов элемента target используется следующий синтаксис:
<target provider="ProviderName" name="ProjectFieldName" />
Чтобы определить имя поля, укажите соединенное понятное имя с префиксом pj. Например, именем поля для диспетчера состояний является pjStatusManager, а именем настраиваемого поля 01 — pjCustom01.
Элементы и атрибуты полей
В таблице ниже описаны дочерние элементы и атрибуты элемента field. Поле Team Foundation сопоставляется с полем ресурса Project, значение которого должно обновляться в процессе синхронизации состояния. Поле Team Foundation сопоставляется с полем задачи Project, значение которого будет обновлять Team Foundation Server в процессе синхронизации публикации. Кроме того, сопоставляемые элементы полей должны соответствовать заданному условию. Для получения дополнительной информации см. Ограничения на сопоставление полей Project Server при интеграции TFS и Project Server.
Элемент |
Атрибут |
Описание |
---|---|---|
field |
Указывает сопоставляемое поле в Team Foundation и способ его сопоставления. |
|
tfsName |
Указывает справочное имя поля в Team Foundation для синхронизации. Необходимо указать поле, определенное в коллекции командных проектов. Чтобы получить список всех полей в коллекции, выполните команду witadmin listfields. Для получения дополнительной информации см. Управление полями рабочих элементов [witadmin]. |
|
tfsMirrorName |
Обязательный. Указывает справочное имя, под которым значение поля Project Server хранится в Team Foundation Server. К справочному имени можно добавить префикс Mirror. Например, можно указать Mirror.System.Title для System.Title. Примечание Указанные зеркальные поля создаются автоматически.Добавлять зеркальные поля в определение типа рабочего элемента не нужно. |
|
displayTfsField |
Необязательно. По умолчанию для этого атрибута задано значение true. Если для этого атрибута задано значение true, поле отображается на вкладке Project Server в форме рабочего элемента в Team Foundation. Если для атрибута задано значение false, поле не отображается в форме. По умолчанию в форме отображаются только поля "Завершенная работа" и "Оставшиеся трудозатраты". |
|
displayTfsMirror |
Необязательно. По умолчанию для этого атрибута задано значение true. Если для этого атрибута задано значение true, поле отображается на вкладке Project Server в форме рабочего элемента в Team Foundation. Если для атрибута задано значение false, поле не отображается в форме. |
|
onConflict |
Необязательно. Определяет, как обработчик синхронизации обновляет эталонное поле. Единственным допустимым значением является PSWin. Если этот атрибут имеет значение PSWin, то значение эталонного поля обновляется, когда текущее значение, опубликованное из Project Server, отличается от значения в зеркальном поле. Если этот атрибут не определен, задается поддержка двух наборов книг. Другими словами, значение в Project может отличаться от значения в Team Foundation. По умолчанию значения в Project всегда заменяют значения полей "Заголовок", "Кому назначено", "Дата начала" и "Дата окончания". По умолчанию только поля "Завершенная работа" и "Оставшиеся трудозатраты" поддерживаются двумя наборами книг. Для получения дополнительной информации см. Updates to Fields that Contain Hours. |
|
tfsToTarget |
Указывает имя поля в Project, которое обновляется системой Team Foundation. |
|
target |
Указывает целевой объект для получения обновлений из Team Foundation. |
|
provider |
Задает имя поставщика обновлений. Для tfsToTarget единственным допустимым значением является ProjectServerStatusQueue. |
|
name |
Указывает имя поля Project, которое будет обновлено значением в Team Foundation. Можно сопоставлять только встроенные или настраиваемые поля предприятия в Project Server. Список доступных полей см. в разделе Ограничения на сопоставление полей Project Server при интеграции TFS и Project Server. |
|
targetToTfs |
Указывает сопоставление полей для синхронизации обновлений в Project Server с Team Foundation Server. |
|
target |
Указывает целевой объект для получения обновлений из Project Server. |
|
provider |
Задает имя поставщика обновлений. Для targetToTfs единственным допустимым значением является ProjectServerPublished. |
|
name |
Указывает имя поля в Project, которое будет обновлять поле в Team Foundation. Можно сопоставлять только встроенные или настраиваемые поля предприятия. Список доступных полей см. в разделе Ограничения на сопоставление полей Project Server при интеграции TFS и Project Server. |
|
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, добавляемые в TFS для поддержки синхронизации данных.
<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
Поля Project Server, добавляемые в TFS для поддержки синхронизации данных
Администрирование интеграции Team Foundation Server и Project Server