CodeZine(コードジン)

特集ページ一覧

フィールドの規則を使ってTFSの作業項目を高度に作りこむ

Visual Studio Team System 徹底活用(4)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/10/02 14:00

目次

ALLOWEDVALUES規則

 利用者が一覧に示された値から選択して入力することを示す規則です。この規則のxml構文は次のようになります。

[構文]ALLOWEDVALUES規則
<ALLOWEDVALUES [expanditems="true|false"] [filteritems="excludegroups"] [for="適用グループ"] [not="除外グループ"]>
  <GLOBALLIST name="" />
  <LISTITEM value="" />
  <LISTITEM value="" />
</ALLOWEDVALUES>

 まず、サブ要素から確認します。ALLOWEDVALUESのサブ要素には、GLOBALLIST要素、または複数のLISTITEM要素を設定します。LISTITEM要素は、このフィールド内でのみ利用可能なリストの一覧を定義するための要素で、リテラル値のほか、TFSのグループ名を設定することができます。他のリスト項目とリストの値を共有したい場合には、リスト項目をTFS全体で共有するGLOBALLISTとして定義することもできます。GLOBALLISTを定義する場合は、事前にこれに名前を付けておく必要があります。GLOBALLISTの定義方法は後述しますが、使い方がやや面倒なため、初めのうちは面倒でもリストごとに項目を定義していくことをお勧めします。

 次にALLOWEDVALUEの属性を確認します。expanditems属性は任意属性で、設定する場合はtrueまたはfalseを設定します。trueに設定した場合、リスト内にリストにあたるもの([Project]\TestersなどのグループやGLOBALLIST)が含まれているとそれを再帰的に展開して、利用者に表示することができます。指定なしの場合はtrueに設定したのと同様になります。filteritems属性は任意属性で、設定する場合はexcludegroupsという文字列のみを指定できます。この属性を設定した場合、LISTITEM内のリストに当たる設定そのものは利用者に表示されなくなります。少し分かりにくいと思いますのでいくつか例を示しておきます。

 前提条件として以下を定義しておきます。

  • BoolValueはGLOBALLISTでリスト項目としてtrue, falseを保持している
  • [Project]\Testersはチームプロジェクトのグループでuser1, user2を保持している
[リスト5]expanditems="true"の場合
<ALLOWEDVALUES expanditems="true">
  <GLOBALLIST name="BoolValue" />
  <LISTITEM value="[Project]\Testers" />
  <LISTITEM value="item1" />
</ALLOWEDVALUES>

 この場合、作業項目入力時に表示されるリストは、true, false, Testers, user1, user2, item1です。なお、グローバルリスト名はどのような設定の場合でも表示されません。

[リスト6]expanditems="true", filteritems="excludegroup"の場合
<ALLOWEDVALUES expanditems="true" filteritems="excludegroup">
  <GLOBALLIST name="BoolValue" />
  <LISTITEM value="[Project]\Testers" />
  <LISTITEM value="item1" />
</ALLOWEDVALUES>

 この場合、作業項目入力時に表示されるリストは、true, false, user1, user2, item1です。LISTITEMに指定している[GLOBAL]\Testersはグループを指しているため、この項目そのものは表示されません。

[リスト7]expanditems="false"の場合
<ALLOWEDVALUES expanditems="false">
  <GLOBALLIST name="BoolValue" />
  <LISTITEM value="[Project]\Testers" />
  <LISTITEM value="item1" />
</ALLOWEDVALUES>

 この場合、作業項目入力時に表示されるリストは、Testers, item1です。GLOBALLISTであるBoolValueとグループである[Project]\Testersの中が展開されません。

[リスト8]expanditems="false", filteritems="excludegroup"の場合
<ALLOWEDVALUES expanditems="false" filteritems="excludegroup">
  <GLOBALLIST name="BoolValue" />
  <LISTITEM value="[Project]\Testers" />
  <LISTITEM value="item1" />
</ALLOWEDVALUES>

 この場合、作業項目入力時に表示されるリストは、item1です。GLOBALLISTであるBoolValueとグループである[Project]\Testersの中が展開されません。さらに、グループ名そのものも表示されません。

 以上4パターンを示しましたが、展開イメージは理解できましたか? パターンによって表示される項目が異なるため、用途を見極めて設定してください。なお、この規則が適用されているフィールドでは、利用者はリストの中から値を選択するのみで任意入力を行うことはできません。

GLOBALLISTとは

 フィールドの規則で、ALLOWEDVALUES、後述するSUGGESTEDVALUES、PROHIBITEDVALUES規則では、サブ要素として複数のLISTITEM要素を利用して、リスト項目を定義しています。しかし、それでは複数の規則間でリスト項目を共有できません。そのため、各規則間でリスト項目を共有できるようにGLOBALLISTという機能が用意されています。これを定義する場合、GLOBALLISTのxml構文は次のようになります。

[構文]GLOBALISTのxml構文
<GLOBALLISTS>
  <GLOBALLIST name="">
    <LISTITEM value="" />
    <LISTITEM value="" />
  </GLOBALLIST>
</GLOBALLISTS>

 GLOBALISTのname属性は必須属性でこのリストに名前を付けます。ただし、この名前はTFS内で一意になっている必要があるため、他のGLOBALLISTと調整していく必要があります。また、このGLOBALISTを作業項目定義の中で利用する場合、GLOBALLISTが事前にTFSに登録されている必要があります。つまり、作業項目定義を登録する前にGLOBALLISTが作成されていなければいけません。しかし、第1回、第2回で扱っていたプロセステンプレートには、GLOBALLISTそのものを定義するための領域がありません(GLOBALLISTはあくまで作業項目定義のためのスキーマの一部でしかないため)。このため、プロセステンプレートの段階でGLOBALLISTを登録するのは極めて面倒な作業になります。

 ただし、プロセステンプレートの一部としてではなく、別物として考え、管理できるのであれば、TFSに対してGLOBALLISTのインポート、エクスポートをする機能が用意されているため、これを利用して事前に登録しておくことは可能です。詳細は割愛させていただきますが、これらについて興味がある場合にはMSDNライブラリの「glimport.exe」および「glexport.exe」を参照してください。

SUGGESTEDVALUES規則

 利用者が一覧に示された値から選択して入力することを示す規則です。この規則はALLOWEDVALUES規則とよく似て言いますが、ALLOWEDVALUES規則では任意の値を入力できないのに対して、この規則ではリスト項目にない任意の値を入力できる点が異なります。この規則のxml構文やそこに含まれる属性、サブ要素、設定の仕方については、ALLOWEDVALUES規則と同様のため割愛します。

 ALLOWEDVALUES規則との使い分けは任意の値を入力可能とするかどうかをポイントに検討してください。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Visual Studio Team System 徹底活用

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト りばてぃ(リバティ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5