TFS와 Project Server 통합을 위한 필드 매핑 XML 요소 참조
필드 매핑을 사용자 지정하면 TFS(Visual Studio Team Foundation Server) 및 Microsoft Project Server에서 동기화된 상태로 유지할 필드와 Project Server 및 Team Foundation의 상태 큐에서 업데이트될 필드를 정의할 수 있습니다.
참고
TFS와 Project Server 통합을 위한 필드 매핑은 Microsoft Project용 매핑 파일과는 다릅니다.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에 저장됩니다.
중요
대부분의 구성에서는 동기화 프로세스에 기본 필드 매핑이 필요하므로 기본 필드 매핑을 제거하면 안 됩니다.예를 들어 MSF(Microsoft Solutions Framework) for Agile Software Development 또는 CMMI(Capability Maturity Model Integration) Process Improvement를 기반으로 하는 프로세스 템플릿에서 작성된 팀 프로젝트에 Enterprise 프로젝트 계획이 매핑되는 경우 기본 매핑을 제거해서는 안 됩니다.
그러나 계획이 Visual Studio 스크럼 프로세스 템플릿을 사용하여 작성된 팀 프로젝트에 매핑되는 경우에는 일부 기본 매핑을 제거해야 할 수 있습니다.프로젝트 컬렉션에 스크럼 템플릿을 사용하여 작성된 팀 프로젝트만 포함되어 있는 경우 두 서버 제품을 구성할 때 오류가 발생할 수 있습니다.최상의 결과를 얻으려면 완료된 작업(Microsoft.VSTS.Scheduling.CompletedWork) 및 원래 예상 값(Microsoft.VSTS.Scheduling.OriginalEstimate)을 매핑할 작업 항목에 추가합니다.또한 작업 종류 정의에서 <EMPTY /> 워크플로 문도 제거해야 합니다.자세한 내용은 스크럼 프로세스 템플릿에서 만든 팀 프로젝트에 매핑할 때 필요한 변경 사항을 참조하세요.
다음 테이블에서는 Team Foundation의 필드에 할당되는 기본 매핑에 대해 설명합니다. 참조 및 미러 필드를 업데이트할 방법을 지정할 수 있습니다. Team Foundation의 값을 Project Server의 값으로 덮어쓰려는 경우 OnConflict를 PSWins로 설정할 수 있습니다. OnConflict 특성을 지정하지 않은 상태로 유지하면 필드에 각기 다른 값이 유지됩니다. 자세한 내용을 보려면 이 항목 뒷부분의 필드 요소 및 특성 테이블을 검토하세요.
미러링된 필드 및 동기화 프로세스에 대한 자세한 내용은 특정 필드에 대한 업데이트가 관리되는 방법 이해를 참조하세요.
Team Foundation 필드 |
Project 필드 |
작업 항목 폼의 Project Server 탭에 필드 표시(displayTfsField) |
작업 항목 폼의 Project Server 탭에 미러링된 필드 표시(displayTfsMirror) |
필드 업데이트(OnConflict) |
---|---|---|---|---|
제목 |
작업 이름 |
아니요 |
아니요 |
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 Server의 값으로 바뀝니다. |
필드 매핑에 Project 필드를 더 추가하면 Team Foundation에서 작업 항목 폼의 Project Server 탭에 해당 필드를 표시할 수 있습니다. 이 탭에 대한 자세한 내용은 데이터 동기화를 지원하기 위해 TFS에 추가된 Project Server 필드를 참조하세요.
매핑 요소 및 특성
field 요소를 사용하여 Team Foundation에서 동기화할 참조 필드를 지정합니다. 모든 field 요소는 mappingFile, persistables 및 Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping 컨테이너 요소에 포함됩니다.
중요
TFS에서 Project Server로 필드를 매핑할 때는 해당 필드의 데이터 형식이 일치해야 합니다.그렇지 않으면 필드 매핑을 업로드할 때 다음 오류가 표시될 수 있습니다.
0에서 시작하는 인덱스는 0보다 크거나 같아야 하며 인수 목록의 크기보다 작아야 합니다.
자세한 내용은 TFS와 Project Server 통합에서 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이고 Custom 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."를 붙일 수 있습니다. 예를 들어 Mirror.System.Title for 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의 기본 제공 필드 또는 Enterprise 사용자 지정 필드만 매핑할 수 있습니다. 사용 가능한 필드의 목록을 보려면 TFS와 Project Server 통합에서 Project Server 필드 매핑에 대한 제한 사항를 참조하세요. |
|
targetToTfs |
Project Server의 업데이트를 Team Foundation Server와 동기화할 필드 매핑을 지정합니다. |
|
target |
Project Server에서 업데이트를 받는 대상을 지정합니다. |
|
provider |
업데이트 공급자 이름을 지정합니다. targetToTfs의 경우 유효한 값은 ProjectServerPublished뿐입니다. |
|
name |
Team Foundation에서 필드를 업데이트하는 Project의 필드 이름을 지정합니다. 기본 제공 필드 또는 Enterprise 사용자 지정 필드만 매핑할 수 있습니다. 사용 가능한 필드의 목록을 보려면 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의 통합을 위한 필드 매핑 관리
개념
TFS와 Project Server 통합에서 Project Server 필드 매핑에 대한 제한 사항
데이터 동기화를 지원하기 위해 TFS에 추가된 Project Server 필드
Team Foundation Server 및 Project Server의 통합 관리