条件付き値および条件付き規則の割り当て

更新 : 2011 年 1 月

WHENWHENNOTWHENCHANGEDWHENNOTCHANGED の各要素を使用して、条件に従って実行される規則を定義できます。 これらの規則を使用して、定義された句が 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 要素の規則が現在のフィールドに適用されます。

要素

構文

説明

WHEN

<WHEN field="fieldReferenceName" value="value">
    <ALLOWEDVALUES> . . . </ALLOWEDVALUES>
    <ALLOWEXISTINGVALUE> . . . <ALLOWEXISTINGVALUE>
    <CANNOTLOSEVALUE> . . . </CANNOTLOSEVALUE>
    <COPY> . . . </COPY>
    <DEFAULT> . . . </DEFAULT>
    <EMPTY> . . . </EMPTY>
    <FROZEN> . . . </FROZEN>
    <MATCH> . . . </MATCH>
    <NOTSAMEAS> . . . </NOTSAMEAS>
    <PROHIBITEDVALUES> . . . </PROHIBITEDVALUES>
    <READONLY> . . . </READONLY>
    <REQUIRED> . . . </REQUIRED>
    <SERVERDEFAULT> . . . </SERVERDEFAULT>        
    <SUGGESTEDVALUES> . . . </SUGGESTEDVALUES>
    <VALIDUSER> . . . </VALIDUSER>
</WHEN>

別のフィールドが特定の値を持つときに現在のフィールドに適用する 1 つまたは複数の規則を指定します。 現在のフィールドは、親要素によって定義されます。

この指定されたフィールドに指定された値を設定すると、この要素の規則が現在のフィールドに適用されます。

WHENNOT

<WHENNOT field="fieldReferenceName" value="value">
    <ALLOWEDVALUES> . . . </ALLOWEDVALUES>
    <ALLOWEXISTINGVALUE> . . . <ALLOWEXISTINGVALUE>
    <CANNOTLOSEVALUE> . . . </CANNOTLOSEVALUE>
    <COPY> . . . </COPY>
    <DEFAULT> . . . </DEFAULT>
    <EMPTY> . . . </EMPTY>
    <FROZEN> . . . </FROZEN>
    <MATCH> . . . </MATCH>
    <NOTSAMEAS> . . . </NOTSAMEAS>
    <PROHIBITEDVALUES> . . . </PROHIBITEDVALUES>
    <READONLY> . . . </READONLY>
    <REQUIRED> . . . </REQUIRED>
    <SERVERDEFAULT> . . . </SERVERDEFAULT>        
    <SUGGESTEDVALUES> . . . </SUGGESTEDVALUES>
    <VALIDUSER> . . . </VALIDUSER>
</WHENNOT>

現在のフィールドに 1 つ以上の規則を適用する条件を指定します。 規則は、別のフィールドの値が変更されるときに現在のフィールドに適用されます。 現在のフィールドは、親要素によって定義されます。

指定されたフィールドに指定された値が設定されていないときに、この要素に含まれる規則が現在のフィールドに適用されます。

WHENCHANGED

<WHENCHANGED field="fieldReferenceName" >
    <ALLOWEDVALUES> . . . </ALLOWEDVALUES>
    <ALLOWEXISTINGVALUE> . . . <ALLOWEXISTINGVALUE>
    <CANNOTLOSEVALUE> . . . </CANNOTLOSEVALUE>
    <COPY> . . . </COPY>
    <DEFAULT> . . . </DEFAULT>
    <EMPTY> . . . </EMPTY>
    <FROZEN> . . . </FROZEN>
    <MATCH> . . . </MATCH>
    <NOTSAMEAS> . . . </NOTSAMEAS>
    <PROHIBITEDVALUES> . . . </PROHIBITEDVALUES>
    <READONLY> . . . </READONLY>
    <REQUIRED> . . . </REQUIRED>
    <SERVERDEFAULT> . . . </SERVERDEFAULT>        
    <SUGGESTEDVALUES> . . . </SUGGESTEDVALUES>
    <VALIDUSER> . . . </VALIDUSER>      
</WHENCHANGED>

現在のフィールドに 1 つ以上の規則を適用する条件を指定します。 規則は、作業項目のリビジョンで別のフィールドの値が変更される場合に現在のフィールドに適用されます。 現在のフィールドは、親要素によって定義されます。

WHENNOTCHANGED

<WHENNOTCHANGED field="fieldReferenceName">
    <ALLOWEDVALUES> . . . </ALLOWEDVALUES>
    <ALLOWEXISTINGVALUE> . . . <ALLOWEXISTINGVALUE>
    <CANNOTLOSEVALUE> . . . </CANNOTLOSEVALUE>
    <COPY> . . . </COPY>
    <DEFAULT> . . . </DEFAULT>
    <EMPTY> . . . </EMPTY>
    <FROZEN> . . . </FROZEN>
    <MATCH> . . . </MATCH>
    <NOTSAMEAS> . . . </NOTSAMEAS>
    <PROHIBITEDVALUES> . . . </PROHIBITEDVALUES>
    <READONLY> . . . </READONLY>
    <REQUIRED> . . . </REQUIRED>
    <SERVERDEFAULT> . . . </SERVERDEFAULT>        
    <SUGGESTEDVALUES> . . . </SUGGESTEDVALUES>
    <VALIDUSER> . . . </VALIDUSER>
</WHENNOTCHANGED>

現在のフィールドに 1 つ以上の規則を適用する条件を指定します。 規則は、作業項目のリビジョンで別のフィールドの値が変更されない場合に現在のフィールドに適用されます。 現在のフィールドは、親要素によって定義されます。

次の表に、WHENWHENNOTWHENCHANGED、または WHENNOTCHANGED の各要素を使用して指定された条件句が true の場合に、条件に基づく各規則 (省略可能) が親フィールドにどのように適用されるかを示します。 詳細については、「作業項目フィールドの条件の設定」を参照してください。

要素

説明

ALLOWEDVALUES

指定された値リストの値が親フィールドに設定されている必要があります。

ALLOWEXISTINGVALUE

親フィールドの既存の値が他の規則に違反する場合でも、その値が許容されます。 親フィールドの値を変更した場合、この要素は適用されません。

CANNOTLOSEVALUE

親フィールドの値を NULL に変更することはできますが、他の値に変更することはできません。

COPY

3 番目のフィールドの値が親フィールドに自動的にコピーされます。 3 番目のフィールドは、COPY 要素で指定します。

DEFAULT

この要素により、親フィールドの既定値が指定されます。

EMPTY

親フィールドに値を設定することはできません。

FROZEN

親フィールドが固定されます。 フィールドが固定されると、その値を NULL に変更することはできますが、他の値に変更することはできません。

MATCH

親フィールドの値は、指定されたパターンに一致する必要があります。

NOTSAMEAS

親フィールドの値は 3 番目のフィールドの値に一致させることができません。 3 番目のフィールドは、NOTSAMEAS 要素で指定します。

PROHIBITEDVALUES

親フィールドに列挙リストの値を設定することはできません。

READONLY

親フィールドは読み取り専用になります。

REQUIRED

親フィールドに NULL 値を設定することはできません。

SERVERDEFAULT

親フィールドは、指定されたサーバー コンポーネントから値を取得します。 有効なサーバー コンポーネントは、clock (作業項目が更新された時刻) と currentuser (作業項目を更新したユーザーの ID) です。

SUGGESTEDVALUES

列挙リストに親フィールドの推奨値が含まれます。

VALIDUSER

指定されたユーザーだけが親フィールドを変更できます。

ページのトップへ

依存必須フィールドの定義

別のフィールドに特定の値が設定されている場合にのみ、フィールドを必須フィールドとして指定できます。 次の例では、顧客からバグが報告されたときに、顧客の重大度レベルを指定する必要があります。 バグが顧客によって報告されていない場合は、顧客の深刻度レベルは必要ありません。

<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>

参照

概念

すべての FIELD XML 要素のリファレンス

その他の技術情報

作業項目フィールドの条件の設定

フィールド規則の操作

履歴の変更

日付

履歴

理由

2011 年 1 月

すべての条件付き要素の構文構造を追加し、例を強調するために内容を再構成。

情報の拡充