Описание особенностей external-классов и их генерации

Стереотип external позволяет объявить класс, соответствующий любому внешнему (не объявленному, языковому) классу. Это удобно и необходимо в тех случаях, когда требуется оперировать типом, который в модели не объявлен, но объявлен где-то на уровне кода (для случая .Net-языка, - в исходных или подключенных к исходным сборках).

Пример внешнего класса:

Что генерируется с описания внешнего класса

Что генерируется Генерация в SQL DDL Генерация в .Net-язык
Любая часть любого UML-класса (атрибут, параметр метода и т.д.), объявленная этим типом Как есть или указывается преобразование в карте типов для генератора Как есть. Атрибут, параметр метода и т.п. объявляются этим типом

Ссылки на другие стадии

Так же через external-класс можно поставить ссылку на другую стадию. В этом случае будет генерироваться всё множество классов из этой и из той стадии. SQL будет аналогично сгенерирован для классов обоих стадий.

Особенности генерации

Если в исходной стадии и external стадии есть классы с одинаковым именем, то приоритет отдается external классу. При генерации БД все атрибуты из external класса сохраняются и к ним добавляются атрибуты из исходного класса. Если атрибут уже есть, то он не будет добавлен.
Приоритет отдается external классу, т.к. чаще всего это общеприкладные компоненты, например, “Аудит”, “Полномочия” и изменять их нельзя.
Например: Во внешней стадии есть класс с названием Класс1 и атрибутами А1 и А2:string, а в исходной стадии есть класс с таким же названием и атрибутами А2:int и А3. Тогда, при приведении базы данных в соответствие, будет сгенерирован класс Класс1 с атрибутами А1, А2:string и А3.