Публикация

Событийные права

Здравствуйте!

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

Бизнес-задача:

Предположим компания занимается короткими продажами, соответственно, в системе создаются сущности в разделе "Заказы".

Задача:

  1. В зависимости от состояния заказа, запись должна содержать следущие права:
  • На стадии "Оформление" - роль "Операторы" может читать и менять запись, роль "Старший оператор" может читать и удалять запись.
  • На стадии "Исполнение" - роль "Операторы", "Старший оператор" может читать запись, роль "Бухгалтер" может читать и редактировать.
  • На стадии "Завершен", "Отменен" - роли "Операторы", "Старший оператор", "Бухгалтер" может только видеть запись.

 

Решение:

Задача весьма тривиальная и может быть настроена, как было указано ранее, через условные потоки. Однако выбор такого решения не является оптимальным - в результате получится громоздкий, слабоподдерживаемый процесс.

 

Для красивого решения нам понадобится создать несколько объектов и один линейный процесс.

Объект будет содержать несколько полей. Пробежимся по полям объекта:

  • Объект Администрирования - это роль/пользователь, которому будут предоставлены права
  • Чтение - указывает может роль/пользователь видеть запись или нет
  • Изменение - указывает может роль/пользователь редактировать запись
  • Удаление - указывает может роль/пользователь удалить запись.

Это шаблон. В него нужно добавить дополнительные поля в зависимости от задачи. В нашей задаче права зависят только от состояния заказа, поэтому мы добавляем поле, ссылающееся на справочник "Состояние заказа".

 

Далее - создаем процесс. Начальные события - добавление записи в раздел "Заказы", изменение значения поля "Состояние".

Далее используем элемент "Чтение данных" для получения значения полей Id и "Состояние".

А дальше самое интересное - одним элементом "Изменить права доступа" мы можем раздать необходимые права. Права необходимо раздать выборке сотрудников. Скриншот настроек прав для чтения прикрепил (EventRights.png). Аналогично нужно сделать для изменения и удаления. В блоке выше необходимо забрать права у всех пользователей и ролей.

Нравится

Поделиться

0 комментариев
Показать все комментарии