条件付き値および条件付き規則の割り当て
条件付きで実行される規則を定義するには、WHEN、WHENNOT、WHENCHANGED、および WHENNOTCHANGED 要素を使用します。 これらの規則は、定義された句が True の場合にどの要素を実行するかを定義するために使用します。 条件は、特定のフィールドにどの値を割り当てるか、またはユーザーが特定のフィールドを変更するかどうかに基づいて定義できます。 たとえば、詳細なセキュリティまたはカスタム動作を提供するために従属選択リストを作成できます。
フィールド条件は、FIELD (定義) 要素または FIELD (ワークフロー) 要素の中にリストする追加の要素です。 これらの要素の詳細については、「FIELD (定義) 要素リファレンス」および「FIELD (ワークフロー) 要素」を参照してください。
次のコードは、WHEN 句の簡単な例です。
<FIELD . . . >
<WHEN field="referenceName" value="yyy">
</FIELD>
この句は、フィールド refname の値が「yyy」である限り、この FIELD 要素の範囲内にあるものは適用されることを意味します。 フィールドは有効なフィールド参照名である必要があります。 詳細については、「作業項目トラッキング オブジェクトの名前付け規則」を参照してください。
注意
値の属性は、大文字と小文字を区別しません。そのため、フィールド参照名に「YYY」が含まれる場合、一致には「yyy」および「YYY」の値が含まれます。
このトピックの内容
条件付き要素の構文構造
従属必須フィールドの定義
条件付き選択リストの定義
ユーザーが別のフィールドを変更した場合のフィールドの定義 (WHENCHANGED)
ユーザーがフィールドを変更しなかった場合に基づいたフィールドの定義 (WHENNOTCHANGED)
条件付き要素の構文構造
次の表は、FIELD (定義) 要素または FIELD (ワークフロー) 要素の子要素として指定できる条件付き規則について説明しています。 これらの要素は次の 1 つまたは複数の属性を受け入れます。
field: フィールドを説明する文字列。 1 ~ 255 個の文字を含む必要があります。
value: 指定したフィールドにこの値がある場合、WHEN および WHENNOT 要素にある規則が現在のフィールドに適用されます。
要素 |
構文 |
説明 |
---|---|---|
WHEN |
|
別のフィールドが特定の値を持つときに現在のフィールドに適用する 1 つまたは複数の規則を指定します。 現在のフィールドは、親要素によって定義されます。 指定したフィールドに指定した値がある場合、この要素にある規則が現在のフィールドに適用されます。 |
WHENNOT |
|
現在のフィールドに 1 つ以上の規則を適用する場合の条件を指定します。 規則は、別のフィールドの値が変更すると現在のフィールドに適用されます。 現在のフィールドは、親要素によって定義されます。 指定したフィールドに指定した値がない場合、この要素にある規則が現在のフィールドに適用されます。 |
WHENCHANGED |
|
現在のフィールドに 1 つ以上の規則を適用する場合の条件を指定します。 規則は、作業項目のリビジョンで別のフィールドの値が変更された場合に現在のフィールドに適用されます。 現在のフィールドは、親要素によって定義されます。 |
WHENNOTCHANGED |
|
現在のフィールドに 1 つ以上の規則を適用する場合の条件を指定します。 規則は、作業項目のリビジョンで別のフィールドの値が変更されなかった場合に現在のフィールドに適用されます。 現在のフィールドは、親要素によって定義されます。 |
次の表は、WHEN、WHENNOT、WHENCHANGED、または WHENNOTCHANGED 要素を使って指定する条件付きの句が true の場合に、それぞれのオプションの条件付き規則がどのように親フィールドに適用されるかを説明しています。 詳細については、「作業項目フィールドへの規則の適用」を参照してください。
要素 |
説明 |
---|---|
親フィールドの値は、指定した値のリストから来る必要があります。 |
|
既に存在する親フィールドの値は、他の規則に違反する場合でも許可されます。 この要素は、親フィールドの値が変更された場合には適用されません。 |
|
ユーザーは親フィールドの値を NULL に変更できますが、その他の値には変更できません。 |
|
3 番目のフィールドの値が自動的に親フィールドにコピーされます。 3 番目のフィールドは COPY 要素で指定します。 |
|
この要素は親フィールドの既定値を指定します。 |
|
親フィールドに値を含めることはできません。 |
|
親フィールドは固定されています。 フィールドが固定されると、値を NULL に変更することはできますが、その他の値に変更することはできません。 |
|
親フィールドの値は、指定したパターンに一致する必要があります。 |
|
親フィールドの値は、3 番目のフィールドの値と一致することはできません。 3 番目のフィールドは NOTSAMEAS 要素で指定します。 |
|
親フィールドに列挙リストの値を含めることはできません。 |
|
親フィールドは読み取り専用です。 |
|
親フィールドには NULL 以外の値を含める必要があります。 |
|
親フィールドは、指定したサーバー コンポーネントからの値を取ります。 有効なサーバー コンポーネントは、作業項目が更新された時間を示す clock、および作業項目を更新したユーザーの ID である currentuser です。 |
|
列挙リストには、親フィールドの推奨値が含まれます。 |
|
指定したユーザーしか親フィールドを変更できません。 |
ページのトップへ
従属必須フィールドの定義
別のフィールドに特定の値がある場合にのみ、フィールドを必須に指定できます。 次の例では、お客様がバグを報告すると、お客様の重大度を指定する必要があります。 お客様がバグを報告したのでない場合、お客様の重大度は必要ありません。
<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>