1. Добавить атрибут project_scope_folder ("Папка проекта") к Типу Элемента, привязанному к списку "Реестр проектов"
2. Перейти в список "Реестр проектов, на элементе заполнить атрибуты project_scope_folder из СХД и Lookup-атрибуты участников
3. В СХД указать Роли из ОШС в Lookup-атрибутах участников процессов
4. Добавить вычисление атрибута project_scope ("Карточка проекта") к ТЭ "Процесс"
5. Добавить вычисление атрибута project_scope ("Карточка проекта") в автоматизацию ТЭ "Задача"
1. Создается отдельный список "Реестр проектов":
2. Создается Lookup-атрибут со ссылкой на реестр проектов
3. Данный Lookup-атрибут добавляется на те элементы, на которые необходимо назначать ролевых пользователей
4. Значение этого атрибута задается:
1. Состав ролевых пользователей для проекта осуществляется на списке "Реестры проектов" в отдельных атрибутах (Мульти Lookup)
2. В организационную структуру добавляется новый ТЭ "Ролевой пользователь"
Ролевой пользователь — это группа пользователей, привязанная к проекту (например, Архитекторы, ГИПы, Инженеры и т.д.)
3. В ТЭ "Ролевой пользователь" есть обязательный атрибут Lookup-атрибут со ссылкой на реестр проектов/, где задается состав ролевой группы на проекте/
1. Cоздаются таблицы расшифровок функциональных групп и ролевых пользователей для Lookup-атрибутов (user_group_membership) со столбцами:
id (guid) — идентификатор расшифровки;
source (guid) — ID элемента;
field (guid) — ID Lookup-атрибута;
project (guid) — ID проекта;
group_list (guid[]) — список пользователей/групп;
principal_list (guid[]) — список пользователей/групп для расшифровки.
2. Для таблицы scope_read применяются следующие столбцы:
access_list (guid[]) — список групп/пользователей, имеющих доступ.
1. Алгоритм пересчета при изменении составов ролевых пользователей в проекте:
2. Алгоритм выбора элементов с проверкой прав на чтение:
выбираем документы с присоединенными путями и фильтруем по scope_read, используя пересечение access_list с группами текущего пользователя.
3. Алгоритм поиска по Lookup-атрибутам:
выбор документов через соответствующий поиск по Lookup (ugm.field соответствует нужному Lookup) с учетом группы доступа пользователя.