Здравствуйте!
Далее попробую описать как можно легко настроить событийные права обычным бизнес-процессом. Если вас устраивает нерасширяемое решение через условные потоки или много разных процессов в одном объекте, замедляющих систему, дальше можете не читать:)
Бизнес-задача:
Предположим компания занимается короткими продажами, соответственно, в системе создаются сущности в разделе "Заказы".
Задача:
- В зависимости от состояния заказа, запись должна содержать следущие права:
- На стадии "Оформление" - роль "Операторы" может читать и менять запись, роль "Старший оператор" может читать и удалять запись.
- На стадии "Исполнение" - роль "Операторы", "Старший оператор" может читать запись, роль "Бухгалтер" может читать и редактировать.
- На стадии "Завершен", "Отменен" - роли "Операторы", "Старший оператор", "Бухгалтер" может только видеть запись.
Решение:
Задача весьма тривиальная и может быть настроена, как было указано ранее, через условные потоки. Однако выбор такого решения не является оптимальным - в результате получится громоздкий, слабоподдерживаемый процесс.
Для красивого решения нам понадобится создать несколько объектов и один линейный процесс.
Объект будет содержать несколько полей. Пробежимся по полям объекта:
- Объект Администрирования - это роль/пользователь, которому будут предоставлены права
- Чтение - указывает может роль/пользователь видеть запись или нет
- Изменение - указывает может роль/пользователь редактировать запись
- Удаление - указывает может роль/пользователь удалить запись.
Это шаблон. В него нужно добавить дополнительные поля в зависимости от задачи. В нашей задаче права зависят только от состояния заказа, поэтому мы добавляем поле, ссылающееся на справочник "Состояние заказа".
Далее - создаем процесс. Начальные события - добавление записи в раздел "Заказы", изменение значения поля "Состояние".
Далее используем элемент "Чтение данных" для получения значения полей Id и "Состояние".
А дальше самое интересное - одним элементом "Изменить права доступа" мы можем раздать необходимые права. Права необходимо раздать выборке сотрудников. Скриншот настроек прав для чтения прикрепил (EventRights.png). Аналогично нужно сделать для изменения и удаления. В блоке выше необходимо забрать права у всех пользователей и ролей.