Назначение условных значений и правил
Можно определить правила, выполняемые по условию, при помощи элементов 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 |
|
Задает одно или несколько правил, применяемых к текущему полю, если другое поле имеет определенное значение.Текущее поле определяется родительским элементом. Если указанное поле имеет это значение, к текущему полю применяются правила в этом элементе. |
WHENNOT |
|
Задает условие, при котором одно или несколько правил применяются к текущему полю.Правила применимы к текущему полю при изменении значения другого поля.Текущее поле определяется родительским элементом. Если указанное поле не содержит указанного значения, к текущему полю применяются правила из этого элемента. |
WHENCHANGED |
|
Задает условие, при котором одно или несколько правил применяются к текущему полю.Правила применяются к текущему полю в том случае, если при редактировании рабочего элемента было изменено значение другого поля.Текущее поле определяется родительским элементом. |
WHENNOTCHANGED |
|
Задает условие, при котором одно или несколько правил применяются к текущему полю.Правила применяются к текущему полю в том случае, если в редакции рабочего элемента не изменяется значение другого поля.Текущее поле определяется родительским элементом. |
В следующей таблице показано, как каждое необязательное условное правило применяется к родительскому полю, когда условное выражение WHEN, WHENNOT, WHENCHANGED или WHENNOTCHANGED является истинным.Дополнительные сведения см. в разделе Настройка условий для поля рабочего элемента.
Элемент |
Описание |
---|---|
Родительское поле должно содержать значение из указанного списка. |
|
Уже существующее значение родительского поля будет разрешено, даже если оно нарушает другие правила.Этот элемент неприменим, если значение родительского поля изменено. |
|
Пользователи могут изменить значение родительского на 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>
Определение условного списка выбора
В следующем примере демонстрируется условный список выбора, в котором допустимые значения поля 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