Объектный слой ORM (Object-relational mapping) в Creatio основан на объектах (Entity). Объект — это бизнес-сущность, которая позволяет объявить на уровне серверного ядра новый класс ORM-модели. На уровне базы создание объекта означает создание записи таблицы с таким же именем, как у созданного объекта, и с таким же составом колонок. То есть в большинстве случаев каждый объект в системе является системным представлением одной физической таблицы в базе данных.
Основой конфигурации Creatio является схема. Каждый тип элемента конфигурации представляется схемой соответствующего типа. С точки зрения программной реализации схема любого типа — это класс ядра, который наследуется от базового класса Schema.
Объект, как элемент конфигурации, представлен схемой объекта, которая реализована соответствующим классом EntitySchema. Именно в схеме объекта описывается состав колонок, индексов и методов объекта.
Различают базовые и пользовательские схемы объектов.
Базовые схемы объектов недоступны для редактирования и располагаются в предустановленных пакетах.
Пользовательские схемы объектов — это схемы, которые можно создавать при конфигурировании и помещать в свои пользовательские пакеты. Базовые схемы могут замещаться пользовательскими.
Cоздать пользовательскую схему объекта
Для создания пользовательской схемы объекта необходимо в разделе Конфигурация выбрать пользовательский пакет и на вкладке Схемы выполнить команду меню Добавить —> Объект.
В результате откроется окно дизайнера объектов, в котором выполняется настройка созданного объекта.
Для созданной схемы объекта необходимо присвоить значения следующим обязательным свойствам:
- Заголовок — локализуемый заголовок схемы. Значение по умолчанию устанавливается дизайнером объектов и может быть изменено.
- Название — название схемы. Значение по умолчанию устанавливается дизайнером объектов и может быть изменено. Должно содержать префикс, установленный в системной настройке Префикс названия объекта (SchemaNamePrefix). По умолчанию это префикс Usr.
- Пакет — пакет, в котором схема объекта будет размещена после публикации. По умолчанию содержит название пакета, выбранного перед созданием схемы. Значение может быть изменено на любое из выпадающего списка.
- Идентификатор — системная колонка, используемая в качестве первичного ключа в таблице базы данных. Показывается в расширенном режиме отображения свойств объекта.
Поскольку объект в системе является представлением записи таблицы в базе данных, то он обязательно должен содержать колонку-идентификатор, используемую в качестве первичного ключа таблицы. Если попытаться сохранить схему объекта без идентификатора, то система выдаст предупреждение.
Установить значение для свойства Идентификатор можно выбрав колонку определенного типа из выпадающего списка, либо указав один из базовых объектов системы в качестве родительского объекта.
Указать родительский объект
Для объектов Creatio реализован механизм наследования. Он может быть полезным в случае, если создаваемая схема объекта должна содержать функциональность, уже реализованную в существующих объектах. В большинстве случаев в качестве родительских используются базовые объекты системы, например, Базовый объект или Базовый справочник.
Чтобы реализовать наследование создаваемой схемы объекта от существующей, необходимо выбрать корневой элемент структуры схемы объекта. Затем в поле Родительский объект свойств схемы указать заголовок той базовой схемы объекта, функциональность которой требуется унаследовать. Например, чтобы наследовать функциональность схемы Базовый объект необходимо в поле Родительский объект свойств схемы начать вводить заголовок схемы Базовый объект и выбрать нужное значение из выпадающего списка.
После подтверждения выбранного родительского объекта к структуре объекта будут добавлены колонки, унаследованные от базового объекта.
Для временного сохранения всех изменений в метаданных схему объекта необходимо сохранить. Для окончательного сохранения схемы и создания соответствующей таблицы в базе данных схему необходимо опубликовать.
Добавить пользовательскую колонку в объект
Добавление пользовательской колонки в схему объекта будет рассмотрено на примере добавления колонки-идентификатора.
Для добавления пользовательской колонки можно использовать кнопку Добавить либо команду Добавить контекстного меню узла Колонки (Columns) в структуре объекта. В выпадающем меню выбирается тип колонки и далее задаются свойства колонки. Для добавления колонки-идентификатора следует выполнить команду Добавить —> Уникальный идентификатор.
Затем следует задать основные свойства колонки-идентификатора. Основные свойства, касающиеся добавляемой колонки:
- Заголовок — локализуемый заголовок колонки. Значение по умолчанию устанавливается дизайнером объектов и может быть изменено.
- Название — название колонки. Значение по умолчанию устанавливается дизайнером объектов и может быть изменено.
- Тип данных — тип данных, содержащихся в колонке. Значение по умолчанию устанавливается дизайнером объектов в зависимости от выполненной команды добавления колонки и может быть изменено.
- Обязательная для заполнения — устанавливает обязательность колонки. Поскольку колонка должна обязательно содержать значение, то для этого свойства необходимо выбрать "На уровне приложения".
- Значение по умолчанию — устанавливает значение по умолчанию. Для добавляемой колонки необходимо в диалоговом окне выбора значения по умолчанию выбрать вариант "Установить из системной переменной". Затем в поле Название следует выбрать название системной переменной. Поскольку все идентификаторы должны быть уникальными, следует выбрать значение "Новый идентификатор".
- Режим использования — режим использования "Расширенный".
После присвоения значений всем необходимым свойствам добавленной колонки схему следует сохранить.
Добавить индексы в объект
Кроме колонок в объект могут быть добавлены индексы, которые при публикации объекта будут автоматически созданы в таблице базы данных.
Если необходимо создать индекс по одной колонке, то для этой колонки достаточно установить признак Индексируемая в блоке свойств Поведение. По умолчанию в системе все справочные колонки являются индексируемыми.
Если нужно создать составной индекс по нескольким колонкам, то сделать это можно следующим образом:
- В контекстном меню элемента Индексы выбрать Добавить —> Индекс. Для индекса можно указать пользовательское название либо поставить опцию Автогенерируемое название. После этого система сгенерирует уникальное название индекса.
- Если для колонок индекса необходимо реализовать ограничение целостности, то есть исключить возможность вставки повторяющихся комбинаций значений, то для индекса следует установить признак Уникальный.
- Далее в индекс нужно добавить необходимые колонки. В контекстном меню узла индекса следует выполнить команду Добавить —> Колонка индекса. Затем для добавленной колонки нужно установить свойства — выбрать колонку объекта и указать направление сортировки.
Создать замещающую схему объекта
Замещающие схемы объектов предназначены для расширения функциональности уже существующих схем. При этом существующие схемы в свою очередь могут быть замещающими и принадлежать разным пакетам.
Для создания замещающей схемы объекта необходимо перейти в раздел Конфигурация и выбрать пользовательский пакет, в который будет добавлена новая схема модуля. Затем необходимо на вкладке Схемы выполнить команду Добавить —> Замещающий объект.
Чтобы реализовать замещение создаваемой схемы объекта, необходимо выбрать корневой элемент структуры схемы объекта. Затем в поле Родительский объект свойств схемы указать заголовок той базовой схемы объекта, функциональность которой требуется заместить. Например, чтобы заместить функциональность схемы Базовый объект необходимо в поле Родительский объект свойств схемы начать вводить заголовок схемы Базовый объект и выбрать нужное значение из выпадающего списка.
После подтверждения выбранного родительского объекта остальные поля свойств заполнятся автоматически.
После внесения всех изменений замещающую схему объекта нужно опубликовать.
Сохранить и опубликовать объект
Все изменения структуры бизнес-объекта, выполняемые в дизайнере, осуществляются в оперативной памяти.
Чтобы изменения были сохранены на уровне метаданных схемы, схему следует сохранить. Для этого нужно в дизайнере объектов выполнить команду Сохранить.
Для того чтобы изменения произошли на уровне базы данных, объект необходимо опубликовать. Результатом успешной публикации объекта являются созданные (или измененные) физические объекты в базе данных — таблица, столбцы, индексы.