Создание схемы объекта
Glossary Item Box
Общие сведения
Объектный слой ORM (Object-relational mapping) в Creatio основан на объектах (Entity). Объект — это бизнес-сущность, которая позволяет объявить на уровне серверного ядра новый класс ORM-модели. На уровне базы создание объекта означает создание записи таблицы с таким же именем, как у созданного объекта, и с таким же составом колонок. То есть в большинстве случаев каждый объект в системе является системным представлением одной физической таблицы в базе данных.
Основой конфигурации Creatio является схема. Каждый тип элемента конфигурации представляется схемой соответствующего типа. С точки зрения программной реализации схема любого типа — это класс ядра, который наследуется от базового класса Schema. Подробнее типы схем и их свойства описаны в статье "Архитектурные элементы конфигурации".
Объект, как элемент конфигурации, представлен схемой объекта, которая реализована соответствующим классом EntitySchema. Именно в схеме объекта описывается состав колонок, индексов и методов объекта.
Различают базовые и пользовательские схемы объектов.
Базовые схемы объектов недоступны для редактирования и располагаются в предустановленных пакетах.
Пользовательские схемы объектов — это схемы, которые можно создавать при конфигурировании и помещать в свои пользовательские пакеты. Базовые схемы могут замещаться пользовательскими.
Создание пользовательской схемы объекта
Для создания пользовательской схемы объекта необходимо в разделе [Конфигурация] выбрать пользовательский пакет и на вкладке [Схемы] выполнить команду меню [Добавить] — [Объект] (рис. 1). В результате откроется окно дизайнера объектов, в котором выполняется настройка созданного объекта.
Рис. 1. — Создание новой схемы объекта
Для созданной схемы объекта необходимо присвоить значения следующим обязательным свойствам (рис. 2):
- [Заголовок] — локализуемый заголовок схемы. Значение по умолчанию устанавливается дизайнером объектов и может быть изменено.
- [Название] — название схемы. Значение по умолчанию устанавливается дизайнером объектов и может быть изменено. Должно содержать префикс, установленный в системной настройке [Префикс названия объекта] (SchemaNamePrefix). По умолчанию это префикс Usr.
До версии приложения 7.9.1 максимально допустимая длина имени объекта составляла 30 символов. Для версий 7.9.1 и выше максимально допустимая длина имени объекта — 128 символов.
Объекты с длиной имени более 30 символов нельзя использовать на базах Oracle ниже версии 12.2.
- [Пакет] — пакет, в котором схема объекта будет размещена после публикации. По умолчанию содержит название пакета, выбранного перед созданием схемы. Значение может быть изменено на любое из выпадающего списка.
- [Идентификатор] — системная колонка, используемая в качестве первичного ключа в таблице базы данных. Показывается в расширенном режиме отображения свойств объекта (см. "Дизайнер объекта").
Рис. 2. — Обязательные свойства схемы объекта в дизайнере объектов
Для отображения всех свойств схемы в дизайнере объектов необходимо выбрать опцию [Все] в меню отображения свойств объекта (см. "Дизайнер объекта").
Поскольку объект в системе является представлением записи таблицы в базе данных, то он обязательно должен содержать колонку-идентификатор, используемую в качестве первичного ключа таблицы. Если попытаться сохранить схему объекта без идентификатора, то система выдаст предупреждение (рис. 3).
Рис. 3. — Предупреждение о незаполненном свойстве [Идентификатор]
Установить значение для свойства [Идентификатор] можно выбрав колонку определенного типа из выпадающего списка (рис. 4), либо указав один из базовых объектов системы в качестве родительского объекта.
Рис. 4. — Выбор колонки-идентификатора
Процесс создания колонки описан ниже в разделе "Добавление пользовательской колонки в объект".
Указание родительского объекта
Для объектов Creatio реализован механизм наследования. Он может быть полезным в случае, если создаваемая схема объекта должна содержать функциональность, уже реализованную в существующих объектах. В большинстве случаев в качестве родительских используются базовые объекты системы, например, [Базовый объект] или [Базовый справочник].
Чтобы реализовать наследование создаваемой схемы объекта от существующей, необходимо выбрать корневой элемент структуры схемы объекта (рис. 5, 1). Затем в поле [Родительский объект] свойств схемы указать заголовок той базовой схемы объекта, функциональность которой требуется унаследовать. Например, чтобы наследовать функциональность схемы [Базовый объект] необходимо в поле [Родительский объект] свойств схемы начать вводить заголовок схемы [Базовый объект] и выбрать нужное значение из выпадающего списка (рис. 5, 2).
Рис. 5. — Выбор родительской схемы объекта
После подтверждения выбранного родительского объекта (рис. 6) к структуре объекта будут добавлены колонки, унаследованные от базового объекта (рис. 7).
Рис. 6. — Диалог подтверждения использования родительского объекта
Рис. 7. — Унаследованные колонки в структуре объекта
Для отображения унаследованных колонок необходимо включить опцию [Показывать системные колонки] в окне настроек дизайнера объектов (см. "Дизайнер объекта").
Для временного сохранения всех изменений в метаданных схему объекта необходимо сохранить. Для окончательного сохранения схемы и создания соответствующей таблицы в базе данных схему необходимо опубликовать.
Добавление пользовательской колонки в объект
Добавление пользовательской колонки в схему объекта будет рассмотрено на примере добавления колонки-идентификатора.
Для добавления пользовательской колонки можно использовать кнопку [Добавить] (рис. 8) либо команду [Добавить] контекстного меню узла [Колонки] (Columns) в структуре объекта. В выпадающем меню выбирается тип колонки и далее задаются свойства колонки. Для добавления колонки-идентификатора следует выполнить команду [Добавить] — [Уникальный идентификатор].
Рис. 8. — Добавление колонки-идентификатора
Для отображения в меню добавления всех типов добавляемых колонок необходимо включить опцию [Отображать расширенный список типов колонок] в окне настроек дизайнера объектов (см. "Дизайнер объекта").
Затем следует задать основные свойства колонки-идентификатора (рис. 9). Основные свойства, касающиеся добавляемой колонки:
- [Заголовок] — локализуемый заголовок колонки. Значение по умолчанию устанавливается дизайнером объектов и может быть изменено.
- [Название] — название колонки. Значение по умолчанию устанавливается дизайнером объектов и может быть изменено.
- [Тип данных] — тип данных, содержащихся в колонке. Значение по умолчанию устанавливается дизайнером объектов в зависимости от выполненной команды добавления колонки и может быть изменено.
- [Обязательная для заполнения] — устанавливает обязательность колонки. Поскольку колонка должна обязательно содержать значение, то для этого свойства необходимо выбрать "На уровне приложения".
- [Значение по умолчанию] — устанавливает значение по умолчанию. Для добавляемой колонки необходимо в диалоговом окне выбора значения по умолчанию выбрать вариант "Установить из системной переменной" (рис. 10). Затем в поле [Название] следует выбрать название системной переменной. Поскольку все идентификаторы должны быть уникальными, следует выбрать значение "Новый идентификатор".
- [Режим использования] — режим использования "Расширенный".
Рис. 9. — Свойства колонки-идентификатора
Рис. 10. — Установка значения по умолчанию
После присвоения значений всем необходимым свойствам добавленной колонки схему следует сохранить.
Добавление индексов в объект
Кроме колонок в объект могут быть добавлены индексы, которые при публикации объекта будут автоматически созданы в таблице базы данных.
Если необходимо создать индекс по одной колонке, то для этой колонки достаточно установить признак [Индексируемая] в блоке свойств [Поведение]. По умолчанию в системе все справочные колонки являются индексируемыми.
Если нужно создать составной индекс по нескольким колонкам, то сделать это можно следующим образом:
- В контекстном меню элемента [Индексы] выбрать [Добавить] — [Индекс]. Для индекса можно указать пользовательское название либо поставить опцию [Автогенерируемое название]. После этого система сгенерирует уникальное название индекса.
- Если для колонок индекса необходимо реализовать ограничение целостности, то есть исключить возможность вставки повторяющихся комбинаций значений, то для индекса следует установить признак [Уникальный].
- Далее в индекс нужно добавить необходимые колонки. В контекстном меню узла индекса следует выполнить команду [Добавить] — [Колонка индекса]. Затем для добавленной колонки нужно установить свойства — выбрать колонку объекта и указать направление сортировки.
Создание замещающей схемы объекта
Замещающие схемы объектов предназначены для расширения функциональности уже существующих схем. При этом существующие схемы в свою очередь могут быть замещающими и принадлежать разным пакетам.
Для создания замещающей схемы объекта необходимо перейти в раздел [Конфигурация] и выбрать пользовательский пакет, в который будет добавлена новая схема модуля. Затем необходимо на вкладке [Схемы] выполнить команду [Добавить] — [Замещающий объект] (рис. 11).
Рис. 11. — Команда добавления замещающей схемы объекта
Чтобы реализовать замещение создаваемой схемы объекта, необходимо выбрать корневой элемент структуры схемы объекта (рис. 5, 1). Затем в поле [Родительский объект] свойств схемы указать заголовок той базовой схемы объекта, функциональность которой требуется заместить. Например, чтобы заместить функциональность схемы [Базовый объект] необходимо в поле [Родительский объект] свойств схемы начать вводить заголовок схемы [Базовый объект] и выбрать нужное значение из выпадающего списка (рис. 5, 2).
После подтверждения выбранного родительского объекта (рис. 6) остальные поля свойств заполнятся автоматически (рис. 12, 1).
Рис. 12. — Основные свойства замещающей схемы объекта
После внесения всех изменений замещающую схему объекта нужно опубликовать.
Сохранение и публикация объекта
Все изменения структуры бизнес-объекта, выполняемые в дизайнере, осуществляются в оперативной памяти.
Чтобы изменения были сохранены на уровне метаданных схемы, схему следует сохранить. Для этого нужно в дизайнере объектов выполнить команду [Сохранить].
Для того чтобы изменения произошли на уровне базы данных, объект необходимо опубликовать. Результатом успешной публикации объекта являются созданные (или измененные) физические объекты в базе данных — таблица, столбцы, индексы.