Использование условий <WHEN>, <WHENNOT> и <WHENCHANGED>
Обновлен: Ноябрь 2007
Можно определять правила, которые выполняются при определенных условиях, используя элементы WHEN, WHENNOT, WHENCHANGED и WHENNOTCHANGED. Эти правила определяют, какие элементы выполняются, когда определенное выражение имеет значение True. Например, можно создать зависимый список выбора, чтобы в зависимости от некоторых условий ограничивать доступ или изменять возможные значения. Далее приведен простой пример условия WHEN:
<FIELD . . . >
<WHEN field="refname" value="yyy">
</FIELD>
Это условие означает, что содержание элемента FIELD применимо, только когда поле refname имеет значение «yyy». Поле должно содержать допустимое ссылочное имя поля. Дополнительные сведения см. в разделе Ссылочные имена полей.
Примечание. |
---|
Атрибут значения является не зависящим от регистра. Следовательно, если поле «refname» поля содержит значение «YYY», совпадения включают значения, равные «yyy» или «YYY». |
Примеры
Зависимый список выбора
В следующем примере демонстрируется зависимый список выбора, в котором допустимые значения поля «Problem Type» (тип проблемы) ограничены, и зависят от значения поля «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>
Обязательные поля
В следующем примере показано изменение в требуемых полях. При этом сценарии, когда клиент сообщает об ошибке, необходимо ввести уровень важности клиента. Если об ошибке сообщил не клиент, вводить уровень важности клиента не нужно.
WHEN
<WHEN>
Пример
<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>
Условие Любое содержимое этого элемента применимо, пока поле Customer Reported имеет значение, равное true.
WHENNOT
<WHENNOT>
Пример
<WHENNOT field="refname" value="yyy">
</WHENNOT>
Условие Любое содержимое этого элемента применимо, пока поле refname имеет значение, не равное «yyy».
WHENCHANGED
<WHENCHANGED>
Пример
<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<WHENCHANGED field="MyCorp.State">
<COPY from="clock" />
</WHENCHANGED>
</FIELD>
<!-- 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>
Условие Любое содержимое этого элемента применимо, если поле refname было изменено пользователем.
WHENNOTCHANGED
<WHENNOTCHANGED>
Пример
<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<!-- Make the State field readonly when the StateDate field is not changed -->
<WHENNOTCHANGED field="MyCorp.State">
<READONLY />
</WHENNOTCHANGED>
</FIELD>
Условие Любое содержимое этого элемента применимо, если поле refname не изменялось.