Практикум. Система регистрации на мероприятия. Объектная модель.
Общие сведения об объектной модели
Реализация любого приложения начинается с создания предметной области, типов объекта, их атрибутов и настройки связи между элементами объектной модели.
Перед тем как приступить к настройке приложения необходимо выделить основные используемые понятия:
-
Атрибут – значимая характеристика объекта, используется для идентификации, классификации, выражения количественной характеристики или состояния объекта;
-
Тип объектов – набор характеристик(атрибутов);
-
Экземпляр – набор сведений о конкретном объекте, создается Системой при заполнении данными;
-
https://docs-public.gdcloud.org/platform/ru/architecture-of-system-objects.html#%D1%80%D0%B5%D0%B5%D1%81%D1%82%D1%80%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2[Реестр объектов] – накопитель сведений одного типа;
-
Связь – индикатор взаимоотношений между объектами. Существует 3 типа связей: наследования, агрегации и ассоциации.
При проектировании объектной модели существует возможность использовать готовые и создавать новые типы объектов. После описания типов данных и определения их характеристик платформа автоматически создаст оптимальные таблицы, ключи, индексы, связи и структуры.
Работа с объектной моделью включает в себя несколько этапов:
-
Создание предметной области, на которой будет происходить создание объектной модели;
-
Создание типов объекта. Перед созданием типа объекта необходима проверка отсутствия в Системе, что позволит обойти дублирование данных;
-
Определение атрибутивного состава нового типа объектов и других настроек;
-
Настройка связей ассоциации и агрегации между типами объекта;
-
Наполнение типа объектов данными – экземплярами объектов – и последующее использование созданного типа в реализации бизнес-приложения.
Описание модуля
Для решения рассматриваемой бизнес-задачи необходимо построить объектную модель, содержащую следующие типы объектов:
-
Мероприятие – ключевой тип объектов, объекты этого типа будут содержать данные мероприятий, которые будут заполнять организаторы и просматривать участники с возможностью регистрации на мероприятие;
-
Тип мероприятия – справочный тип объектов, который будет хранить описание типа мероприятий;
-
Площадка – справочный тип объектов, который будет хранить информацию о площадке для проведения мероприятий;
-
Контактное лицо - справочный тип объектов, экземпляры которого будут хранить информацию о контактных лицах площадок;
-
Участник - справочный тип объектов, который будет хранить в себе записи о зарегистрированных участниках мероприятий;
-
Заявка – тип объектов, экземпляры которого будут хранить информацию об участнике, мероприятии, на которое тот зарегистрировался, и электронный билет. Связывает типы Участник и Мероприятие.
Целевая объектная модель должна выглядеть следующим образом:
Создание объектной модели
Для удобства работы на платформе предусмотрена работа с моделью данных в виде ER-диаграммы (диаграммы предметной области), которая наглядно отображает состав и связи между элементами настраиваемой объектной модели.
Для создания новой ER-диаграммы необходимо на стартовой странице в виджете «Предметные области» нажать на кнопку «Создать».
В результате появится окно создания новой предметной области.
Щелчком мыши по текущему наименованию предметной области зададим новое наименование - «Мероприятия».
Создание типа объекта «Мероприятие»
Для реализации объектной модели используются типы объектов для описания сущностей.
В редакторе предметной области предусмотрено добавление уже имеющихся типов (системных) и создание новых.
Для создания нового типа объектов в предметной области необходимо нажать на кнопку «Создать новый тип объекта».
В результате появится окно создания нового типа объекта.
В блоке «Основное» данной формы расположены поля, отвечающие за наименование объекта, его отражение в БД в качестве реляционной таблицы, а также указывается объектродитель, от которого будут унаследованы базовые атрибуты. Родитель «Объект» - является абстрактным объектом, содержащим минимально необходимый набор атрибутов. Важно корректно заполнить поля «Наименование таблицы» и «Родитель», так как после сохранения данного типа, изменить их будет нельзя.
Создадим тип объектов под названием «Мероприятие» [EVENT]. Это ключевой тип объектов, объекты этого типа будут содержать данные мероприятий, которые будут заполнять организаторы и просматривать участники с возможностью регистрации на мероприятие. Необходимо заполнить основные поля в окне настройки типа. В качестве родителя при создании нового типа выберем тип объекта – «Объект». После заполнения ключевых полей нужно сохранить изменения с помощью кнопки «Сохранить».
Необходимо сразу корректно заполнить поля «Наименование таблицы» и «Родитель», так как после сохранения данного типа, изменить их будет нельзя. |
В блоке «Дополнительные настройки» можно указать расширенные настройки создаваемого типа объектов.
Перейдем на вкладку «Контроль доступа» и определим вид контроля прав «Все пользователи имеют полный доступ». Данный вид контроля прав позволяет настроить все возможные действия для всех пользователей. При этом право на создание, редактирование и удаление экземпляров будет назначено отдельно. В дальнейшем необходимо настроить данный вид контроля прав для всех создаваемых типов объектов в рамках данного бизнес-кейса.
В нижней части формы на первой вкладке расположены атрибуты объекта. На вкладке «Атрибуты» отображается список всех атрибутов данного типа в таблице. При создании нового объекта на данной вкладке располагаются атрибуты, унаследованные от родителя. Чтобы обратиться к ним, необходимо установить чек-бокс «Показать атрибуты родительского типа».
В списке атрибутов указываются и собственные атрибуты - специально созданные или существующие, добавленные с другого типа объектов атрибуты.
Рассмотрим создание нового атрибута «Дата окончания мероприятия». Нажмем на кнопку «Добавить новый». Заполним поля Наименование – «Дата окончания мероприятия», Наименование поля для таблицы – [END_EVENT_DATE], Тип – «Дата и время». Нажмем на кнопку «Ок» и сохраним внесённые изменения.
Аналогичным образом создадим атрибут «Дата начала мероприятия» [START_EVENT_DATE], тип – Дата и время:
Добавим существующий атрибут. Нажмем на кнопку «Добавить существующий». Выберем из полного списка атрибут «Изображение» [SYS_IMAGE].
Откроем добавленный атрибут на редактирование, воспользовавшись кнопкой в поле работы с атрибутом или нажав дважды на необходимый атрибут, и изменим название на «Фото мероприятия».
Настроим визуал атрибута на вкладке «Визуал»: сделаем активными чек-боксы «Скрывать кнопки во всплывающее меню» и «Автоматический подбор ширины изображения».
Сохраним изменения в окне настройки типа объекта и в предметной области.
Атрибуты могут быть отредактированы, при этом тип атрибута и Наименование поля для таблицы изменить нельзя. Атрибутивный состав может быть дополнен в ходе работы с объектной моделью.
Создание справочников
Создание типа объекта «Тип мероприятия»
Создадим в предметной области новый тип объекта, который будет хранить описание типа мероприятий - «Тип мероприятия» [EVENT_TYPE]. Сохраним тип объектов.
Перейдем в раздел «Дополнительные настройки» и настроим вид контроля прав - «Все пользователи имеют полный доступ».
Сохраним предметную область с помощью кнопки на панели управления.
Создание типа объекта «Площадка»
Создадим в предметной области новый тип объекта, который будет хранить информацию о площадке для проведения мероприятий - «Площадка» [EVENT_PLATFORM]. Сохраним тип объектов.
Настроим вид контроля прав - «Все пользователи имеют полный доступ».
Добавим для типа объекта «Площадка» новые атрибуты:
-
Возможность подключения online [IS_ONLINE_AVAILABLE], тип – логический – визуал «Логический атрибут в виде переключателя»;
-
Часы работы [OPEN_HOURS], тип – строка.
Добавим существующий атрибут «Место и адрес мероприятия» [EVENT_ADDRESS]:
Поменяем наименование атрибута на «Адрес» и заполним поле Размер значением «2000»:
Сохраним предметную область с помощью кнопки на панели управления.
Создание типа объекта «Контактное лицо»
Создадим в предметной области новый тип объекта - «Контактное лицо» [EVENT_CONTACT], экземпляры которого будут хранить информацию о контактных лицах площадок. В качестве родителя выберите из списка тип объекта «Сотрудник», поскольку создаваемый тип является результатом развития существующей структуры и будет наследовать необходимые атрибуты типа объекта «Сотрудник». Сохраним тип объектов.
Настроим вид контроля прав - «Все пользователи имеют полный доступ».
Так как родительские атрибуты принадлежат типу «Сотрудник», некоторые из них недоступны для использования обычного пользователя.
Для родительских атрибутов «Телефон» [PHONE] и «E-MAIL» [EMAIL] очистите значения визуала, чтобы при заполнении объекта типа «Контактное лицо» избежать ошибки из-за незаполненных полей. Для этого активируйте чек-бокс «Показать атрибуты родительского типа», найдите атрибуты и двойным нажатием откройте их для редактирования. Во вкладке «Визуал» с помощью кнопки с иконкой ластика очистите поле.
Создадим новый атрибут «Номер телефона» [CONTACT_PHONE], тип – строка, Визуал – «Телефон».
Сохраним предметную область с помощью кнопки на панели управления.
Создание типа объекта «Участник»
Создадим в предметной области новый тип объекта, который будет хранить в себе записи об участниках мероприятий - «Участник» [PARTICIPANT] с объектом-родителем «Сотрудник». Настроим вид контроля прав - «Все пользователи имеют полный доступ». Сохраним тип объектов.
Сохраним предметную область с помощью кнопки на панели управления.
Создание типа объекта «Заявка»
Создадим в предметной области новый тип объекта, в которых будут храниться записи с указанием участников на мероприятия - «Заявка» [EVENT_REQUEST]. Настроим вид контроля прав - «Все пользователи имеют полный доступ». Сохраним тип объектов.
Добавим существующий атрибут «Прикрепленные файлы» [SYS_FILE_ID] и поменяем его наименование на «Электронный билет» – в нем будут храниться билет на мероприятие конкретного участника. Во вкладке «Визуал» очистите значение представления.
Сохраним предметную область с помощью кнопки на панели управления.
Создание связей между типами объектов
Для созданных типов объектов настроим связи между ними.
Ассоциативные связи для типа объекта «Мероприятие»
Для настройки связи необходимо кликнуть правой клавишей мыши по исходному типу объектов, раскрыть панель действий и выбрать «Создать ассоциативную связь», затем кликнуть по целевому типу объектов, к которому нужно настроить связь.
Настроим ассоциативную связь от типа объектов «Мероприятие» к типу объектов «Площадка». В появившемся модальном окне создания нового объектного атрибута «Площадка» в типе объекта «Мероприятие» нажмем на кнопку «Ок», таким образом настроив связь. Сохраним предметную область с помощью кнопки на панели управления.
Таким образом объектный атрибут «Площадка» будет добавлен в тип объектов «Мероприятие».
Аналогичным образом, путем создания ассоциативных связей, добавим объектный атрибут «Тип мероприятия» [EVENT_TYPE_ID] в тип объекта «Мероприятие».
Сохраним предметную область с помощью кнопки на панели управления.
Ассоциативные связи для типа объекта «Заявка»
Добавим ассоциативную связь от типа «Заявка» к типу объекта «Мероприятие»: добавим атрибут «Мероприятие» [EVENT_ID].
Сохраним предметную область с помощью кнопки на панели управления.
Добавим ассоциативную связь от типа объектов «Заявка» к типу объектов «Участник»: добавьте атрибут «Участник» [PARTICIPANT_ID].
Сохраним предметную область с помощью кнопки на панели управления.
Ассоциативные связи для типа объектов «Контактное лицо»
Добавим ассоциативную связь от типа объектов «Контактное лицо» к типу «Площадка»: добавьте атрибут «Площадка» [PLATFORM_ID].
Сохраним предметную область с помощью кнопки на панели управления.
Преобразование ассоциативных связей в связи агрегации
Для добавления дочернего атрибута в тип объектов используется преобразование ассоциативной связи в связь агрегации. Для этого необходимо кликнуть правой кнопкой мыши по стрелке ассоциативной связи между типами объектов и выбрать команду «Преобразовать в связь агрегации».
Добавим дочерний объект «Контактное лицо» в тип объекта «Площадка» через предметную область. Для этого кликнем правой кнопкой мыши по стрелке ассоциативной связи между типами объектов «Площадка» и «Контактное лицо» и выберем команду «Преобразовать в связь агрегации».
Появится окно добавления дочернего атрибута. Применим новый тип связи и создание атрибута по кнопке «Ок».
Сохраним предметную область с помощью кнопки на панели управления.
Аналогично изменим тип связи и добавим дочерний объект «Заявки участников» в тип объекта «Мероприятие».
Сохраним изменения на предметной области. В результате должна получиться следующая диаграмма предметной области:
На этом настройка объектной модели в рамках практикума «Система регистрации на мероприятия» завершена.