条件付き値および条件付き規則の割り当て
WHEN、WHENNOT、WHENCHANGED、WHENNOTCHANGED の各要素を使用して、条件に従って実行される規則を定義できます。これらの規則を使用して、定義された句が True の場合に実行される要素を定義します。特定のフィールドに割り当てられている値またはユーザーが特定のフィールドを変更したかどうかに基づいて、条件を定義できます。たとえば、依存選択リストを作成して、詳細なセキュリティやカスタム動作を指定できます。
フィールドの条件は、追加の要素として FIELD (定義) 要素または FIELD (ワークフロー) 要素内に記述します。これらの要素の詳細については、「FIELD (定義) 要素」および「FIELD (ワークフロー) 要素」を参照してください。
WHEN 句の簡単な例を次に示します。
<FIELD . . . >
<WHEN field="referenceName" value="yyy">
</FIELD>
この句は、フィールド refname の値が "yyy" の場合は、この FIELD 要素内のすべてが適用されることを意味します。フィールドは、有効なフィールド参照名である必要があります。詳細については、「作業項目トラッキング オブジェクトの名前付け規則」を参照してください。
[!メモ]
value 属性は、大文字と小文字を区別しません。そのため、フィールド参照名に "YYY" が設定されている場合、値 "yyy" または "YYY" で一致します。
このトピックの内容
条件付き要素の構文構造
依存必須フィールドの定義
条件付き選択リストの定義
ユーザーが別のフィールドを変更した場合のフィールドの定義 (WHENCHANGED)
ユーザーがフィールドを変更しない場合に基づくフィールド値の定義 (WHENNOTCHANGED)
条件付き要素の構文構造
次の表に、FIELD (定義) 要素または FIELD (ワークフロー) 要素の子要素として指定できる条件付き規則を示します。これらの要素では、次の属性のいずれかまたは両方を使用できます。
field: フィールドを説明する文字列です。1 ~ 255 文字を含む必要があります。
value: 指定されたフィールドにこの値を設定すると、WHEN 要素および WHENNOT 要素の規則が現在のフィールドに適用されます。
要素 |
構文 |
Description |
---|---|---|
WHEN |
|
別のフィールドが特定の値を持つときに現在のフィールドに適用する 1 つまたは複数の規則を指定します。現在のフィールドは、親要素によって定義されます。 この指定されたフィールドに指定された値を設定すると、この要素の規則が現在のフィールドに適用されます。 |
WHENNOT |
|
現在のフィールドに 1 つ以上の規則を適用する条件を指定します。規則は、別のフィールドの値が変更されるときに現在のフィールドに適用されます。現在のフィールドは、親要素によって定義されます。 指定されたフィールドに指定された値が設定されていないときに、この要素に含まれる規則が現在のフィールドに適用されます。 |
WHENCHANGED |
|
現在のフィールドに 1 つ以上の規則を適用する条件を指定します。規則は、作業項目のリビジョンで別のフィールドの値が変更される場合に現在のフィールドに適用されます。現在のフィールドは、親要素によって定義されます。 |
WHENNOTCHANGED |
|
現在のフィールドに 1 つ以上の規則を適用する条件を指定します。規則は、作業項目のリビジョンで別のフィールドの値が変更されない場合に現在のフィールドに適用されます。現在のフィールドは、親要素によって定義されます。 |
次の表に、WHEN、WHENNOT、WHENCHANGED、または WHENNOTCHANGED の各要素を使用して指定された条件句が true の場合に、条件に基づく各規則 (省略可能) が親フィールドにどのように適用されるかを示します。詳細については、「作業項目フィールドの条件の設定」を参照してください。
要素 |
Description |
---|---|
指定された値リストの値が親フィールドに設定されている必要があります。 |
|
親フィールドの既存の値が他の規則に違反する場合でも、その値が許容されます。親フィールドの値を変更した場合、この要素は適用されません。 |
|
親フィールドの値を NULL に変更することはできますが、他の値に変更することはできません。 |
|
3 番目のフィールドの値が親フィールドに自動的にコピーされます。3 番目のフィールドは、COPY 要素で指定します。 |
|
この要素により、親フィールドの既定値が指定されます。 |
|
親フィールドに値を設定することはできません。 |
|
親フィールドが固定されます。フィールドが固定されると、その値を NULL に変更することはできますが、他の値に変更することはできません。 |
|
親フィールドの値は、指定されたパターンに一致する必要があります。 |
|
親フィールドの値は 3 番目のフィールドの値に一致させることができません。3 番目のフィールドは、NOTSAMEAS 要素で指定します。 |
|
親フィールドに列挙リストの値を設定することはできません。 |
|
親フィールドは読み取り専用になります。 |
|
親フィールドに NULL 値を設定することはできません。 |
|
親フィールドは、指定されたサーバー コンポーネントから値を取得します。有効なサーバー コンポーネントは、clock (作業項目が更新された時刻) と currentuser (作業項目を更新したユーザーの ID) です。 |
|
列挙リストに親フィールドの推奨値が含まれます。 |
|
指定されたユーザーだけが親フィールドを変更できます。 |
ページのトップへ
依存必須フィールドの定義
別のフィールドに特定の値が設定されている場合にのみ、フィールドを必須フィールドとして指定できます。次の例では、顧客からバグが報告されたときに、顧客の重大度レベルを指定する必要があります。バグが顧客によって報告されていない場合は、顧客の深刻度レベルは必要ありません。
<FIELD refname="MyCorp.Severity" name="Customer Severity" type="String">
<ALLOWEDVALUES>
<LISTITEM value="Blocking" />
<LISTITEM value="Major" />
<LISTITEM value="Minor" />
</ALLOWEDVALUES>
<WHEN field="MyCorp.CustomerReported" value="true">
<REQUIRED />
</WHEN>
</FIELD>
条件付き選択リストの定義
次の例は、ProblemCharacteristic フィールドの値が Documentation に設定されているかどうかに基づいて、Problem Type フィールドの許可値が限定される条件付き選択リストを示しています。
<FIELD refname="MyCorp.ProblemType" name="Problem Type" type="String">
<WHEN field="MyCorp.ProblemCharacteristic" value="Documentation">
<ALLOWEDVALUES>
<LISTITEM value="Spelling Error" />
<LISTITEM value="Bad Format" />
<LISTITEM value="Missing Info" />
</ALLOWEDVALUES>
</WHEN>
</FIELD>
ユーザーが別のフィールドを変更した場合のフィールドの定義 (WHENCHANGED)
次の例では、ユーザーが MyCorp.State フィールドの値を変更した場合に、サーバー クロックに表示されるように、 MyCorp.StateDate フィールドが現在の日付と時刻に設定されます。
<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<WHENCHANGED field="MyCorp.State">
<COPY from="clock" />
</WHENCHANGED>
</FIELD>
次の例では、ユーザーが MyCorp.State フィールドの値を変更した場合に、MyCorp.Status フィールドの値がクリアされます。
<!-- Clear the status field whenever someone changes the state -->
<FIELD refname="MyCorp.Status" name="Status" type="String">
<WHENCHANGED field="MyCorp.State">
<COPY from="value" value="">
</WHENCHANGED>
</FIELD>
ユーザーがフィールドを変更しない場合に基づくフィールド値の定義 (WHENNOTCHANGED)
次の例では、ユーザーが MyCorp.State フィールドの値を変更しない場合に、MyCorp.StateDate フィールドが読み取り専用になります。
<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<!-- Make the StateDate field read-only when the State field is not changed -->
<WHENNOTCHANGED field="MyCorp.State">
<READONLY />
</WHENNOTCHANGED>
</FIELD>