Share via


TFS と Project Server の統合における XML 要素リファレンスのフィールド マッピング

フィールド マップをカスタマイズすることによって、どのフィールドを Visual Studio Team Foundation Server (TFS) および Microsoft Project Server で同期した状態に保ち、どのフィールドを Project Server のステータス キューおよび Team Foundation で更新するかを定義できます。

注意

TFS と Project Server の統合用のフィールド マップは、Microsoft Project のマッピング ファイルとは異なります。後者のファイルについては、「Microsoft Project のフィールド マッピング ファイルのカスタマイズ」を参照してください。

Project Server と同期するチーム プロジェクトをホストするチーム プロジェクト コレクションごとに、1 セットのフィールド マップを保持します。 フィールド マップを取得する場合は、コレクションからファイルにダウンロードできます。 ファイルを変更したら、そのファイルをコレクションにアップロードできます。これにより、そのコレクションに対して定義されているすべてのチーム プロジェクトに変更が適用されます。 フィールド マップをダウンロードまたはアップロードする方法の詳細については、「TFS と Project Server の間のフィールド マッピングのカスタマイズ」を参照してください。

このトピックの内容

  • 必須フィールド

  • マップされている既定のフィールド

  • 要素と属性のマッピング

  • 既定のフィールド マップ

必須フィールド

データ同期をサポートするには、次のフィールドをマップする必要があります。 作業をスケジュールするために使用するフィールドをカスタマイズしている場合は、使用するフィールドを参照するようにフィールド マップをカスタマイズする必要があります。

  • System.Title を pjTaskName にマップする必要があります。

  • System.AssignedTo を pjResourceNames にマップする必要があります。

  • Team Foundation で作業の開始日を追跡するために使用するフィールドを pjTaskStart にマップする必要があります。 既定では、このフィールドは Microsoft.VSTS.Scheduling.StartDate です。

  • Team Foundation で実績作業を追跡するために使用するフィールドを pjTaskFinish にマップする必要があります。 既定では、このフィールドは Microsoft.VSTS.Scheduling.FinishDate です。

マップされている既定のフィールド

TFS の各フィールドに対して 2 つのマッピングを指定できます。 1 つ目のマッピングでは、TFS のフィールドによって更新される Project のステータス キューのフィールドを指定します。 2 つ目のマッピングでは、TFS のフィールドを更新する Project のフィールドを指定します。 さらに、TFS のフィールドを作業項目フォームに表示するかどうかと、参照フィールドおよびミラー フィールドへの更新方法を指定できます。

既定では、マップされているすべての Project フィールドはミラー化されています。つまり、このフィールドの値は TFS に格納されます。

重要

ほとんどの構成では、既定のフィールド マップは、同期プロセスで必要になるため、削除しないでください。たとえば、Microsoft Solutions Framework (MSF) for Agile Software Development または CMMI (能力成熟度モデル統合) Process Improvement のプロセス テンプレートに基づいて作成されているチーム プロジェクトにエンタープライズ プロジェクト計画をマップする場合、既定のマップは削除しないでください。

ただし、Visual Studio Scrum のプロセス テンプレートを使用して作成されたチーム プロジェクトに計画をマップする場合は、既定のマップの一部を削除する必要が生じることがあります。プロジェクト コレクションに Scrum テンプレートを使用して作成されたチーム プロジェクトしか含まれていない場合、2 つのサーバー製品を構成するときにエラーが発生することがあります。最適な結果を得るには、マップ対象の作業項目に実績作業 (Microsoft.VSTS.Scheduling.CompletedWork) および最初の見積もり (Microsoft.VSTS.Scheduling.OriginalEstimate) を追加します。また、タスクの種類の定義から <EMPTY /> ワークフロー ステートメントを削除する必要もあります。詳細については、「スクラム プロセス テンプレートから作成されたチーム プロジェクトにマップするときに必要な変更」を参照してください。

次の表に、Team Foundation のフィールドに割り当てられている既定のマッピングを示します。 参照フィールドとミラー フィールドの更新方法を指定できます。 OnConflict を PSWins に設定すると、Team Foundation の値を Project Server の値で上書きできます。 OnConflict 属性を未指定のままにすると、フィールドに異なる値が保持されます。 詳細については、後の「FIELD 要素と属性」の表を参照してください。

ミラー化されたフィールドと同期プロセスの詳細については、「特定のフィールドに対する更新の管理方法について」を参照してください。

Team Foundation のフィールド

Project のフィールド

作業項目フォームの [Project Server] タブへのフィールドの表示 (displayTfsField)

作業項目フォームの [Project Server] タブへのミラー化されたフィールドの表示 (displayTfsMirror)

フィールドの更新 (OnConflict)

タイトル

タスク名

Project Server の値が Team Foundation の値を置き換えます。

担当者

リソース

Project Server の値が Team Foundation の値を置き換えます。

残存作業

Resource Remaining Work (リソースの残存作業時間) (ステータス キュー)

Task Remaining Work (タスクの残存作業時間) (Project Server)

それぞれの値が保持されます。

実績作業

Resource Actual Work (リソースの実績作業時間) (ステータス キュー)

Task Actual Work (タスクの実績作業時間) (Project Server)

それぞれの値が保持されます。

最初の見積もり

基準作業

Project Server の値が Team Foundation の値を置き換えます。

開始日

Resource Start (リソースの開始日) (ステータス キュー)

Task Start (タスクの開始日) (Project Server)

Project Server の値が Team Foundation の値を置き換えます。

終了日

Resource Finish (リソースの終了日) (ステータス キュー)

Task Finish (タスクの終了日) (Project Server)

Project Server の値が Team Foundation の値を置き換えます。

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 要素の属性を定義しています。

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

TARGET 要素の構文

次の構文では、target 要素の属性を定義しています。

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

フィールド名を指定するには、連結された表示名の先頭に "pj" を追加します。 たとえば、Status Manager のフィールド名は pjStatusManager、Custom 01 のフィールド名は pjCustom01 になります。

FIELD 要素と属性

次の表に、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

必ず指定します。 Project Server のフィールドの値を Team Foundation Server に格納するときに使用する参照名を指定します。 参照名の先頭に "Mirror." を追加できます。たとえば、System.Title の場合、Mirror.System.Title のように指定できます。

注意

ユーザーによって指定された Mirror フィールドは自動的に作成されます。ミラー フィールドを作業項目の種類の定義に追加する必要はありません。

displayTfsField

省略可能です。 既定では、この属性は true に設定されています。 この属性が true に設定されている場合、Team Foundation の作業項目フォームの [Project Server] タブにフィールドが表示されます。 この属性が false に設定されている場合、フィールドはフォームに表示されません。 既定では、"実績作業" および "残存作業" フィールドだけがフォームに表示されます。

displayTfsMirror

省略可能です。 既定では、この属性は true に設定されています。 この属性が true に設定されている場合、Team Foundation の作業項目フォームの [Project Server] タブにフィールドが表示されます。 この属性が false に設定されている場合、フィールドはフォームに表示されません。

onConflict

省略可能です。 同期エンジンによる参照フィールドの更新方法を指定します。 有効値は、PSWin のみです。

この属性が PSWin に設定されている場合、Project Server から発行された現在の値がミラーの値と異なるときに、参照フィールドの値が更新されます。

この属性を定義しないと、2 つのブック セットが保持されます。 つまり、Project の値が Team Foundation の値と異なることがあります。 既定では、常に Project の値で "タイトル"、"担当者"、"開始日"、および "終了日" の各フィールドの値が置き換えられます。 既定では、[実績作業] フィールドおよび [残存作業] フィールドのみが 2 つのブック セットを使用して保持されます。 詳細については、「Updates to Fields that Contain Hours」を参照してください。

tfsToTarget

Team Foundation によって更新される Project のフィールドの名前を指定します。

target

Team Foundation から更新を受け取るターゲットを指定します。

provider

更新プロバイダーの名前を指定します。 tfsToTarget の場合、有効値は ProjectServerStatusQueue のみです。

name

Team Foundation の値で更新される Project のフィールドの名前を指定します。 マップできるのは、Project Server の組み込みフィールドまたはエンタープライズ ユーザー設定フィールドだけです。 使用可能なフィールドの一覧については、「TFS と Project Server の統合での Project Server フィールドのマッピングの制限事項」を参照してください。

targetToTfs

Project Server と Team Foundation Server の更新を同期するようにフィールド マップを指定します。

target

Project Server から更新を受け取るターゲットを指定します。

provider

更新プロバイダーの名前を指定します。 targetToTfs の場合、有効値は ProjectServerPublished のみです。

name

Team Foundation のフィールドを更新する Project のフィールドの名前を指定します。 マップできるのは、組み込みフィールドまたはエンタープライズ ユーザー設定フィールドだけです。 使用可能なフィールドの一覧については、「TFS と Project Server の統合での 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 オプションを指定したときに定義される既定のフィールド マップの一覧を示しています。 これらのマッピングをファイルにダウンロードし、そのファイルに要素を追加したり、一覧内のフィールドの属性を変更したりできます。

データ同期に含める作業項目の種類を追加したときに、その種類に追加されるすべてのフィールドの一覧については、「データの同期をサポートするために 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 の統合の管理

その他の技術情報

TFS と Project Server の間のフィールド マッピングのカスタマイズ