Построение Метамодели#

Метамодель представляет собой контракт, или набор правил, по которому будет производиться проектирование в слое модели.

Для начала построения метамодели, необходимо создать проект с любым типом спецификации, или вовсе без нее. В верхнем меню виджета Сцена, с помощью переключателя выбора слоя отображения, необходимо выбрать слой метамодели.

В слое метамодели в виде узлов отображаются декларации типов объектов и связей. Взаимодействия между декларациями типов, например наследование, отображаются в виде связей между узлами.

Построение метамодели на примере спецификации Physical Data Model#

Декларация типов объектов#

Декларации типов объектов данной спецификации представлены узлами Procedure, View и Table, причем декларации типов View и Table унаследованы от декларации типа Entity, которая принадлежит спецификации Entity Relationship и неявно импортируется в метамодель вместе со спецификацией Physical Data Model.

Названия и атрибуты узлов заблокированы для изменений, т.к. декларации типов, соответствующие этим узлам, импортированы, и могут быть изменены только там, где они явно объявлены.

С помощью палитры объектов, создадим на сцене локальную деклорацию типа объекта LocalType. Внутри узла, соответствующего данной декларации типа, можно изменять его название, добавлять, редактировать и удалять атрибуты. Так же, можно заметить, как изменился код в виджете Редактор.

Декларация типов связей#

По аналогии с объектами, в метамодели отображаются и декларации типов связей спецификации: Reference, OneToMany, OneToOne, ManyToOne. Некоторые из перечисленных деклараций типов унаследованы от деклараций типов спецификации Entity Relationship.

С помощью палитры объектов, создадим на сцене две декларации типа связи, унаследуем одну от другой и обратим внимание на то, как изменился код в виджете Редактор.

Декларация типов типов#

Если возникает потребность в декларации сложного типа, который в дальнейшем будет использоваться в качестве типа какого-либо атрибута, то необходимо воспользоваться декларацией типа типа. Такие декларации никак не фигурируют в слое модели, и используются лишь в слое метамодели.

В метамодели Physical Data Model присутствуют следующие типы: PDMTrigger, PDMIndex, PDMAttribute. Данные типы используются декларациями объектов Table и View в качестве типов их атрибутов.

С помощью палитры объектов, создадим на сцене свой сложный тип для атрибутов декларации объекта LocalType и обратим внимание на то, как изменился код в виджете Редактор.

Взаимодействие с атрибутами узлов#

Каждый объект метамодели имеет секцию для добавления, удаления, редактирования атрибутов. Для взаимодействия с атрибутами необходимо нажать левой кнопкой мыши на данную секцию и произвести нужные изменения.

После того, как нужные изменения атрибутов будут сделаны, необходимо кликнуть в любую область сцены, кроме секции атрибутов, после чего будет произведена автоматическая валидация атрибутов. Изменения атрибутов, произведенные алгоритмом валидации, будут отображены в уведомлении в верхнем правом углу экрана.

Взаимодействие со слоем модели#

Выполнив в метамоделе изменения описанные выше, изменился и контракт построения модели. Если перейти в слой модели, то можно заметить, что на палитре объектов появились новые типы объектов и связей, доступные для перетаскивания на сцену. На рисунке ниже, в области визуального проектирования слоя модели, можно заметить по одному узлу на каждый из типов объектов. Некоторые узлы соединены между собой связями типа Link и DepLink.

Архитектурный артефакт типа LocalType имеет внешний вид по умолчанию - серый прямоугольник. Настройку его шаблона отображения можно выполнить в слое метамодели, в модальном окне просмотра всех свойств настриваемой декларации типа, или с помощью редактирования кода в виджете Редактор.

Аналогичным образом можно изменить внешний вид связей типа Link и DepLink.

Взаимодействие со слоем представлений#

Если в моделе определены представления, то они будут доступны для отображения в слое Представлений.

На изображениях ниже продемонстрировано выделение хранимых процедур модели в представления customerProcedures и orderProcedures.

Если пользователем создано большое количество представлений, то они будут показаны в виде списка, внутри которого есть возможность выполнить поиск или прикрепить те представления, с которыми работа ведется чаще.

Конструирование представлений#

С помощью кнопки «Создать» можно начать конструирование нового представления.

Новое представление по умолчанию включает в себя все модельные сущности, то есть отображает текущую модель. Для удаления сущности из предсталения, необходимо навести на нее мышь и нажать на кнопку «х». Для добавления модельной сущности в представление, необходимо нажать на кнопку «+» в соответствующей структуре и в появившемся боковом меню нажать на необходимые сущности.

Для редактирования уже созданных представлений, необходимо навести мышь на нужное представление из списка и нажать на появившуюся кнопку редактирования. Для удаления представления, необходимо нажать на кнопку «Удалить представление» в окне редактирования.