クエリ、レポート、ワークフローをサポートするフィールドの変更または変更

チーム プロジェクトには、チーム プロジェクトの作成に使用されたプロセス テンプレートに基づく 100 以上のデータ フィールドが含まれます。 各フィールドは、名前、属性、および規則の組み合わせに関連付けられます。 既存のフィールドを変更するか、または追加データ要件の追跡をサポートするカスタム フィールドを追加できます。 たとえば、ドロップダウン メニューの選択リストのカスタマイズ、既定値を指定するか取得可能値を制限する規則の追加、フィールド属性の変更を行うことができます。

フィールド規則の追加、カスタム フィールドの追加、または作業項目フォームのフィールドのラベルの変更を行うには、作業項目の種類 (WIT) の XML 定義を編集します。 フィールドの属性または名前を変更するには、witadmin コマンド ライン ツールを使用します。

フィールド定義名、属性、およびルール

選択リストをカスタマイズする

選択リストは、作業項目フォームのドロップダウン メニューやクエリ エディター内の [値] 列に表示される、列挙された値です。 選択リストのカスタマイズに使用する方法はフィールドによって異なります。

汎用文字列または整数フィールド

作業項目フォームの大半の文字列または整数フィールドの選択リストを変更する場合には、WIT 定義を編集します。 たとえば、カスタムの "解決策" フィールドおよび選択リストを追加するには、次のような XML コードを指定します。



カスタム フィールドと選択リスト

カスタム フィールドに対応する選択リスト
<FIELD name="Resolution" refname="MyCompany.Resolution" type="String">    
<ALLOWEDVALUES>
   <LISTITEM value="By Design" />
   <LISTITEM value="Duplicate" />
   <LISTITEM value="External" />
   <LISTITEM value="Fixed" />
   <LISTITEM value="Not Repro" />
   <LISTITEM value="Postponed" />
   <LISTITEM value="Won’t Fix" />
</ALLOWEDVALUES>
</FIELD>

規則では、リストの組み合わせ、リストの適用対象の制限、作業項目フォームにリストを表示する条件の設定がサポートされます。 規則により、配布リストを展開して個々のメンバーを表示するか、オプションで expanditems 属性と filteritems 属性を使用してリストをフィルター処理するかを制御できます。 グローバル リストを使用すると、WIT またはチーム プロジェクトで共有されるリストの更新に必要となる作業を最小限に抑えることができます。

詳細については、「選択リストの定義」および「グローバル リストの定義」を参照してください。

他の手段によって選択リストが定義される特定のフィールド

次のフィールドについて選択リストを変更する場合については、対応するトピックを参照してください。

選択リストが関連付けられた他のすべてのフィールド (アクティビティオートメーションの状態作業分野優先順位など) の場合、作業項目フィールドのインデックスからこれらのフィールドの定義を見つけることができます。

フィールドに規則を追加する

カスタム フィールドを追加するか、またはフィールドに規則を追加する場合は、WIT 定義を編集します。 規則の適用対象を特定のユーザーまたはグループに制限できます。 ほとんどの規則では、規則の適用対象外を絞り込むための for または not 属性がサポートされています。

たとえば、次のコード スニペットを使用すると、作業項目の作成後に "スタック順位" フィールドを変更できるのは、顧客定義の TFS グループである管理チームのメンバーのみであるという規則を適用できます。

<FIELD name="Stack Rank" refname="Microsoft.VSTS.Common.StackRank" type="Double" reportable="dimension">
   <FROZEN not="[project]\Management Team" />
   <HELPTEXT>Work first on items with lower-valued stack rank. Set in triage.</HELPTEXT>
</FIELD>

次の操作を実行するための規則を適用します。

目的

使用する XML 要素

ツール ヒントを指定します。

HELPTEXT

フィールドに指定できる値を修飾します。

CANNOTLOSEVALUE、EMPTY、FROZEN、NOTSAMEAS、READONLY、および REQUIRED

値をコピーするか、既定値を指定します。

COPY、DEFAULT、および SERVERDEFAULT

フィールドを変更できるユーザーを制限します。

VALIDUSER、for、および not のフィールド規則の属性

パターン マッチを文字列フィールドに適用します。

MATCH

その他のフィールドの値に基づいて規則を条件付きで適用します。

WHEN、WHENNOT, WHENCHANGED、および WHENNOTCHANGED

フィールド規則の適用の詳細については、「すべての FIELD XML 要素のリファレンス」を参照してください。

規則またはカスタム フィールドを追加するために WIT XML 定義ファイルを編集する

規則を追加するか、またはカスタム フィールドを追加するには、WIT 定義ファイルのエクスポート、編集、およびインポートを行います。

WIT オブジェクトをカスタマイズするプロセス

witadmin を使用して、定義ファイルをインポートおよびエクスポートできます。 プロセス エディターなど、使用可能な他のツールは、TFS Power Tools、または CodePlex で使用できるコミュニティ リソース プロジェクトの TFS Team Project Manager からダウンロードすれば利用可能です。

データの追跡に使用するフィールドはすべて WIT 定義ファイルに追加する必要があります。 この点は、WIT ごとに自動的に定義されるシステム フィールドを除くすべてのシステム フィールド (その参照名が System. で始まるフィールド) に当てはまります。

カスタム フィールドを追加するには、WIT 定義を編集して、FIELD セクションに FIELDS 要素を追加し、Control セクションに FORM 要素を追加する必要があります。

カスタム フィールドを追加するには

  1. チーム プロジェクトのプロジェクト管理アクセス許可を持っていない場合は、これらのアクセス許可を取得します

  2. Visual Studio またはチーム エクスプローラーがインストールされている環境でコマンド プロンプト ウィンドウを開き、次のように入力します。

    cd %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE

    64 ビット版の Windows で、%programfiles% を %programfiles(x86)% に置き換えます。 チーム エクスプローラーは無料でダウンロードできます。

  3. WIT 定義をエクスポートします。

    witadmin exportwitd /collection:CollectionURL /p:ProjectName /n:TypeName /f:"DirectoryPath/FileName.xml"

    CollectionURL の例は、「http://fabrikamprime:8080/tfs/DefaultCollection」となります。

  4. 対象の XML ファイルで、FIELDS で始まる、種類のフィールドを定義したセクションを探します。

  5. 追加するカスタム フィールドの名前を指定する FIELD 要素を追加します。 必須属性である name (表示名)、refname (参照名)、および type (種類) は必ず指定する必要があります。 詳細については、「FIELD (定義) 要素リファレンス」を参照してください。

    次のコードでは、Requestor という名前と FabrikamFiber.MyTeam.Requestor という参照名でカスタム フィールドを指定し、許容値の選択リストを追加して、既定値を Customer にしています。

    <FIELD name="Requestor" refname="FabrikamFiber.MyTeam.Requestor" type="String" reportable="Dimension">
       <ALLOWEDVALUES>
          <LISTITEM value="Customer" />
          <LISTITEM value="Executive Management" />
          <LISTITEM value="Other" />
          <LISTITEM value="Support" />
          <LISTITEM value="Team" />
          <LISTITEM value="Technicians" />
          <DEFAULTVALUE value="Customer" />
        </ALLOWEDVALUES>
    </FIELD>
    

    ヒント

    リスト内の要素は、XML 定義ファイルでの入力方法には関係なく、常にアルファベット順に表示されます。

    参照名、つまり refname は、そのフィールドのプログラミング用の名前です。他のすべての規則は、この refname を参照します。詳細については、「作業項目トラッキング オブジェクトの名前付け規則」を参照してください。

  6. Control セクション内に FORM 要素を追加します。これにより、フォーム内の目的の要素グループにカスタム フィールドが表示されます。

    たとえば、次のコード スニペットでは、作業項目フォームで理由のフィールドの下に要求元のフィールドが追加されて表示されます。

    <Column PercentWidth="50">
       <Group Label="Status">
          <Column PercentWidth="100">
             <Control FieldName="System.AssignedTo" Type="FieldControl" Label="Assi&amp;gned To:" LabelPosition="Left" />
             <Control FieldName="System.State" Type="FieldControl" Label="&amp;State:" LabelPosition="Left" />
             <Control FieldName="System.Reason" Type="FieldControl" Label="Reason:" LabelPosition="Left" ReadOnly="True" />
             <Control FieldName="FabrikamFiber.MyTeam.Requestor" Type="FieldControl" Label="Requestor:" LabelPosition="Left" ReadOnly="True" />
          </Column>
       </Group>
    </Column>
    

    ヒント

    作業項目トラッキングのスキーマ定義では、FORM 要素のすべての子要素が Camel 形式で、その他すべての要素がすべて大文字で定義されます。種類の定義ファイルの検証中にエラーが発生した場合は、要素の大文字と小文字の構造を確認してください。また、開始タグと終了タグの大文字と小文字の構造は、XML 構文の規則に従って一致する必要があります。

    詳細については、「Control XML 要素のリファレンス」を参照してください。

  7. WIT 定義ファイルをインポートします。

    witadmin importwitd /collection:CollectionURL /p:ProjectName /f:"DirectoryPath/FileName.xml"

  8. TWA またはチーム エクスプローラーのいずれかを開いて、変更を表示します。 クライアントが既に開いている場合は、ページを最新の情報に更新します。

    次の図に示すように、プロダクト バックログ項目の作業項目フォームに、新しいフィールドが表示されました。

    型定義およびフォームに追加されたカスタム フィールド

witadmin の使用の詳細については、「作業項目の種類のインポート、エクスポート、および管理 [witadmin]」を参照してください。

作業項目フォームのフィールド ラベルを変更するには

  1. WIT 定義ファイルをエクスポートします。

    witadmin exportwitd /collection:CollectionURL /p:ProjectName /n:TypeName /f:"DirectoryPath/FileName.xml"

  2. FORM セクションおよび Layout セクションで、変更するフィールドの定義を見つけます。 この例では、"Title" フィールドのラベルを変更します。

    <Column PercentWidth="70">
      <Control Type="FieldControl" FieldName="System.Title" Label="Title" LabelPosition="Left" />
    </Column>
    
  3. このフィールドのラベルを変更して、この特定のチーム プロジェクトに取り組んでいるポルトガル支店が、作業項目フォームを操作するときに Title フィールドの名前を理解できるようにします。 "タイトル" フィールドに、タイトルを意味するポルトガル語 (Titulo) を含めます。

    <Column PercentWidth="70">
      <Control Type="FieldControl" FieldName="System.Title" Label="Title (Título):" LabelPosition="Left" />
    </Column>
    
  4. WIT 定義ファイルをインポートします。

    witadmin importwitd /collection:CollectionURL /p:ProjectName /f:"DirectoryPath/FileName.xml"

既存のフィールドの属性を変更する

witadmin changefield を使用して、既存のフィールドの属性を変更します。 たとえば次のコマンドでは、MyCompany.Type の表示名を Evaluation Method に変更します。

witadmin changefield /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:MyCompany.Type /name:"Evaluation Method"

次の表に、witadmin changefield を使用して変更できる属性について、概要を示します。

属性

説明

データ型

フィールドに設定できるデータの種類を指定します。 一般に、フィールドのデータ型は、いったん定義されると変更できません。 フィールドのデータ型を切り替えられるのは、HTML または PlainText の種類のフィールドのみです。

表示名

表示名は作業項目クエリのドロップダウン メニューに表示され、チーム プロジェクト コレクション内で定義されたすべてのフィールドで一意である必要があります。 表示名は、作業項目フォームに表示されるフォーム ラベルとは異なる場合があります。

Indexable

フィールドをフィルター処理する際にクエリの応答時間が改善されるように、フィールドのインデックス作成を有効にすることができます。 既定では、"担当者"、"作成日"、"変更者"、"状態"、"理由"、"区分 ID"、"イテレーション ID"、"作業項目の種類" の各フィールドにインデックスが付けられます。

レポート属性

レポートに表示されるフィールドの名前、レポートの参照名、レポートの種類を変更できます。 レポートの表示名はローカライズ可能です。

レポートの種類で、OLAP キューブを処理するときにフィールドのデータをリレーショナル ウェアハウス データベースまたはリレーショナル ウェアハウス データベースと OLAP キューブの両方に書き込むかどうか、または事前に計算した値の合計を生成するかどうかが決定されます。

既定のレポート可能フィールドの完全な一覧については、「Visual Studio ALM のレポート可能フィールド参照」を参照してください。 OLAP キューブの詳細については、「Visual Studio の Analysis Services キューブで用意されているパースペクティブとメジャー グループ」を参照してください。

同期

ユーザー アカウントに関連付けられたフィールドの Active Directory との同期を有効または無効にできます。

Q & A

Q: どのようなカスタマイズが可能ですか。 また、TFS のアップグレード後も機能の構成ウィザードを使用してチーム プロジェクトを更新できますか。

A: カスタム フィールドの追加、選択リストのカスタマイズ、領域およびイテレーション パスの追加または修正、フィールドへの規則の追加が可能です。 機能の構成ウィザードは、チーム プロジェクトを更新し、最新機能へのアクセスを可能にします。

実行しても問題ないその他のカスタマイズと、避けることが望ましいカスタマイズについては、「作業追跡エクスペリエンスのカスタマイズ: カスタマイズの前に、メンテナンスおよびアップグレードの影響について理解する」を参照してください。

Q: チーム プロジェクトに既に定義されているフィールドとそれらの属性は、どこで知ることができますか。

A: TFS の既定のプロセス テンプレートで定義されているフィールドの索引については、「Visual Studio ALM の作業項目フィールド参照」を参照してください。

作業項目フィールドの変更できる属性に加えて、各フィールドには変更できず、事実上、非表示の属性がいくつか存在します。 作業項目フィールド エクスプローラー ツールを使用して、これらのフィールドの割り当てを参照することができます。 TFS パワー ツール のインストール後に、プロセス エディター パワー ツールからこのツールへアクセスします。

作業項目フィールド エクスプローラー

作業項目フィールド エクスプローラー

各属性の説明は、次の記事「作業項目フィールドの属性 - 変更できる属性とできない属性」を参照してください。.

Q: テスト、ビルド、バージョン管理との統合をサポートするフィールドをどのようにして追加しますか。

A: いくつかの WIT のフィールドには、Team Foundation ビルド、Microsoft テスト マネージャー、Team Foundation バージョン管理と統合される自動化されたプロセスによって生成される情報が含まれます。 これらのフィールドのいずれかをカスタム WIT に追加するには、このトピックで先に説明した手順に従って WIT 定義を編集します。

たとえば、バグの種類の定義に表示される "発見されたビルド" と "ビルドに統合" のフィールドを追加できます。 これらのフィールドは、バグをそのバグが発見されたビルドや修正されたビルドと関連付けます。 作業項目の種類の定義にこれらのフィールドを追加するには、次のコード スニペットを使用できます。

<FIELD name="Found In" refname="Microsoft.VSTS.Build.FoundIn" type="String" reportable="dimension">
    <HELPTEXT>Product build number (revision) in which this item was found</HELPTEXT>
</FIELD>
<FIELD name="Integration Build" refname="Microsoft.VSTS.Build.IntegrationBuild" type="String" reportable="dimension">
    <HELPTEXT>Product build number this bug was fixed in</HELPTEXT>
</FIELD>

詳細については、「テスト、ビルド、バージョン管理との統合をサポートするフィールド」を参照してください。

Q: 簡単な選択リストではなくグローバル リストを使用する必要があるのはいつですか。

A: 複数の WIT またはチーム プロジェクト間でリストを使用するときは、そのリストをグローバル リストとして維持すると、保守の要件が最小限に抑えられます。 また、リストの一部を WIT またはチーム プロジェクト間で異なって表示する必要がある場合は、選択リストの一部にグローバル リストを定義できます。 詳細については、「選択リストの定義」および「グローバル リストの定義」を参照してください。

Q: システム フィールドの変更に制限はありますか。

A: できます。 システム フィールドの名前を変更することはできません。また、規則によってはシステム フィールドに適用できない場合があります。 たとえば、作業項目の作成者、変更者、または終了者の追跡に使用されるフィールドや、システムで使用される日付/時刻フィールドをコピーしたり空に設定したりはできません。

システム フィールドの名前は、すべて "System" というプレフィックスで始まります (System.ID など)。 WIT 定義に含めるかどうかにかかわらず、すべての WIT に対してすべてのシステム フィールドが定義されます。 各フィールドの詳細については、「Visual Studio ALM の作業項目フィールド参照」を参照してください。

Q: 規則が評価される順序はありますか。

A: はい、あります。ただし、いくつかの要因によってシステムが複数の規則を評価する方法は変わります。最初から最終的な結果が確定されるわけではありません。 予期される動作と相互作用については、「作業項目フィールドへの規則の適用」を参照してください。

Q: レポートをサポートするためのフィールドの名前付け規則を教えてください。

A: フィールドを追加するか既存のフィールドの属性を変更することで、レポート機能をサポートできます。 フィールドを追加または変更するときは、系統的な名前を付けて Analysis Services キューブのフィールドを検索できるようにします。これは、フォルダー内でフィールドが論理的にグループ化されるためです。 詳細については、「レポート作成をサポートするための作業項目フィールドの追加および変更」を参照してください。

Q: "担当者" フィールドに表示される名前の数を制限する方法はありますか。

A: できます。 既定では、[担当者] フィールドのドロップダウン メニューに、TFS へのアクセスが許可されたすべてのユーザーが表示されます。 これが、既定の有効ユーザー グループです。 この規則には例外があり、Team Web Access において、作業項目の割り当てをサポートするコンテキスト メニューはチームのメンバーに限定されます。

セキュリティ上の制限を適用する最も効率的な方法は、Windows または TFS で管理するカスタム グループを作成することです。

  1. 使用するセキュリティ グループを作成し、そのグループにアカウントを追加します。 たとえば、Team Contributors という新しいグループを作成します。 「チーム プロジェクトへのユーザーの追加」を参照してください。

  2. ユーザーのセットを制限する作業項目の各種類の定義ファイルを変更します。 [担当者] フィールドの VALIDUSER 要素定義に FIELD 要素を追加し、TFS グループを指定します。

    たとえば、次のコード スニペットをタスク定義に追加すると、[担当者] フィールドのユーザーのセットを、TFS チームのタスク グループに追加されたメンバーのみに制限できます。

    <FIELD name="Assigned To" refname="System.AssignedTo" type="String" reportable="dimension" syncnamechanges="true">
       <HELPTEXT>The person currently working on this task</HELPTEXT>
       <ALLOWEXISTINGVALUE />
       <VALIDUSER group="Team Contributors" />
    </FIELD>
    

    ALLOWEXISTINGVALUE 要素を指定することで、メンバーがチームを辞めたり、プロジェクトの貢献者として登録されなくなったりしたときに発生する検証エラーを回避します。

Q: フィールドにカスタム コントロールを追加するにはどうすればよいですか。

A: 作業項目を追跡するためのオブジェクト モデルを使用して、バグ、タスク、その他の WIT をプログラムで作成、変更、検索できます。 作業項目フォームに機能を追加する独自のカスタム コントロールを作成することもできます。

たとえば CodePlex プロジェクトの TFS 作業項目追跡のカスタム コントロール を通して利用できる、次のカスタム コントロールを追加することができます。

  • HTML フィールドに対するイメージの切り取りと貼り付け操作を実行できるスクリーンショット コントロール。

  • Web ページをホストしてフィールドの値をその Web ページに渡すことができる Web ブラウザー コントロール。

  • チェック ボックスの一覧を表示することでフィールドへの複数値の入力をサポートする複数値コントロール。

Q: プロジェクト TFS 統合に対応するフィールド マッピングを変更するにはどうすればよいですか。

A: 既定の TFS プロセス テンプレートから作成されたチーム プロジェクトには、既定の Microsoft Project マッピング ファイルが含まれます。 TFS に保存された作業項目を計画および追跡するために Project を使用している場合、追加プロジェクト フィールドをマップするか、または TFS フィールドを発行および更新することが必要になる場合があります。 このためには、Microsoft Project マッピング ファイルをカスタマイズします。

TFS 作業項目で Project を使用する方法については、「Project を使用したバックログとタスクの作成」を参照してください。

Q: 多数のカスタム フィールドを管理するための最適な方法は何ですか。

A: 複数の WIT または複数のチーム プロジェクトで使用されるカスタム フィールドを多数追加する必要がある場合は、グローバル ワークフローを使用します。 グローバル フィールド セットを維持し、保守作業を単純化することにより、グローバル ワークフローを使用してリストを抽出できます。 グローバル ワークフローに関する XML 要素のリファレンスを参照してください。

Q: フィールドを削除する方法を教えてください。

A: 特定の作業項目の種類からフィールドを削除した場合、そのフィールドがどの作業項目の種類からも参照されなくなっていても、コレクションまたはデータベース サーバーからは削除されません。 フィールドを削除するには、次の手順に従います。

  1. すべての WIT 定義、およびそれを参照するすべてのグローバル ワークフローから FIELD 定義を削除します。

  2. フィールドが使用中でないことを確認します。 次に例を示します。

    witadmin listfields /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:MyCompany.CustomContact
    
    Field: MyCompany.CustomContact
    Name: Custom Contact
    Type: String
    Reportable As: dimension
    Use: Not In Use
    Indexed: False
    
  3. フィールドを削除します。 次に例を示します。

    witadmin deletefield /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:MyCompany.CustomContact
    
  4. 削除したフィールドがレポート可能であった場合は、古いフィールドとその値を削除するために、データ ウェアハウスをリビルドする必要があります

詳細については、「作業項目フィールドの管理 [witadmin]」を参照してください。

Q: 他にカスタマイズできる区分にはどのようなものがありますか。

A:Visual Studio TFS 内で構成とカスタマイズを実行できる対象をエンド ツー エンドで表示」を参照してください。

Q: 他に質問がある場合は、どこに問い合わせればよいですか。

A: Team Foundation Server のプロジェクト管理と作業項目に関するフォーラムで、回答の検索や質問の投稿を行うことができます。