Проверка правил
Применение к полю нескольких правил позволяет понять, как проверяются правила.Процедура проверки правил не является четко детерминированной.В данном разделе описывается ожидаемое поведение и взаимодействие при использовании правил <WHEN*>, <DEFAULT> и <COPY>.
Следующие действия последовательно описывают взаимодействие между Team Foundation Server и пользователем формы рабочего элемента.Пользователь выполняет только действия 1, 8 и 13.
Используя пользовательский интерфейс Visual Studio, пользователь создает новый рабочий элемент или редактирует существующий.
Введите значения полей по умолчанию.Для всех полей используйте любые правила <DEFAULT>, которые располагаются за пределами правил <WHEN*>.
Скопируйте значения полей.Для всех полей используйте любые правила <COPY>, которые располагаются за пределами предложений <WHEN*>.
Для всех полей с совпадающим правилом <WHEN> сначала выполните правило <DEFAULT>, а затем скопируйте содержащиеся правила <COPY>.
Для всех полей с совпадающим правилом <WHENNOT> сначала выполните правило <DEFAULT>, а затем содержащиеся правила <COPY>.
Примечание Сервер Team Foundation Server всегда обрабатывает правила <WHEN> перед правилами <WHENNOT>.
Для всех полей, значения которых изменились после выполнения действия 1 и которые содержат правила <WHENCHANGED>, сначала выполните правило <DEFAULT>, а затем содержащиеся правила <COPY>.
Разрешить пользователю начать редактирование.
Пользователь изменяет значение поля и затем перемещает фокус с поля.
Выполнять любые правила <WHEN> для поля, которое соответствует новому значению.
Выполнять любые правила <WHENNOT> для поля, которое соответствует новому значению.
Выполнять любые правила <WHENCHANGED> для поля, которое соответствует новому значению.
Вернуть пользователю возможность редактирования.
Пользователь сохраняет изменения в базе данных.
Для всех полей выполните операции <SERVERDEFAULT>, которые определены для поля прямо или косвенно в рамках правила <WHEN> или <WHENNOT>.
Обработка нажатий клавиш
Когда пользователь использует графический интерфейс для изменения формы рабочего элемента, новое значение задается каждый раз, когда нажимается соответствующая полю клавиша.Это означает, что правило <WHEN*> может выполниться неожиданно, если будут соблюдены обязательные условия правила.
В следующем примере XML-кода поле SubStatus будет очищено при вводе значения "Approved Again" в поле Status, так как правило <WHEN*> выполняется сразу же после ввода пользователем буквы "e" в поле Approved, даже если предполагаемое окончательное значение не равно "Approve".По этой причине необходимо внимательно думать при использовании условных правил.
<FIELD refname="MyCorp.SubStatus" />
<WHEN field="MyCorp.Status" value="Approve" >
<EMPTY />
</WHEN>
</FIELD>