Моделирование организационной структуры
В дизайнере создается модель предметной области для системы Колибри, в которой задается несколько разделов - сущности, представления, интерфейс пользователя и разрешения.
Полностью модель представлена в файле shop.pml, которую можно использовать для генерации хранилища в новой базе данных или для изменения существующей базы данных. Также можно использовать sql-сценарий shop.sql, который создает необходимый набор ролей и пользователей (таблицы схемы security
), определяет организационную структуру и разрешения, с ней связанные (таблицы shop.org_xxx
).
Сущности
Для поддержки организационной структуры требуется определить типовые сущности Организация - Структура, Организация - Сущности, Организация - Метода Обхода, Организация - Типы разрешений, Организация - Разрешения (см. Организационная структура). Сущности соответствуют создаваемым в базе таблицам, а их атрибуты - колонкам.
Для иерархического справочника Организация - Структура (org_structure) создаются атрибуты Родитель (pid), Наименование (name), Роль (rolename), которые также используются в настройкам параметров типа сущности. Кроме того, добавлен атрибут N (n), содержащий порядок сортировки внутри иерархии.
Справочники Организация - Сущности (org_entity), Организация - Метода Обхода (org_htrace), Организация - Типы разрешений (org_permissiontype) являются малоизменяемыми и содержат пару атрибутов значения и названия.
Таблица Организация - Разрешения ссылается на четыре указанных выше справочника при помощи связей многие-к-одному, именно здесь указывается способ определения дополнительных организационных ролей для указанного узла организационной структуры при помощи указанного метода обхода для сущности и типа разрешения.
Также в примере используются бизнес сущности Заметка (note) с атрибутом Текст (text) и Продажа (sale) с атрибутами Товар (product), Количество (qty) и Цена (price)
Представления
В модели добавлены представления организационной структуры для просмотра и редактирования организационной структуры и сопутствующих справочников, а также представления бизнес данных (Продажи и Объявления).
Меню интерфейса пользователя и разрешения
Меню интерфейса пользователя предоставляет доступ к представлениям.
Разрешения для бизнес сущностей позволяют пользователям указанных ролей добавлять новые записи.
Пример работы организационной структуры и разрешений
Пример организационной структуры сети магазинов "Одежда и обувь"
title role roleinrole users names
Магазин "Одежда и обувь"
Директор магазина RH IVAN Иванов И.И.
Заведующий складом RW WMAN PETR Петров П.П.
Центральный филиал
Директор филиала CH HEAD MARI Маринина А.П.
Заведующий складом CW WMAN SMIR Смирнов А.С.
Отдел мужской одежды
Продавец MS SALE ALLA, ANNA
Старший продавец MM SMAN ALEX
Отдел женской одежды
Продавец WS SALE OLGA, OKSA
Старший продавец WM SMAN OLEG
Восточный филиал
Директор филиала EH HEAD INNA Иванова И.И.
Отдел одежды
Продавец DS SALE LENA, LARA
Старший продавец DM SMAN LUKA
Отдел обуви
Продавец SS SALE VIKA, VERA
Старший продавец SM SMAN VLAD
Продажи и разрешения типа Свой отдел
Посредством представления Продажи пользователь роли SALE может создавать новые записи сущности Продажа (sale).
Совет
Продавец Отдела обуви VIKA создает запись: Полуботинки s.Oliver, демисезонные, размер 44, синий;1;3599, которую видит Старший продавец VLAD см. Разрешения для Продажи, Свой отдел, Чтение, Старший продавец
Совет
Продавец Отдела одежды LENA создает запись: Куртка Baon, размер S, cold perch;1;7019, которую видит Старший продавец LUKA см. Разрешения для Продажи, Свой отдел, Чтение, Старший продавец
Объявления и разрешения типа Свой филиал
Посредством представления Объявления пользователь роли HEAD может создавать новые записи сущности Заметка (note).
Совет
Директор Восточного филиала INNA создает запись: Скидка на зимнюю одежду и обувь 10%, которую видят Старшие продавцы Восточного филиала см. Разрешения для Объявления, Свой филиал, Чтение, Старший продавец
Механизм работы примера
При создании новых записей система безопасности с учетом организационной структуры добавляет разрешения не только для пользователя, создавшего запись, но также и для всех его организационных ролей. Например, для продажи обуви пользователем VIKA будет создано дополнительное разрешение для роли SS.
При запросе разрешения определенного типа для пользователя, входящего в организационную роль, используется соответствующее разрешение для организационной структуры. Например, для пользователя VLAD при запросе данных о продажах будет использовано разрешение Продажи, Свой отдел, Чтение, Старший продавец тем самым набор ролей пользователя VLAD будет пополнен организационной ролью SS, тем самым пользователю VLAD будет доступна для чтения продажа, созданная пользователем VIKA.
Следует отметить, что следует отдельно создавать организационные разрешения для Чтения и Изменения - они используются в различных процедурах работы с данными.