Справка по системе Платформа ELMA BPM
×
Меню

Валидация значений сценарием

Валидация – это проверка значения у любого элемента динамической формы в сценарии на изменение значения с последующим отображением соответствующих ошибок, если проверка завершилась неуспешно. Валидация осуществляется в процессе путем добавления сценария на контекстную переменную.
Валидация может быть реализована как для одного поля, так и для нескольких полей одновременно.
Для осуществления одновременной валидации нескольких полей необходимо:

Пример валидации значений

Рассмотрим пример с использованием одновременной валидации нескольких полей (рис. 1).
Рис. 1. Настройка задачи. Вкладка "Форма (контекст)"
На контекстные переменные Пароль и Подтверждение пароля добавим сценарий (рис. 2). Подробнее см. соответствующий раздел справки.
Рис. 2. Свойства переменной. Вкладка "Дополнительные"
Внимание!
С версии системы 3.11 для обеспечения валидации для параметра сценария form были введены новые методы:
form.For(m => m.Field).Validation.Error(message);
form.For(m => m.Field).Validation.Ok();
где:
m => m.Field – указание на свойство формы, для которого проводятся действия;
Validation.Error(message) – установить сообщение (строковый параметр message) о том, что свойство не прошло валидацию;
Validation.Ok() – сбросить сообщение и установить признак, что свойство содержит валидное значение.
Следует отметить, что Validation.Ok() сбрасывает только те сообщения, которые установлены методом Validation.Error(message). Данный метод не может снять сообщения, которые устанавливают другие проверки (например, "Заполните обязательное поле").
 
Создадим сценарий ChangePass для изменения значений полей Пароль и Подтверждение пароля. Сценарий ChangePass будет выглядеть следующим образом:
        public virtual void ChangePass (Context context, EleWise.ELMA.Model.Views.FormViewBuilder<Context> form)
        {
            form.ForAll ().Required (true);
            bool PasswordHasValue = !String.IsNullOrEmpty (context.Password);
            bool PasswordVerificationValue = !String.IsNullOrEmpty (context.PasswordVerification);
            bool valid = PasswordHasValue == PasswordVerificationValue;
            if (PasswordHasValue && PasswordVerificationValue) {
                valid = valid && (context.Password == context.PasswordVerification);
            }
            if (!valid) {
                form.For (m => m.Password).Validation.Error ("Пароли не совпадают!");
                form.For (m => m.PasswordVerification).Validation.Error ("Пароли не совпадают!");
            }
            else {
                form.For (m => m.Password).Validation.Ok ();
                form.For (m => m.PasswordVerification).Validation.Ok ();
            }
 
        }
После сохранения сценария и публикации процесса необходимо запустить данный процесс в веб-приложении. Если поле Подтверждение пароля не будет заполнено (рис. 3) или значение данного поля будет отличаться от значения поля Пароль (рис.4), на форме отобразится текст ошибки. При выводе соответствующей ошибки кнопка Далее будет неактивна.
Рис. 3. Пример валидации значений
Рис. 4. Пример валидации значений
При полном соответствии значений в полях Пароль и Подтверждение пароля проверка успешно выполнится, после чего станет доступной кнопка Далее (рис. 5).
Рис. 5.  Пример валидации значений

См. также: