Бизнес-правила
Бизнес-правило – это действие, которое запускается на серверной стороне при создании, обновлении или удалении записи. Бизнес-правила выполняются в рамках транзакции с базой данных (БД), вне зависимости от интерфейса, через который была инициирована транзакция (отправка формы пользователем, выполнение серверного скрипта, REST запрос, выполнение блока Workflow Activity). Действие правила может выполнятся как в отношении текущей записи, так и в отношении других записей.
Бизнес-правила могут использовать скрипты для выполнения действий с записями в базе данных. Также доступны возможности действий скриптов в клиентских скриптах и UI-действиях.
Бизнес правила используются для:
- изменения значений в полях записи, которая соответствовала определенным условиям для срабатывания правила.
- выполнения серверного скрипта правила.
- выведения сообщений на сторону клиента.
- создания системных событий для отправки уведомлений по электронной почте или выполнения других серверных скриптов.
- прерывания выполнения транзакции с БД.
Для просмотра всех бизнес-правил в навигаторе перейдите в Настройка системы → Бизнес-правила.
Для просмотра бизнес-правил относящихся к конкретной таблице, выполните следующие действия:
- Перейдите к списку или форме таблицы.
- Выберите Настроить → Бизнес-правила в бургер-меню.
Типы бизнес-правил
В зависимости от выполняемой бизнес-задачи, вы можете использовать один из следующих типов бизнес-правил:
- перед
- после
- после (асинхронно)
Условия запуска правил типа перед:
- После начала действия с записью (создание, обновление или удаление).
- До того, как система выполняет обновления на сервере.
Условие запуска правил типа после:
- После выполнения системой обновления на сервере.
Условие запуска правил типа после (асинхронно):
- После всех бизнес-правил других типов.
Бизнес-правила типа после (асинхронно) срабатывают после бизнес-правил типов перед и после. Благодаря этому, пользователь сначала получает форму со всеми изменениями, а затем срабатывают правила типа после (асинхронно). Таким образом вы можете оптимизировать время отклика системы – используйте правила типа после (асинхронно) для ресурсоемких скриптов, выполнение которых занимает много времени.
На схеме ниже показано в какой момент срабатывают правила типов перед, после и после (асинхронно). Все правила исполняются после начала действия с записью (создание, обновление или удаление).
Процесс начинается с действия на форме: если это действие обновления, источником данных является база данных, поэтому у записи есть блок previous. Блок previous представляет состояние формы до совершения действия (отправка фо рмы – создание, обновление или удаление), а блок current представляет состояние формы после завершения действия. Отправка формы может выполняться пользователем, скриптом или запросом REST API.
Создание бизнес-правила
Требуемая роль: admin.
Чтобы создать новое бизнес-правило, выполните следующие действия:
- Перейдите в Настройка системы → Бизнес-правила.
- Нажмите Создать и заполните поля.
- Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.
Поля формы Бизнес-правило
- Общее
- Когда запустить
- Действие
- Расширенная настройка
Поле | Обязательно | Описание |
---|---|---|
Наименование | Да | Введите наименование бизнес-правила. |
Таблица | Да | Выберите таблицу, в которой будет выполняться бизнес-правило. |
Описание | Нет | Введите краткое описание действия. |
Активно | Нет | Установите флажок, чтобы активировать бизнес-правило. |
Наследуемое | Нет | Установите флажок, чтобы применять данное бизнес-правило ко всем дочерним таблицам указанной Таблицы. |
Расширенная настройка | Нет | Установите флажок для отображения поля Скрипт и расширенных настроек, таких как тип бизнес-правила (поле Когда во вкладке Когда запустить). |
Поле | Обязательно | Описание |
---|---|---|
Когда | Нет | Выберите момент выполнения бизнес-правила:
|
Порядок | Нет | Укажите порядок выполнения бизнес-правила. При наличии нескольких бизнес-правил одного типа (перед, после, после (асинхронно)), они выполняются в порядке возрастания. Поле доступно, когда установлен флажок Расширенная настройка и установлено значение перед или после в поле Когда. |
Приоритет | Нет | Укажите приоритет бизнес-правила. При наличии нескольких бизнес-правил с одинаковым Порядком, они выполняются в порядке убывания Приоритета. Поле доступно, когда установлен флажок Расширенная настройка и установлено значение перед или после в поле Когда. |
Создание | Нет | Установите флажок, чтобы бизнес-правило срабатывало при добавлении новой записи. |
Обновление | Нет | Установите флажок, чтобы бизнес-правило срабатывало при обновлении записи. |
Удаление | Нет | Установите флажок, чтобы бизнес-правило срабатывало при удалении записи. Поле доступно, когда установлен флажок Расширенная настройка. |
Условия фильтра | Нет | Задайте условия для срабатывания бизнес-правила. После указания Таблицы, все ее поля доступны для построения условий. Используйте динамические условия фильтра, такие как равно (динамическое) или не равно (динамически) при составлении условий, чтобы ваши бизнес-правила были более гибкими. |
Вкладка Действие недоступна для бизнес-правил типа после (асинхронно).
Поле | Обязательно | Описание |
---|---|---|
Установить значение | Нет | Выберите колонку и определите нужное вам значение. Доступные колонки зависят от выбранной Таблицы.
|
Прервать действие | Нет | Установите флажок, чтобы прервать транзакцию (создание, обновление или удаление) при соблюдении всех условий. Хорошей практикой считается указывать причину отмены действия. Установите флажок Добавить сообщение и введите текст в поле Сообщение. Если сообщение не указано, при отмене действия отображается стандартное сообщение: Ошибка сохранения .Если условия отмены не удается создать при помощи поля Условия фильтра, вы можете использовать скрипт с применением методов setAbortAction и ss.addErrorMessage. В этом случае флажок Прервать действие должен быть снят. Помните, что при использовании метода setAbortAction() для отмены транзакции, скрипт, следующий за вызовом этой функции, не будет исполнен. |
Добавить сообщение | Нет | Установите флажок, чтобы отобразить поле Сообщение, если вам нужно показать пользователю сообщение при выполнении бизнес-правила. |
Сообщение | Нет | Введите текст сообщения, которое вы хотите показать пользователю при выполнении бизнес-правила. Оно будет выведено на экран как всплывающее сообщение. Вы также можете использовать значение записи Исходное сообщение (source_message) из категории app (значение в колонке Категория). Подробнее читайте в статье Локализация и многоязыковая поддержка. Не используйте переменные или динамические ссылки на другие записи в этих сообщениях. Чтобы добавить сообщение с переменными или динамическими ссылками, установите флажок Расширенная настройка и настройте скрипт в появившейся одноименной вкладке. Поле Сообщение доступно, когда установлен флажок Добавить сообщение. |
(function executeRule(current, previous /*null when async*/) {
current.update();
})(current, previous);