Назначение условных значений и правил
Правила, запускаемые с условиями, можно определить с помощью элементов WHEN, WHENNOT, WHENCHANGED и WHENNOTCHANGED. Эти правила используются для определения элементов, которые запускаются, если определенное предложение имеет значение True. Вы можете определить условия, основанные на значении определенного поля или на том, изменяет ли пользователь конкретное поле. Например, можно создать зависимый список выбора, чтобы предоставить подробные данные о поведении безопасности или пользовательском поведении.
Условия полей — это дополнительные элементы, указанные в элементе FIELD (определение) или элементе FIELD (рабочий процесс). Подробнее об этих элементах читайте в разделах FIELD (Definition) element reference и Справочник по элементам 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 |
|
Задает одно или несколько правил, применяемых к текущему полю, если другое поле имеет определенное значение. Родительский элемент определяет текущее поле. Если указанное поле содержит указанное значение, правила в этом элементе применяются к текущему полю. |
WHENNOT |
|
Указывает условие, при котором одно или несколько правил применяются к текущему полю. Правила применяются к текущему полю, если значение другого поля изменяется. Родительский элемент определяет текущее поле. Если указанное поле не содержит заданное значение, правила в этом элементе применяются к текущему полю. |
WHENCHANGED |
|
Указывает условие, при котором одно или несколько правил применяются к текущему полю. Правила применяются к текущему полю, если значение другого поля изменяется при исправлении рабочего элемента. Родительский элемент определяет текущее поле. |
WHENNOTCHANGED |
|
Указывает условие, при котором одно или несколько правил применяются к текущему полю. Правила применяются к текущему полю, если значение другого поля не изменяется при исправлении рабочего элемента. Родительский элемент определяет текущее поле. |
В следующей таблице описано, как каждое дополнительное правило с условиями применяется к родительскому полю, если условное предложение, заданное с помощью элемента WHEN, WHENNOT, WHENCHANGED или WHENNOTCHANGED, имеет значение true. Дополнительные сведения см. в разделе Применение правила к полю рабочего элемента.
Элемент |
Описание |
---|---|
Родительское поле должно иметь значение, наследуемое из указанного списка значений. |
|
Значение родительского поля, которое уже существует, будет разрешено, даже если оно нарушает другие правила. Элемент неприменим, если значение родительского поля изменено. |
|
Пользователи могут изменить значение родительского поля на NULL, но они не могут изменить его на любое другое значение. |
|
Значение третьего поля автоматически копируется в родительское поле. Третье поле указывается в элементе COPY. |
|
Этот элемент задает значение родительского поля по умолчанию. |
|
Родительское поле не должно содержать значения. |
|
Родительское поле зафиксировано. Если поле зафиксировано, его значение можно изменить на NULL, но невозможно изменить на любое другое значение. |
|
Значение родительского поля должно совпадать с указанным шаблоном. |
|
Значение родительского поля не может совпадать со значением третьего поля. Третье поле указывается в элементе NOTSAMEAS. |
|
Родительское поле не может содержать значения в списке перечисляемых значений. |
|
Родительское поле доступно только для чтения. |
|
Родительское поле должно содержать значение, отличное от NULL. |
|
Родительское поле получает значение из указанного компонента сервера. Допустимые компоненты сервера: clock (время обновления рабочего элемента) и 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 значение "Документация".
<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>