Compartilhar via


Referência a elementos XML de mapeamento de campos para a integração do TFS com o Project Server

Pela personalização dos mapeamentos de campo, é possível definir quais campos no Visual Studio Team Foundation Server (TFS) e no Microsoft Project Server devem ser mantidos sincronizados e quais campos são atualizados na fila de status para Project Server e no Team Foundation.

Dica

Os mapeamentos de campo para integração do TFS com o Project Server são distintos do arquivo de mapeamento para Microsoft Project.Para obter informações sobre o arquivo mencionado anteriormente, consulte Personalizar o arquivo de mapeamento de campo do Microsoft Project.

Você mantém um conjunto de mapeamentos de campo para cada coleção de projetos de equipe que hospeda projetos de equipe que você deseja sincronizar com o Project Server. Para recuperar os mapeamentos de campo, baixe-os em um arquivo da coleção. Depois de modificar o arquivo, é possível carregá-lo na coleção e as alterações serão aplicadas a todos os projetos de equipe definidos para essa coleção. Para obter mais informações sobre como baixar ou carregar mapeamentos de campo, consulte Personalizar o mapeamento de campos entre o TFS e o Project Server.

Neste tópico

  • Campos obrigatórios

  • Campos padrão que são mapeados

  • Elementos e atributos de mapeamento

  • Mapeamentos de campo padrão

Campos obrigatórios

Os campos a seguir devem ser mapeados para oferecer suporte à sincronização de dados. Se você personalizou os campo usados para agendar trabalho, deverá personalizar os mapeamentos de campo para fazer referência aos campos que você usa.

  • System.Title deve ser mapeado para pjTaskName.

  • System.AssignedTo deve ser mapeado para pjResourceNames.

  • O campo que você usa para acompanhar o início do trabalho no Team Foundation deve ser mapeado para pjTaskStart. Por padrão, esse campo é Microsoft.VSTS.Scheduling.StartDate.

  • O campo que você usa para acompanhar o trabalho concluído em Team Foundation deve ser mapeado para pjTaskFinish. Por padrão, esse campo é Microsoft.VSTS.Scheduling.FinishDate.

Campos padrão que são mapeados

Para cada campo do TFS, você pode especificar dois mapeamentos. No primeiro mapeamento, você especifica o campo no Project que o campo no TFS atualiza na fila de status. No segundo mapeamento, você especifica o campo no Project que atualiza o campo no TFS. Além disso, você pode especificar se o campo do TFS aparece no formulário de item de trabalho e como as atualizações são feitas nos campos de referência e espelhados.

Por padrão, todos os campos do Project que são mapeados também são espelhados, o que significa que seus valores são armazenados no TFS.

Importante

Na maioria das configurações, você não deve remover os mapeamentos de campos padrão, pois eles serão necessários para o processo de sincronização.Por exemplo, não remova os mapeamentos padrão se o seu plano de projeto corporativo mapear para um projeto de equipe criado a partir de um modelo de processo baseado no Microsoft Solutions Framework (MSF) for Agile Software Development ou na Melhoria de Processo CMMI (Capability Maturity Model Integration – Modelo de Maturidade em Capacitação - Integração).

No entanto, se você planeja mapear para um projeto de equipe criado usando o modelo de processo do Visual Studio Scrum, talvez precise remover alguns dos mapeamentos padrão.Se sua coleção de projetos contiver somente projetos de equipe criados usando o modelo do Scrum, talvez você receba um erro ao configurar os dois produtos do servidor.Para obter melhores resultados, adicione Trabalho Concluído (Microsoft.VSTS.Scheduling.CompletedWork) e Estimativa Original (Microsoft.VSTS.Scheduling.OriginalEstimate) aos itens de trabalho que pretende mapear.Além disso, você precisará remover as instruções de fluxo de trabalho <EMPTY /> da definição do tipo de tarefa.Para obter mais informações, consulte Alterações necessárias a serem feitas ao mapear para um projeto de equipe criado a partir do modelo de processo do Scrum.

A tabela a seguir descreve os mapeamentos padrão atribuídos aos campos no Team Foundation. Você pode especificar como deseja que os campos de referência e de espelho sejam atualizados. Você pode configurar OnConflict como PSWins para substituir o valor no Team Foundation pelo valor do Project Server. Se você deixar o atributo OnConflict não especificado, os campos manterão valores diferentes. Para obter mais informações, examine a tabela Elementos e atributos de campo mais adiante neste tópico.

Para obter mais informações sobre campos espelhados e o processo de sincronização, consulte Entender como as atualizações de campos específicos são gerenciadas.

Campo do Team Foundation

Campo Project

Exibir campo na guia Project Server do formulário de item de trabalho (displayTfsField)

Exibir campo espelhado na guia Project Server do formulário de item de trabalho (displayTfsMirror)

Atualizações de campos (OnConflict)

Título

Nome da Tarefa

Não

Não

O valor no Project Server substitui o valor no Team Foundation.

Atribuído a

Recursos

Não

Não

O valor no Project Server substitui o valor no Team Foundation.

Trabalho restante

Trabalho Restante do Recurso (Fila de Status)

Trabalho Restante da Tarefa (Project Server)

Sim

Sim

Todos os valores são mantidos.

Trabalho Concluído

Trabalho Real do Recurso (Fila de Status)

Trabalho Real da Tarefa (Project Server)

Sim

Sim

Todos os valores são mantidos.

Estimativa Original

Trabalho da Linha de Base

Não

Sim

O valor no Project Server substitui o valor no Team Foundation.

Data de Início

Início do Recurso (Fila de Status)

Início da Tarefa (Project Server)

Não

Não

O valor no Project Server substitui o valor no Team Foundation.

Data de Término

Término do Recurso (Fila de Status)

Término da Tarefa (Project Server)

Não

Não

O valor no Project Server substitui o valor no Team Foundation.

Você pode exibir mais campos do Project na guia Project Server de um formulário de item de trabalho no Team Foundation se adicioná-los aos mapeamentos de campo. Para obter mais informações sobre essa guia, consulte Campos do Project Server adicionados ao TFS para dar suporte à sincronização de dados.

Elementos e atributos de mapeamento

O elemento field é usado para especificar um campo de referência a ser sincronizado no Team Foundation. Todos os elementos field estão contidos nos elementos do contêiner mappingFile, persistables e Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping.

Importante

Ao mapear um campo a partir do TFS para o Project Server, certifique-se de corresponder os tipos de dados desses campos.Caso contrário, o seguinte erro poderá ser exibido quando ao tentar carregar os mapeamentos de campo:

Índice (baseado em zero) deve ser maior ou igual a zero e menor que o tamanho da lista de argumentos.

Para obter mais informações, consulte Restrições ao mapeamento de campos do Project Server na integração do TFS com o Project Server.

O exemplo a seguir mostra a estrutura aninhada de elementos XML. Para exibir os mapeamentos padrão, consulte Arquivo de mapeamento padrão mais adiante neste tópico.

<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>

Sintaxe do elemento campo

A seguinte sintaxe define os atributos do elemento field:

<field tfsName="FieldName" tfsMirrorName="FieldMirrorName" displayTfsField="true | false" displayTfsMirror=" true | false" onConflict="PSWin">

Sintaxe do elemento destino

A seguinte sintaxe define os atributos do elemento target:

<target provider="ProviderName" name="ProjectFieldName" />

Para determinar o nome do campo, prefixe o nome amigável concatenado com "pj". Por exemplo, o nome do campo do Gerenciador de Status é pjStatusManager e o nome do campo Personalizado 01 é pjCustom01.

Elementos e atributos de campo

A tabela a seguir descreve os subelementos e atributos do elemento field. Um campo Team Foundation é mapeado para um campo de recurso do Project cujo valor você deseja atualizar durante a sincronização de status. Um campo Team Foundation é mapeado para um campo de tarefa do Project cujo valor atualizará Team Foundation Server durante a sincronização de publicação. Além disso, as unidades dos campos que você mapeia devem estar em conformidade com os critérios estabelecidos. Para obter mais informações, consulte Restrições ao mapeamento de campos do Project Server na integração do TFS com o Project Server.

Elemento

Atributo

Descrição

field

Especifica o campo a ser mapeado no Team Foundation e como o campo deve ser mapeado.

tfsName

Especifica o nome de referência do campo a ser sincronizado no Team Foundation. Você deve especificar um campo que esteja definido na coleção de projetos de equipe. Você pode listar todos os campos em uma coleção executando o comando witadmin listfields. Para obter mais informações, consulte Gerenciar campos de item de trabalho [witadmin].

tfsMirrorName

Obrigatório. Especifica o nome de referência sob o qual você deve armazenar o valor do campo Project Server no Team Foundation Server. Você pode prefixar o nome de referência com "Mirror." Por exemplo, você pode especificar Mirror.System.Title para System.Title.

Dica

Os campos de espelho que você especifica são criados automaticamente.Você não precisa adicionar campos de espelho à definição de tipo de um item de trabalho.

displayTfsField

Opcional. Por padrão, esse atributo está configurado como true. Se esse atributo estiver configurado como true, o campo será exibido na guia Project Server do formulário do item de trabalho no Team Foundation. Se esse atributo estiver configurado como false, o campo não será exibido no formulário. Por padrão, somente os campos Trabalho Concluído e Trabalho Restante serão exibidos no formulário.

displayTfsMirror

Opcional. Por padrão, esse atributo está configurado como true. Se esse atributo estiver configurado como true, o campo será exibido na guia Project Server do formulário do item de trabalho no Team Foundation. Se esse atributo estiver configurado como false, o campo não será exibido no formulário.

onConflict

Opcional. Especifica como o mecanismo de sincronização atualiza o campo de referência. O único valor válido é PSWin.

Quando esse atributo estiver configurado como PSWin, o valor do campo de referência será atualizado quando o valor atual publicado no Project Server for diferente do valor no espelho.

Se você não definir esse atributo, indique que os dois conjuntos de livros devem ser mantidos. Em outras palavras, o valor no Project pode ser diferente do valor no Team Foundation. Por padrão, os valores no Project sempre substituem os valores dos campos Título, Atribuído a, Data de Início e Data de Término. Por padrão, somente os campos Trabalho Concluído e Trabalho Restante são mantidos nos dois conjuntos de livros. Para obter mais informações, consulte Updates to Fields that Contain Hours.

tfsToTarget

Especifica o nome do campo no Project que o Team Foundation atualizará.

target

Especifica o destino para receber atualizações do Team Foundation.

provider

Especifica o nome do provedor de atualizações. Para tfsToTarget, o único valor válido é ProjectServerStatusQueue.

name

Especifica o nome do campo Project que será atualizado com o valor em Team Foundation. Você pode mapear somente campos personalizados internos ou da empresa no Project Server. Para obter uma lista de campos disponíveis, consulte Restrições ao mapeamento de campos do Project Server na integração do TFS com o Project Server.

targetToTfs

Especifica o mapeamento de campo para sincronizar atualizações no Project Server com o Team Foundation Server.

target

Especifica o destino para receber atualizações do Project Server.

provider

Especifica o nome do provedor de atualizações. Para targetToTfs, o único valor válido é ProjectServerPublished.

name

Especifica o nome do campo no Project que atualizará o campo em Team Foundation. Você pode mapear somente campos personalizados internos ou da empresa. Para obter uma lista de campos disponíveis, consulte Restrições ao mapeamento de campos do Project Server na integração do TFS com o Project Server.

transforms

Opcional. Elemento contêiner do elemento transform.

transform

transformType

Especifica o tipo de transformação a ser aplicada ao campo. Você pode especificar somente o transformType para um targetToTfs e somente para tipos de campos numéricos. O único valor válido é ClearValueIfParent.

Quando o mecanismo de sincronização detecta uma hierarquia em um item de trabalho sincronizado ao Project Server, ele executa um acúmulo para o trabalho e atribuições a serem enviadas ao Project Server. No entanto, com o transformType configurado como ClearValueIfParent, o mecanismo de sincronização limpa os campos de trabalho no item de trabalho pai em Team Foundation Server para evitar dados incorretos nos relatórios padrão do Team Foundation Server.

Mapeamentos padrão

O código a seguir lista os mapeamentos de campo padrão definidos ao executar o comando TfsAdmin ProjectServer /UploadFieldMappings e especifica a opção /useDefaultFieldMappings. Você pode baixar esses mapeamentos em um arquivo e adicionar elementos a ele ou modificar os atributos dos campos listados.

Para obter uma lista de todos os campos adicionados a um tipo de item de trabalho quando você adiciona tal tipo para participar da sincronização de dados, consulte Campos do Project Server adicionados ao TFS para dar suporte à sincronização de dados.

<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>

Consulte também

Referência

Gerenciar mapeamentos de campo para a integração do TFS com o Project Server

Conceitos

Restrições ao mapeamento de campos do Project Server na integração do TFS com o Project Server

Campos do Project Server adicionados ao TFS para dar suporte à sincronização de dados

Administrar a integração do Team Foundation Server com o Project Server

Outros recursos

Personalizar o mapeamento de campos entre o TFS e o Project Server