Когда в качестве источника для генерации модели EMF используется диаграмма классов Rational Rose, то часть информации о каждом пакете, которую невозможно описать на языке UML, генератор должен выводить из имени этого пакета. Однако гораздо предпочтительнее было бы сохранять такую информацию непосредственно в модели Rose в качестве свойств модели.
Для того чтобы показать, как это сделать, используем несколько видоизмененный вариант модели библиотеки из учебника Генерация модели EMF: library.mdl.
Элементы модели должны принадлежать пакету. Если есть какие-то элементы, которые не входят в пакет, то при преобразовании модели в формат Ecore для этих элементов будет создан пакет, а его свойства будут выводиться из имени модели.
Дополнительные свойства модели Rose в Ecore определяются в файле свойств "ecore.pty". Для того чтобы их можно было задать, их следует добавить в словарь Rose.
Теперь можно изменить свойства пакета Ecore.
Свойства, которые можно устанавливать, подразделяются на две группы: свойства самой модели Ecore и свойства GenModel, которая управляет генерацией кода.
Свойства Ecore следующие:
packageName Имя пакета Ecore, если оно отличается от имени Rose/UML. Если это свойство не задано, то применяется имя пакета Rose, преобразованное в нижний регистр. nsPrefix Префикс пространства имен для пространства имен XML пакета, используемый в составном имени для выбора пространства имен пакета. Если это свойство не задано, используется значение свойства packageName, дополненное значением свойства basePackage. nsURI Уникальная ссылка URI, которая идентифицирует пространство имен XML пакета. Если это свойство не задано, то применяется значение свойства nsPrefix, к которому в начале прибавляется "http:///", в конце - ".ecore", а все символы "/" заменяются точками ("."). annotation Любые аннотации, прикрепляемые к пакету. Аннотации предоставляют гибкий механизм для присоединения дополнительной информации к элементам модели Ecore. Аннотация идентифицируется источником - уникальной строкой, которая обычно представляет собой URI и включает строку пар ключ-значение. Она задается следующим образом:
http://www.example.org/URIисточника ключ1='значение1' ключ2='значение2' ...
Свойства GenModel следующие:
prefix Префикс, используемый в именах генерируемого пакета, фабрики, переключателя, фабрики адаптеров (и многих) классов для этого пакета. Если префикс не задан, то используется значение свойства packageName, первая буква которого - заглавная. basePackage Пакет Java, подпакетом которого является генерируемый пакет. Это позволяет легко генерировать код с глобальными уникальными именами пакетов (без моделирования пустых вложенных базовых пакетов). Если это свойство не задано, никакие значения по умолчанию не используются.
В дополнение к перечисленным свойствам пакетов файл свойств Ecore определяет свойства для классов, атрибутов, связей и операций, которые можно найти на вкладке "Ecore" соответствующего окна Спецификация.