3. Внутренняя организация (описание для администратора)
Данное описание отвечает на вопросы какие объекты есть в Системе и как эти объекты связаны друг с другом.
3.1. Правила, на которых построена внутренняя организация системы
- Физические лица представлены в системе объектом Пользователь
- Юридические лица представлены в системе объектом Фирма
- Для каждой фирмы задается несколько групп пользователей
- Отношение пользователя к фирме задается включением его в пользовательские
группы этой фирмы
- Вся полезная информация в Системе представлена в виде иерархии Документов
- Документ могжет быть простым или состоять из набора документов разных типов или списка из нескольких документов одного типа
- Любой документ принадлежит какому-то конкретному и только одному типу документа, шаблону документа, документу-предку.
- Любой документ имеет конкретного автора
3.2. Объекты внутренней организации Системы
3.2.1. Пользователи
Пользователь может произвести какие-либо действия в системе только в том случае, если эти действия разрешены ему лично (например, удаление собственного сообщения) или разрешены одной из групп, в которые он входит (например, любой член группы клиентов может сделать заказ)
Для того, чтобы физическому лицу был поставлен в соответствие некоторый пользователь, оно должно выполнить Авторизацию (ввод имени и пароля). До успешной авторизации физическому лицу соответствует пользователь Гость (является единственным членом системной группы Гости) и доступные только разрешенные группе Гости методы и данные
Авторизация возможна в ЛЮБОМ POST запросе к ЛЮБОМУ объекту ЛЮБОГО сервера. Для этого в запросе, отправляемом на сервер методом POST, должны быть указаны поля uin и psw. В этом случае перед выполнением запроса будет произведена попытка авторизации. При неуспехе пользователь станет "Неавторизованным" (guest) независимо от того, был ли он успешно авторизован ранее (в предыдущих запросах)
Информация о пользователе хранится в [users] и [userdefs]
Пользователь идентифицируется кодом [users].uid
Учетные записи пользователей общие для всех серверов одного хоста.
Данные пользователя недоступны никому другому и права пользователя (в т.ч. администраторские) назначенные в одной системе (для одного сайта) никак не связаны с другими сайтами.
Управление пользователями осуществляется включением или исключением их из группы и назначением/изъятием у этой группы ролей для документов и шаблонов.
Примеры пользователей
- 4 администратор сайта прайс-листов
- 5 админ продуктов сайта прайс-листов
- 6 оператор продуктов сайта прайс-листов
- 7 админ сайта из раздела продуктов
- 8 оператор прайсов сайта из раздела продуктов
- 9 оператор новостей сайта из раздела продуктов
- (авторизованный на сайте прайс-листов)
- (гость сайта прайс-листов)
- администратор форума 14 сайта 3
- администратор заказов клиента 12 сайта 3
- 10 админ продуктов сайта kuban.org.ru
- (авторизованный на сайте kuban.org.ru)
- 11 владелец паги МММ на kuban.org.ru
- 12 админ сайта kuban.org.ru
- 13 гость закрытого сайта фармы
- 14 авториз закрытого сайта фармы
- 15 клиент закрытого сайта фармы
- 16 админ закрытого сайта фармы
- 17 гость farma.ru
- 18 авториз farma.ru
- 19 клиент farma.ru
- 20 админ farma.ru
- 21 гость безюзерского сайта
- 17 Владелец хоста/сервера
3.2.2. Группы пользователей
Каждая фирма имеет свои собственные группы пользователей. Группы пользователей организованы иерархически. Некоторая часть этой иерархии задается разработчиком, некоторая - администратором при создании фирмы, остальные - администратором в процессе эксплуатации. Права на изменения групп в процессе эксплуатации могут быть делегированы другим пользователям
Использование Групп пользователей имеет целью реализацию в Системе следующих правил:
- Любой пользователь может быть клиентом и(или) сотрудником фирмы
- Права пользователя на доступ к документам, создание документов и выполнение связанных с документами операций определяются на основе групп, в которые входит данный пользователь
- Иерархия групп пользователей позволяет описать все необходимые для работы с документами (и получения статистических отчетов) свойства любого пользователя
? Отношение к группе - это привилегия, назначенная кем-то когда-то и которая может иметь срок действия.
2.2. Системные группы
Существуют системные группы, членом которых пользователь
может являться для любого объекта. Принадлежность пользователя к
таким группам не администрируется, а определяется программно помещением
в [usergroups] строки
0
Системные группы:
0 Все пользователи
1 Анонимные пользователи
2 Авторизованные пользователи
В группу 1 входит только пользователь guest (любой неавторизованный)
Включение пользователя в группы 0 и 2 производится автоматически при
его создании. В группу 0 также входит guest
Анонимные пользователи входят в гр 0 и 1
Авторизованные - в 0,1,2
члены пользовательских групп (дополнительно к своим группам) в 0,1,2
2.3. Пользовательские группы
Группы, привязанные к объекту. Принадлежность пользователя к таким
группам задается вручную администратором объекта
3.2.3. Сайты
Сайт - это совокупность данных (группы пользователей, типы документов и созданные документы) и методов работы с ними (функции управления пользователями, создания типов документов и работы с документами). Администраторы сайта управляют группами и типами документов, все действия остальных пользователей сводятся к созданию, отправке и получению документов различных типов в рамках своих прав доступа. Одним из видов сайта является Сайт фирмы
3.2.4. Документы
Базовой единицей информации в Системе является Документ.
Документы создаются пользователями на основе Шаблонов документов путем заполнения
необходимых атрибутов (или выбора значения атрибута из списка допустимых для шаблона)
Например: Пользователь из группы "Клиенты/Физ.лица" может создать документ на
основе шаблона "заказ по розничному прайсу". Шаблоны документов создаются
администратором для заданных Типов документов в процессе настройки и эксплуатации
системы.
Типы документов создаются в процессе разработки или последующих модификаций системы. Описание типа содержит информацию о методах, состояниях, ролях пользователей. Кроме того, возможные ограничения на иерархию типов (списки допустимых типов предков/потомков)
Тип документа имеет обязательный атрибут Структура. Возможные структуры документов - атом (текст, рисунок, файл, ссылка), набор (комбинация текста и рисунков, страница сайта), список (список тем, новостей, ссылок, методов) и Есписок (прайс, опросы).
В случае набора описание типа содержит список допустимых типов документов-потомков, описание шаблона - список подключаемых к документу данного шаблона типов документов.
В случае списка описание типа содержит тип документов-потомков (элементов списка).
Есписок отличается от списка только тем, что имеет атрибут "Текущий элемент списка" и он выводится в методе index. Для вывода элементов списка используется метод list
Системные документы создаются в процессе первоначальной настройки администратором или автоматически (Сервер, Сайт, Группа пользователей, Контент фирмы)
Пользовательские документы создаются пользователями в процессе эксплуатации Системы (Тема форума, Сообщение, Заказ, Прайс).
Шаблоны документов создаются администраторами на основе Типов документов путем указания ролей групп пользователей. Также шаблоны содержат информацию об иерархии документов в системе. Т.е. для шаблона документа указывается список шаблонов документов-потомков.
?Для любого заданного документа D1 (шаблон S1), право пользователя создать подчиненный
документ D2 (шаблон S2) определяется существованием тройки (S1,S2,A,G), где A - уровень доступа
"Создание" и G - одна из групп пользователя.
Например, для шаблона "розничный прайс-лист" могут быть заданы S2="заказ по розничному
прайсу" и G="физ. лица"
Описание шаблона содержит код шаблона-предка и таблицу пар "Роль - Группа пользователей".
Реестр документов содержит для каждого документа информацию:
- Код документа
- Код шаблона
- Код типа документа ?(избыточно - есть также в описании шаблона)
- Код документа-предка
- Текущее состояние
- Порядковый номер текущего состояния в списке имевшихся состояний
- Роли пользователей (пары Роль-Код пользователя)
3.2.5. Разграничение доступа
Разграничение доступа применяется при
- выполнении заданного метода документа
- получении списка документов, подчиненных заданному, для которых пользователю разрешено выполнение заданного метода
- получении списка доступных методов для заданного документа
- получении списка ролей, которые можно назначить (назначены) для документа заданной группе пользователей
- получении списков пользователей и групп, которым назначены роли для заданного документа
И для администрирования при
При показе страницы документа структуры набор или список вызываются методы
link или channel для подчиненных документов. Если у пользователя
нет прав на такой метод для какого-либо из подчиненных документов, метод вернет пустую
строку и этот документ не будет показан.
3.3. Документная модель
Документ - конкретный набор данных, методов и прав доступа, созданный на основе типа по некоторому шаблону
3.3.2. Состояния документов
В процессе существования документы принимают различные состояния (Черновик, Опубликован, К исполнению, В архиве, Удален). Допустимые состояния документа определяются его типом. Изменение состояния происходит при выполнении методов. Каждый тип документа связан с определенным набором состояний.
3.3.3. Роли
Действия, которые могут выполняться над документами (методы) соответствуют некоторым ролям пользователей по отношению к документу (Автор, Посетитель, Адресат сообщения). Для каждого типа документа в Системе задается список возможных по отношению к документу ролей. Для каждой роли указывается тип роли - роль пользователя или роль группы пользователей.
3.3.4. Классы документооборота
Совокупность состояний и ролей описывает общие характеристики документооборота для документов различных типов. Эти характеристики описаны в Системе в виде классов документов.Типы документов относятся к одному классу, если они имеют одинаковые списки состояний и ролей
3.3.4.1. Система
Состояния
Код Состояние ~~~ ~~~~~~~~~ 1 READY Опубликован
Роли
Код Роль ~~~ ~~~~~~~~~~~~~~~ 1 USR Посетитель 2 ADM Администратор
3.3.4.2. Конейнер
Состояния
Код Состояние ~~~ ~~~~~~~~~ 1 NONE Не существует 2 DRAFT Черновик 3 READY Опубликован
Роли
Код Роль ~~~ ~~~~~~~~~~~~~~~ 1 CRE Может создать 2 OWN Владелец 3 USR Посетитель 4 ADM Администратор
3.3.4.3. Публикация
Состояния
Код Состояние ~~~ ~~~~~~~~~ 1 NONE Не существует 2 DRAFT Черновик 3 READY Опубликован
Роли
Код Роль ~~~ ~~~~~~~~~~~~~~~ 1 CRE Может создать 2 OWN Владелец 3 USR Посетитель 4 ADM Администратор 5 BOS Наблюдатель 6 SSR Подписчик
3.3.4.4. Запрос
Состояния
Код Состояние ~~~ ~~~~~~~~~ 1 NONE Не существует 2 DRAFT Черновик 3 WFK Ожидает координатора 4 WFR Ожидает ответа адресата 5 WFA Ожидает дополнения автора 6 WFS Ожидает завершения 7 READY Завершен
Роли
Код Роль ~~~ ~~~~~~~~~~~~~~~ 1 CRE Может создать 2 OWN Владелец 3 RTR Координатор 4 RPC Исполнитель 5 ADM Администратор 6 BOS Наблюдатель
3.3.5. Права на работу с документом
Для каждой пары Состояние-Роль при описании типа документов задан список доступных методов. Для каждого метода указывается состояние документа после успешного выполнения метода и флаг обязательности выполнения данного метода (при его наличии документ попадает в список "К исполнению" соответствующего пользователя
3.3.6 Общие методы
Следующие методы реализованы для всех типов документов:
index - изображение документа как главного содержимого страницы. Этот метод вызывается, если запрос к документу не содержит обращения к его методам.
index для списка документов имеет аргументы, позволяющие указать порядок сортировки списка, размер страницы и номер текущей страницы.
Во всех случаях index может иметь свои собственные аргументы.
список аргументов метода index для набора может содержать агрументы методов включенных в набор документов
channel - изображение документа в составе набора или списка. Содержит аннотацию, статистику или основную часть документа. Например, для списка тем форума этот метод позволяет показать статистику форума (кол-во тем, сообщений, дату обновления и т п)
link - вывод ссылки на документ (адреса и названия документа)
menu - список методов документа, доступных данному пользователю. Содержит список ссылок на методы документа. Внешний вид меню задается подсистемой визуализации на основе стиля. Доступ к данному методу поддерживается программно, он не включается в права ролей.
setup - вывод страницы настройки реквизитов документа (редактирование текста и т п)
access - вывод страницы настройки прав доступа к документу
При отсутствии у пользователя прав на вызов метода, метод возвращает пустую строку и сохраняет сообщение об ошибке в протоколе сеанса (кроме случая неявного вызова метода link или channel при построении других страниц сайта) по
3.3.7 Описание типа документа
Описание типа содержит:
- Список методов документов данного типа (Метод|Агрументы)
- Список доступных методов для каждой пары Состояние-Роль
Код класса документа (по которому определяются списки состояний и ролей)
Некоторые документы могут принимать одно состояние (например, "К исполнению") несколько раз. Эти состояния могут быть связаны с разными пользователями.
3.4. Иерархия документов
1 Сервер (www.pharma.ru)
+---- 2 /style - Настройка стиля сервера пользователем
+---- 3 /register, /login, /logout - Команды сеанса пользователя
+---- 4 Сайт (документ "по умолчанию")
+----- 4.1 /sitestyle - Настройка деталей стиля сайта админом
+----- 4.2 /groups - Группы пользователей (Управление)
+----- 4.3 /forum - Форумы
| +----- 4.3.1 /23 - форум N 23
| +----- 4.3.2 /index - команда по умолчанию
+----- 4.4 /news - Новости
+----- 4.5 /poll - Опросы
+----- 4.6 Контент (Фирма | Персона | Том | Раздел) - (документ "по умолчанию")
+----- 4.6.1 /price - Прайс
+----- 4.6.2 /home - Стартовая страница авторизованного клиента
+----- 4.6.3 /work - Стартовая страница авторизованного сотрудника
+----- 4.6.4 /index - команда по умолчанию
Обработка запроса пользователя заключается в определении его принадлежности к
- списку методов документа (3)
- списку псевдонимов типов подчиненных документов, если текущий документ - набор (2, 4.1-4.5)
- списку псевдонимов подчиненных документов, если текущий документ - список (4.3.1)
- подчиненному документу "по умолчанию" (4, 4.6)
- методу "по умолчанию" (4.3.2, 4.6.4)