Поделиться через


Назначение условных значений и правил

Можно определить правила, выполняемые по условию, при помощи элементов WHEN, WHENNOT, WHENCHANGED и WHENNOTCHANGED. Эти правила определяют, какие элементы выполняются, когда определенное выражение имеет значение True. Условия можно задавать на основе значения, присвоенного определенному полю, или факта изменения определенного поля пользователем. Например, можно создать зависимый список выбора, чтобы в зависимости от некоторых условий ограничивать доступ или изменять возможные значения.

Условия полей — это дополнительные элементы, которые перечисляются внутри элементов FIELD (определение) и FIELD (рабочий процесс). Дополнительные сведения об этих элементах см. в разделах Элемент FIELD (определение) и Элемент FIELD (рабочий процесс).

Приведенный ниже код представляет собой простой пример использования условия WHEN.

<FIELD . . . >

    <WHEN field="referenceName" value="yyy">

</FIELD>

Это условие означает, что содержание элемента FIELD применимо, только когда поле refname имеет значение "yyy". Поле должно содержать допустимое ссылочное имя поля. Дополнительные сведения см. в разделе Соглашения об именовании объектов отслеживания рабочих элементов.

Примечание

Атрибут значения не зависит от регистра.Следовательно, если ссылочное имя поля содержит значение "YYY", совпадения включают значения "yyy" или "YYY".

Содержание раздела

  • Структура синтаксиса условных элементов

  • Определение зависимого обязательного поля

  • Определение условного списка выбора

  • Определение поля, когда пользователь изменяет другое поле (WHENCHANGED)

  • Определение значения поля на основе того, что пользователь не изменяет поле (WHENCHANGED)

Структура синтаксиса условных элементов

В следующей таблице описаны условные правила, которые можно задать в качестве дочерних элементов для элементов 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>

Задает одно или несколько правил, применяемых к текущему полю, если другое поле имеет определенное значение. Текущее поле определяется родительским элементом.

Если указанное поле имеет это значение, к текущему полю применяются правила в этом элементе.

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>

Задает условие, при котором одно или несколько правил применяются к текущему полю. Правила применимы к текущему полю при изменении значения другого поля. Текущее поле определяется родительским элементом.

Если указанное поле не содержит указанного значения, к текущему полю применяются правила из этого элемента.

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>

Задает условие, при котором одно или несколько правил применяются к текущему полю. Правила применяются к текущему полю в том случае, если при редактировании рабочего элемента было изменено значение другого поля. Текущее поле определяется родительским элементом.

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>

Задает условие, при котором одно или несколько правил применяются к текущему полю. Правила применяются к текущему полю в том случае, если в редакции рабочего элемента не изменяется значение другого поля. Текущее поле определяется родительским элементом.

В следующей таблице показано, как каждое необязательное условное правило применяется к родительскому полю, когда условное выражение WHEN, WHENNOT, WHENCHANGED или WHENNOTCHANGED является истинным. Дополнительные сведения см. в разделе Настройка условий для поля рабочего элемента.

Элемент

Описание

ALLOWEDVALUES

Родительское поле должно содержать значение из указанного списка.

ALLOWEXISTINGVALUE

Уже существующее значение родительского поля будет разрешено, даже если оно нарушает другие правила. Этот элемент неприменим, если значение родительского поля изменено.

CANNOTLOSEVALUE

Пользователи могут изменить значение родительского на NULL, но не на какое-либо другое значение.

COPY

Значение третьего поля автоматически копируется в родительское поле. Третье поле задается в элементе COPY.

DEFAULT

Этот элемент задает значение родительского поля по умолчанию.

EMPTY

Родительское поле не должно содержать никаких значений.

FROZEN

Родительское поле заморожено. При заморозке поля его значение можно изменить на NULL, но не на какое-либо другое значение.

MATCH

Значение родительского поля должно соответствовать указанному шаблону.

NOTSAMEAS

Значение родительского поля не может соответствовать значению третьего поля. Третье поле задается в элементе NOTSAMEAS.

PROHIBITEDVALUES

Родительское поле не должно содержать каких-либо значений из списка.

READONLY

Родительское поле доступно только для чтения.

REQUIRED

Родительское поле должно содержать значение, отличное от NULL.

SERVERDEFAULT

Родительское поле получает значение из указанного серверного компонента. Допустимыми серверными компонентами могут быть clock, т. е. время обновления рабочего элемента, и currentuser, т. е. учетная запись пользователя, обновившего рабочий элемент.

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>

Определение условного списка выбора

В следующем примере демонстрируется условный список выбора, в котором допустимые значения поля ProblemType ограничены, и зависят от того, имеет ли поле ProblemCharacteristic значение Documentation.

<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.StateDate очищается.

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

Определение значения поля на основе того, что пользователь не изменяет поле (WHENCHANGED)

В следующем примере, когда пользователь не изменяет значение поля 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>

См. также

Основные понятия

Справка по всем XML-элементам FIELD

Другие ресурсы

Настройка условий для поля рабочего элемента

Работа с правилами полей

Журнал изменений

Дата

Журнал

Причина

Январь 2011

Добавлена синтаксическая структура для всех условных элементов, а организация содержимого изменена, чтобы выделить примеры.

Улучшение информации.