Ограничение области правил для полей по состоянию, переходу или причине
Обновлен: Ноябрь 2007
Как описано в разделе Определение рабочего процесса рабочего элемента, правила для полей можно использовать, чтобы определить поведение типа рабочего элемента независимо от состояния рабочего элемента. Например, поле, которое является обязательным для новой и активной ошибки, остается обязательным до ее закрытия.
В качестве области правил для полей также может выступать определенное состояние, переход и даже причина. Полный набор правил, которые применяются к какому-то определенному полю, является совокупностью четырех подмножеств:
правила для типа рабочего элемента;
правила для состояния;
правила для перехода;
правила для причины.
Правила для типа рабочего элемента
Правила для типа рабочего элемента применяются независимо от расположения рабочего элемента в модели состояний. Например, правило <REQUIRED/> выполняет следующую проверку:
"MyField Value" != NULL
Правила для состояния
Правила для состояния распространяются на экземпляр рабочего элемента в определенном состоянии. Проверка правила для состояния следующая.
State field value == "MyState" && "MyField Value" != NULL
Правила для перехода
Правила для перехода распространяются на рабочий элемент, который выполняет определенный переход. Проверка правила для перехода следующая.
State field value == "ToState" &&
"Previous State Before Edit/New" == "FromState"
&& "MyField Value" != NULL
Правила для причины
Правила для причины распространяются на конкретную причину определенного перехода. Проверка правил для причины следующая.
Reason field == "MyReason" &&
State field value == "ToState" &&
"Previous State Before Edit/New" == "FromState" && "MyField Value" != NULL
Ограничение области правил для полей
Правилам для полей можно задать область, используя элементы <FIELDS> и <FIELD> внутри элементов <STATE>, <TRANSITION> и <REASON>.
![]() |
---|
При перечислении полей в бизнес-правиле, следует указать только ссылочное имя поля. |
Пример
В приведенном ниже примере определяется следующее правило: «Когда ошибка находится в активном состоянии, запретить изменение поля важности клиента».
<STATE name="Active">
<FIELDS>
<FIELD refname="MyCorp.Severity" />
<READONLY />
</FIELD>
</FIELDS>
</STATE>