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


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

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

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

Следующий код является простым примером предложения WHEN:

<FIELD . . . >

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

</FIELD>

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

Примечание

При указании атрибута значения не учитывается регистр.Следовательно, если имя ссылки на поле содержит "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>

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

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

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, имеет значение true. Для получения дополнительной информации см. Применение правила к полю рабочего элемента.

Элемент

Описание

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>

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

В следующем примере демонстрируется список условного выбора, в котором разрешенные значения для поля "Тип проблемы" ограничены на основе того, задано ли для поля ProblemCharacteristic значение "Документация".

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

См. также

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

Применение правила к полю рабочего элемента

Применение правила к полю рабочего элемента