ALLOWEDVALUES規則
利用者が一覧に示された値から選択して入力することを示す規則です。この規則のxml構文は次のようになります。
<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を保持している
<ALLOWEDVALUES expanditems="true"> <GLOBALLIST name="BoolValue" /> <LISTITEM value="[Project]\Testers" /> <LISTITEM value="item1" /> </ALLOWEDVALUES>
この場合、作業項目入力時に表示されるリストは、true, false, Testers, user1, user2, item1です。なお、グローバルリスト名はどのような設定の場合でも表示されません。
<ALLOWEDVALUES expanditems="true" filteritems="excludegroup"> <GLOBALLIST name="BoolValue" /> <LISTITEM value="[Project]\Testers" /> <LISTITEM value="item1" /> </ALLOWEDVALUES>
この場合、作業項目入力時に表示されるリストは、true, false, user1, user2, item1です。LISTITEMに指定している[GLOBAL]\Testersはグループを指しているため、この項目そのものは表示されません。
<ALLOWEDVALUES expanditems="false"> <GLOBALLIST name="BoolValue" /> <LISTITEM value="[Project]\Testers" /> <LISTITEM value="item1" /> </ALLOWEDVALUES>
この場合、作業項目入力時に表示されるリストは、Testers, item1です。GLOBALLISTであるBoolValueとグループである[Project]\Testersの中が展開されません。
<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構文は次のようになります。
<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規則との使い分けは任意の値を入力可能とするかどうかをポイントに検討してください。