SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Visual Studio Team System 徹底活用

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

Visual Studio Team System 徹底活用(4)

  • X ポスト
  • このエントリーをはてなブックマークに追加

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規則との使い分けは任意の値を入力可能とするかどうかをポイントに検討してください。

次のページ
まとめ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Visual Studio Team System 徹底活用連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4346 2009/10/02 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング