Appearance
Правила (автоматизация сценариев)
Важно
В релизе 2.24 вышла первая версия модуля автоматизации и мы будем рады идеям и предложениям по его развитию.
Функционал предназначен для гибкой настройки процессов получения почтовых уведомлений о событиях в системе и запрете действий на основе сценариев, операторов и регулярных выражений.
Принцип работы
Правила срабатывают, когда в системе происходит выбранный тип события, и при этом соблюдена вся логическая цепочка условий, построенная в конструкторе. После срабатывания система выполняет указанное действие (отправляет письмо или запрещает операцию с показом уведомления пользователю).
Примеры использования
Посмотрите примеры решения задач бизнеса с помощью этого модуля, чтобы лучше понимать его возможности.
Доступ к функционалу
Если для вашей роли разрешено использование данного функционала, вы увидете пункт меню «Правила» в административном разделе:

Просмотр списка правил
Основной интерфейс раздела содержит таблицу с перечнем созданных правил.
Таблица состоит из следующих колонок:
- ID — уникальный идентификатор правила в системе.
- Статус — указывает, активно ли правило в данный момент. Активные правила отмечены зеленой точкой рядом. Неактивные отображаются серым цветом.
- Название — пользовательское название правила для более удобного ориентирования в списке.
- Событие — тип события (триггера), при наступлении которого проверяется правило.
- Действие — действие, которое выполнит правило: «Запретить действие» или «Отправить уведомление».
Для каждого правила в правой части строки доступны иконки для его редактирования (карандаш) и удаления (корзина).
Над списком правил расположена кнопка «Добавить» для создания нового правила.
Создание и редактирование правила
Для создания нового правила нажмите кнопку «Добавить», расположенную в правом верхнем углу над списком. Для редактирования существующего — воспользуйтесь кнопкой (карандаш) в строке нужного правила.
Интерфейс создания и редактирования правила идентичен и состоит из следующих блоков:

1. Общие настройки
- Активно — переключатель для активации или деактивации правила. Неактивные правила не выполняются системой.
- Название — произвольное название правила для удобства идентификации в списке.
- Событие — тип события, при наступлении которого будет исполняться данное правило. В настоящие момент доступны следующие типы событий:
- Создание элемента
- Обновление элемента
- Перемещение элемента в корзину
- Удаление элемента из корзины
- Просмотр пароля
- Обновление права доступа к элементу
- Авторизация пользователя
Наличие тех или иных событий может различаться в зависимости от установленной версии продукта. Для доступа к актуальному списку событий рекомендуется обновить систему до последней версии.
2. Условия
В этом блоке выстраивается логическая цепочка условий, которые должны быть соблюдены для срабатывания правила.

Оператор группы определяет логику для всех условий и вложенных групп. По умолчанию он установлен в положение «И» (AND), что означает, что все добавленные условия должны быть выполнены. Вы можете изменить его на «ИЛИ» (OR): в этом случае для срабатывания правила будет достаточно выполнения хотя бы одного из условий или групп условий.
Кнопками «Условие» и «Группа» вы добавляете новые элементы в конструктор.
- Условие — это одиночный элемент для проверки исполнения. В нем вы выбираете конкретный параметр (например, «Email пользователя»), оператор для его проверки (например, «содержит») и значение для сравнения (например, «@yandex.ru»). Условие считается выполненным, если выбранный параметр соответствует заданным критериям.
- Группа — это контейнер для объединения нескольких условий под одним логическим оператором («И» или «ИЛИ»). Группы можно вкладывать друг в друга для построения сложной логики.
Операторы
Ниже приведено описание логики работы каждого из доступных операторов сравнения:
Доступные операторы
равно — проверяет точное совпадение параметра с указанным значением. Доступно для типов: string, integer, datetime, enum.
не равно — проверяет, что параметр не совпадает с указанным значением. Доступно для типов: string, integer, datetime, enum.
содержит — проверяет, что параметр (строка) включает в себя указанную подстроку. Доступно для типа string.
не содержит — проверяет, что параметр (строка) не включает в себя указанную подстроку. Доступно для типа string.
начинается с — проверяет, что параметр (строка) начинается с указанной подстроки. Доступно для типа string.
заканчивается на — проверяет, что параметр (строка) заканчивается указанной подстрокой. Доступно для типа string.
совпадает с шаблоном — проверяет, что параметр (строка) соответствует указанному регулярному выражению. Доступно для типа string.
не совпадает с шаблоном — проверяет, что параметр (строка) не соответствует указанному регулярному выражению. Доступно для типа string.
больше, меньше, больше или равно, меньше или равно — производят сравнение числового значения или даты. Доступно для типов integer и datetime.
содержится в — проверяет, что значение параметра присутствует в указанном списке значений. Каждое значение списка вводится в отдельное поле. Доступно для типов: string, integer, datetime, enum.
не содержится в — проверяет, что значение параметра отсутствует в указанном списке значений. Доступно для типов: string, integer, datetime, enum.
содержит (для типа array) — проверяет, что указанное единичное значение присутствует в массиве (списке) параметра.
не содержит (для типа array) — проверяет, что указанное единичное значение отсутствует в массиве (списке) параметра.
Пример использования оператора
Если для параметра «Элемент → Название» выбрать оператор «содержит» и указать значение «Финанс», условие будет выполнено для элементов с названиями «Отчет по Финансам», «Финансовый отдел» и т.д.
При этом, к элементу «финансовые показатели» правило применено не будет из-за разницы в регистре. Регистронезависимость можно создать самостоятельно через регулярные выражения.
Пример построения логики
Общий оператор: И
- Условие 1: Пользователь → Код роли не равно «admin»
- Группа 1 (Оператор: ИЛИ):
- Условие 2: Элемент → Название содержит 'Секретно'
- Условие 3: Элемент → Глубина равна 0
Правило сработает, если у пользователя НЕ административная роль И название элемента содержит ‘Секретно’ ИЛИ элемент с любым названием находится в корневой папке.
Регулярные выражения
При выборе операторов «совпадает с шаблоном» или «не совпадает с шаблоном» для строковых параметров вы можете использовать регулярные выражения для более гибких условий фильтрации.
Основные правила использования:
- Обработка происходит в соответствии с синтаксисом PCRE.
- Проверка выполняется с учетом регистра символов.
- Специальные символы (например, ., *, ?, [ ]) должны быть экранированы обратной косой чертой (\), если должны трактоваться буквально.
- Квантификаторам (например, *, +) по умолчанию соответствует максимально длинная подходящая строка.
Пример использования в правиле

- Событие: Создание элемента
- Условие: Элемент → Название совпадает с шаблоном « ~(пароль|password|pwd)~iu »
- Действие: Запретить с текстом уведомления «Политика безопасности нашей компании запрещает использование слова «пароль» в названиях элементов.».
Результат: Пользователю будет запрещено создавать папки или записи, в названии которых есть слова «пароль», «password» или «pwd» в любом регистре. 
3. Действие
На данный момент возможны два типа действий при срабатывании правила:
1. Отправить почтовое уведомление

- Получатели — введите email-адреса. После ввода каждого адреса нажмите Enter, чтобы добавить его в список.
- Тема письма — укажите тему email-сообщения.
- Текст письма — составьте текст email-сообщения.
2. Запретить действие

- Текст уведомления — укажите текст сообщения, которое увидит пользователь в интерфейсе BearPass при попытке выполнить запрещенное действие.
Переменные для уведомлений
Во всех уведомлениях вы можете использовать специальные коды переменных (например, %user.name%, %item.name%), которые будут автоматически заменены на актуальные данные в момент срабатывания правила.
Список доступных переменных динамически отображается в блоке «Переменные». Для удобства копирования наведите курсор на нужную переменную. Обратите внимание, что у разных типов событий возможен разный набор типов переменных.
Пример использования переменных
Шаблон уведомления в правиле: 
Результат: 
Примеры решения задач бизнеса с помощью модуля «Правила»
Мы выбрали несколько обращений в техническую поддержку, чтобы показать, как они могут быть решены с помощью модуля «Правила»:
1. Запретить выдавать доступ на корневые папки проектов
У нас есть проекты наших клиентов. Каждый проект - папка в BearPass в корне дерева. Проектному менеджеру выдан доступ на управление папкой проекта. Но мы сталкиваемся с ситуациями, когда некоторые менеджеры шарят всю папку клиента всем подряд. Можно ли сделать так, чтобы менеджеры не могли шарить основные папки клиентов, а только элементы внутри?
Решение
Событие: Обновление права доступа к элементу
Условия:
- Глубина → равно → 0 (корень)
- Название группы пользователей → содержит → PM
Действие: Запретить действие с уведомлением «Для предоставления доступа к корневым папкам обратитесь к Сергею Никифорову.»
2. Уведомление об авторизации пользователя
Есть сервисный аккаунт, которым пользуется сразу несколько сотрудников. Мы хотели бы получать уведомления при каждой авторизации этого аккаунта в BearPass
Решение
- Событие: Авторизация пользователя
- Условие: ID пользователя → равно → NNN
- Действие: Отправить уведомление
3. Убедиться, что никто не просматривал/менял пароль и не получал к нему доступов
Как узнавать, когда кто-то получает доступ к паролю от сервиса ХХХ ?
Решение
Первое правило:
- Событие: Просмотр пароля
- Условие: ID элемента → равно → NNN
- Действие: Отправить уведомление
Второе правило:
- Событие: Обновление прав доступа к элементу
- Условие: ID элемента → равно → NNN
- Действие: Отправить уведомление
4. Соответствие названий паролей определенным правилам
Для работы наших интеграций нам требуется, чтобы названия записей соответствовали определенной логике. При этом, записи регулярно вбиваются и обновляются десятком инженером вручную в разных условиях. Регулярно случаются опечатки из-за которых интеграции начинают сбоить. Можно ли задать проверку соответствия названий паролей определенному шаблону?
Решение
Первое правило:
- Событие: Создание элемента
- Условие: Название → не совпадает с шаблоном → [описать регулярным выражением допустимый шаблон]
- Действие: Запретить действие
Второе правило:
- Событие: Обновление элемента
- Условие: Название → не совпадает с шаблоном → [описать регулярным выражением допустимый шаблон]
- Действие: Запретить действие
