Riferimento agli elementi XML per il mapping di campi per l'integrazione TFS-Project Server
Personalizzando i mapping dei campi, è possibile definire quali campi in Visual Studio Team Foundation Server (TFS) e Microsoft Project Server devono essere mantenuti sincronizzati e quali vengono aggiornati nella coda di stato per Project Server e in Team Foundation.
Nota
I mapping dei campi per l'integrazione di TFS con Project Server sono diversi dal file di mapping per Microsoft Project.Per informazioni su questo file, vedere Personalizzare il file di mapping campi di Microsoft Project.
È necessario mantenere un set di mapping dei campi per ogni raccolta di progetti team che ospita i progetti team che si vuole sincronizzare con Project Server. Per recuperare i mapping dei campi, è possibile scaricarli in un file dalla raccolta. Dopo aver modificato il file, è possibile caricarlo nella raccolta e le modifiche verranno applicate a tutti i progetti team definiti per la raccolta specificata. Per altre informazioni su come scaricare e caricare i mapping dei campi, vedere Personalizzare il mapping dei campi tra TFS e Project Server.
In questo argomento
Campi obbligatori
Campi predefiniti mappati
Elementi e attributi di mapping
Mapping dei campi predefiniti
Campi obbligatori
I campi seguenti devono essere mappati per supportare la sincronizzazione dei dati. Se i campi usati per pianificare il lavoro sono stati personalizzati, è necessario personalizzare i mapping in modo che facciano riferimento ai campi in uso.
System.Title deve essere mappato a pjTaskName.
System.AssignedTo deve essere mappato a pjResourceNames.
Il campo usato per tenere traccia dell'inizio del lavoro in Team Foundation deve essere mappato a pjTaskStart. Per impostazione predefinita, questo campo è Microsoft.VSTS.Scheduling.StartDate.
Il campo usato per tenere traccia del lavoro completato in Team Foundation deve essere mappato a pjTaskFinish. Per impostazione predefinita, questo campo è Microsoft.VSTS.Scheduling.FinishDate.
Campi predefiniti mappati
Per ogni campo di TFS è possibile specificare due mapping. Nel primo mapping si specifica il campo di Project che viene aggiornato dal campo di TFS nella coda di stato. Nel secondo mapping si specifica il campo di Project che aggiorna il campo di TFS. È anche possibile specificare se il campo di TFS viene visualizzato nel form elemento di lavoro e la modalità di aggiornamento dei campi mirror e di riferimento.
Di tutti i campi di Project di cui è stato eseguito il mapping viene eseguito anche il mirroring per impostazione predefinita, quindi i valori vengono archiviati in TFS.
Importante
Nella maggior parte delle configurazioni, è consigliabile non rimuovere i mapping dei campi predefiniti perché necessari al processo di sincronizzazione.Ad esempio, se viene eseguito il mapping del piano del progetto dell'organizzazione a un progetto team creato da un modello di processo basato su Microsoft Solutions Framework (MSF) per Agile Software Development o su Capability Maturity Model Integration (CMMI) Process Improvement, è consigliabile non rimuovere i mapping predefiniti.
Se però viene eseguito il mapping del piano a un progetto team creato con il modello di processo Visual Studio Scrum, potrebbe essere necessario rimuovere alcuni mapping predefiniti.Se la raccolta di progetti contiene solo progetti team creati con il modello Scrum, si potrebbe ricevere un errore quando si configurano i due prodotti server.Per ottenere risultati migliori, aggiungere i campi Lavoro completato (Microsoft.VSTS.Scheduling.CompletedWork) e Stima originale (Microsoft.VSTS.Scheduling.OriginalEstimate) agli elementi di lavoro di cui si vuole eseguire il mapping.Sarà anche necessario rimuovere le istruzioni del flusso di lavoro <EMPTY /> dalla definizione del tipo di attività.Per altre informazioni, vedere la sezione relativa alle modifiche obbligatorie da apportare durante il mapping a un progetto team creato da un modello del processo Scrum.
La tabella seguente descrive i mapping predefiniti assegnati ai campi di Team Foundation. È possibile specificare il modo in cui verranno aggiornati i campi mirror e di riferimento. È possibile impostare OnConflict su PSWins per sovrascrivere il valore in Team Foundation con il valore di Project Server. Se si lascia l'attributo OnConflict non specificato, i campi mantengono valori diversi. Per altre informazioni, vedere la tabella Elementi field e relativi attributi più avanti in questo argomento.
Per altre informazioni sui campi mirror e il processo di sincronizzazione, vedere Informazioni sulla gestione degli aggiornamenti a campi specifici.
Campo di Team Foundation |
Campo di Project |
Campo visualizzato nella scheda Project Server del form dell'elemento di lavoro (displayTfsField) |
Campo mirror visualizzato nella scheda Project Server del form dell'elemento di lavoro (displayTfsMirror) |
Aggiornamenti dei campi (OnConflict) |
---|---|---|---|---|
Titolo |
Nome attività |
No |
No |
Il valore in Project Server sostituisce il valore in Team Foundation. |
Assegnato a |
Risorse |
No |
No |
Il valore in Project Server sostituisce il valore in Team Foundation. |
Lavoro rimanente |
Risorse - Lavoro rimanente (coda di stato) Attività - Lavoro rimanente (Project Server) |
Sì |
Sì |
Ogni valore viene mantenuto. |
Lavoro completato |
Risorse - Lavoro effettivo (coda di stato) Attività - Lavoro effettivo (Project Server) |
Sì |
Sì |
Ogni valore viene mantenuto. |
Stima originale |
Lavoro previsto |
No |
Sì |
Il valore in Project Server sostituisce il valore in Team Foundation. |
Data di inizio |
Risorse - Inizio (coda di stato) Attività - Inizio (Project Server) |
No |
No |
Il valore in Project Server sostituisce il valore in Team Foundation. |
Data di fine |
Risorse - Fine (coda di stato) Attività - Fine (Project Server) |
No |
No |
Il valore in Project Server sostituisce il valore in Team Foundation. |
È possibile visualizzare più campi di Project nella scheda Project Server di un form elemento di lavoro in Team Foundation se vengono aggiunti ai mapping dei campi. Per altre informazioni su questa scheda, vedere Campi di Project Server aggiunti a TFS per supportare la sincronizzazione dei dati.
Elementi e attributi di mapping
L'elemento field consente di specificare un campo di riferimento in Team Foundation da sincronizzare. Tutti gli elementi field sono inclusi negli elementi contenitore mappingFile, persistables e Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping.
Importante
Quando si esegue il mapping di un campo da TFS a Project Server, accertarsi che i tipi di dati di tali campi corrispondano.In caso contrario, si potrebbe ricevere l'errore seguente quando si tenta di caricare i mapping dei campi:
L'indice (in base zero) deve essere maggiore o uguale a zero e minore della dimensione dell'elenco degli argomenti.
Per altre informazioni, vedere Limitazioni relative al mapping dei campi di Project Server nell'integrazione con TFS.
L'esempio seguente illustra la struttura di annidamento degli elementi XML. Per visualizzare i mapping predefiniti, vedere Mapping predefiniti più avanti in questo argomento.
<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>
Sintassi degli elementi dei campi
La sintassi seguente definisce gli attributi dell'elemento field:
<field tfsName="FieldName" tfsMirrorName="FieldMirrorName" displayTfsField="true | false" displayTfsMirror=" true | false" onConflict="PSWin">
Sintassi dell'elemento Target
La sintassi seguente definisce gli attributi dell'elemento target:
<target provider="ProviderName" name="ProjectFieldName" />
Per determinare il nome del campo, anteporre il prefisso "pj" al nome descrittivo concatenato. Ad esempio, il nome del campo per Status Manager è pjStatusManager, mentre il nome del campo per Custom 01 è pjCustom01.
Elementi field e relativi attributi
La tabella seguente descrive i sottoelementi e gli attributi dell'elemento field. Un campo di Team Foundation viene mappato a un campo delle risorse di Project di cui si vuole aggiornare il valore durante la sincronizzazione dello stato. Un campo di Team Foundation viene mappato a un campo delle attività di Project il cui valore aggiornerà Team Foundation Server durante la sincronizzazione della pubblicazione. Le unità dei campi da mappare devono inoltre essere conformi ai criteri stabiliti. Per altre informazioni, vedere Limitazioni relative al mapping dei campi di Project Server nell'integrazione con TFS.
Elemento |
Attributo |
Descrizione |
---|---|---|
field |
Specifica il campo di Team Foundation da mappare e come deve essere eseguito il mapping. |
|
tfsName |
Specifica il nome di riferimento del campo di Team Foundation da sincronizzare. È necessario specificare un campo definito nella raccolta di progetti team. È possibile elencare tutti i campi di una raccolta eseguendo il comando witadmin listfields. Per altre informazioni, vedere Gestire campi di elementi di lavoro [witadmin]. |
|
tfsMirrorName |
Obbligatorio. Specifica il nome di riferimento sotto il quale archiviare il valore del campo di Project Server in Team Foundation Server. È possibile anteporre al nome di riferimento il prefisso "Mirror". È ad esempio possibile specificare Mirror.System.Title per System.Title. Nota I campi mirror specificati vengono creati automaticamente.Non è necessario aggiungere i campi mirror alla definizione del tipo di un elemento di lavoro. |
|
displayTfsField |
Facoltativo. Per impostazione predefinita, questo attributo è impostato su true. Se questo attributo viene impostato su true, il campo viene visualizzato nella scheda Project Server del form elemento di lavoro in Team Foundation. Se l'attributo viene impostato su false, il campo non viene visualizzato nel form. Per impostazione predefinita, solo i campi Lavoro completato e Lavoro rimanente vengono visualizzati nel form. |
|
displayTfsMirror |
Facoltativo. Per impostazione predefinita, questo attributo è impostato su true. Se questo attributo viene impostato su true, il campo viene visualizzato nella scheda Project Server del form elemento di lavoro in Team Foundation. Se l'attributo viene impostato su false, il campo non viene visualizzato nel form. |
|
onConflict |
Facoltativo. Specifica il modo in cui i campi di riferimento verranno aggiornati tramite il motore di sincronizzazione. L'unico valore valido è PSWin. Quando questo attributo viene impostato su PSWin, il valore del campo di riferimento viene aggiornato quando il valore corrente pubblicato da Project Server è diverso dal valore nel mirror. Se non si definisce questo attributo, si indica che devono essere mantenute due serie diverse di valori possibili. In altre parole, il valore in Project può essere diverso dal valore in Team Foundation. Per impostazione predefinita, i valori di Project sostituiscono sempre i valori dei campi Titolo, Assegnato a, Data di inizio e Data di fine. Per impostazione predefinita, solo i campi Lavoro completato e Lavoro rimanente vengono mantenuti con due serie diverse di valori possibili. Per altre informazioni, vedere Updates to Fields that Contain Hours. |
|
tfsToTarget |
Specifica il nome del campo di Project che verrà aggiornato da Team Foundation. |
|
target |
Specifica la destinazione degli aggiornamenti provenienti da Team Foundation. |
|
provider |
Specifica il nome del provider dell'aggiornamento. Per tfsToTarget l'unico valore valido è ProjectServerStatusQueue. |
|
name |
Specifica il nome del campo di Project che verrà aggiornato con il valore di Team Foundation. È possibile mappare solo i campi predefiniti o i campi personalizzati dell'organizzazione in Project Server. Per un elenco di campi disponibili, vedere Limitazioni relative al mapping dei campi di Project Server nell'integrazione con TFS. |
|
targetToTfs |
Specifica il mapping dei campi per sincronizzare gli aggiornamenti in Project Server con Team Foundation Server. |
|
target |
Specifica la destinazione degli aggiornamenti provenienti da Project Server. |
|
provider |
Specifica il nome del provider dell'aggiornamento. Per targetToTfs l'unico valore valido è ProjectServerPublished. |
|
name |
Specifica il nome del campo di Project tramite cui verrà aggiornato il campo di Team Foundation. È possibile mappare solo i campi incorporati o personalizzati dell'organizzazione. Per un elenco di campi disponibili, vedere Limitazioni relative al mapping dei campi di Project Server nell'integrazione con TFS. |
|
transforms |
Facoltativo. Elemento contenitore per l'elemento transform. |
|
transform |
transformType |
Specifica il tipo di trasformazione da applicare al campo. È possibile specificare solo transformType per targetToTfs e solo per i tipi di campi numerici. L'unico valore valido è ClearValueIfParent. Quando il motore di sincronizzazione rileva una gerarchia sotto un elemento di lavoro sincronizzato con Project Server, esegue il rollup del lavoro e le assegnazioni da inviare a Project Server. Con transformType impostato su ClearValueIfParent, il motore di sincronizzazione rimuove tuttavia i campi lavoro nell'elemento di lavoro padre in Team Foundation Server per evitare dati errati nei rapporti standard di Team Foundation Server. |
Mapping predefiniti
Il codice seguente elenca i mapping dei campi predefiniti che vengono definiti quando si esegue il comando TfsAdmin ProjectServer /UploadFieldMappings e si specifica l'opzione /useDefaultFieldMappings. È possibile scaricare questi mapping in un file e aggiungervi elementi o modificare gli attributi dei campi elencati.
Per un elenco di tutti i campi che vengono aggiunti a un tipo di elemento di lavoro quando si aggiunge tale tipo alla sincronizzazione dei dati, vedere Campi di Project Server aggiunti a TFS per supportare la sincronizzazione dei dati.
<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>
Vedere anche
Riferimenti
Gestire i mapping dei campi per l'integrazione TFS-Project Server
Concetti
Limitazioni relative al mapping dei campi di Project Server nell'integrazione con TFS
Campi di Project Server aggiunti a TFS per supportare la sincronizzazione dei dati
Amministrare l'integrazione di Team Foundation Server e Project Server
Altre risorse
Personalizzare il mapping dei campi tra TFS e Project Server