© Copyright International Business Machines Corporation 2006. Все права защищены. Ограниченные права пользователей государственных учреждений США - Использование, копирование или обнародование регламентируется Контрактом GSA ADP с IBM Corp.
В преобразованиях модели в целевую модель UML 2 профайлы UML по умолчанию не преобразуются автоматически. Например, профайл UML default.epx не преобразуется автоматически. Эти профайлы необходимо преобразовать вручную, или использовать среду UMLDefaultLibrariesAddRule. Эту среду можно добавить в преобразование вручную, если целевая модель - это модель UML EClass.
Для того чтобы добавить среду в преобразование, включите в преобразование следующий код:
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated NOT
*/
protected void addTransformElements(Registry registry) {
add(new UMLDefaultLibrariesAddRule());
addGeneratedTransformElements(registry);
// You may add more transform element after the generated ones here
// Remember to remove the @generated tag or add NOT to it
}
Для поддержки "fuse" в целевой модели в преобразованиях модель-модель необходим модуль с расширением "org.eclipse.core.runtime.contentTypes" в рабочей области Eclipse. Это расширение можно указать в модуле, доменное имя которого порождается от домена целевой модели. Дополнительная информация об этом расширении приведена в документации точки расширения в разделе о сравнении и объединении проекта. Это позволяет применять сложные стратегии fuse для целевой модели. Для более простой стратегии EMF можно указать следующее расширение (замените "xxx" на нужное расширение файла):
<extension
point="org.eclipse.core.runtime.contentTypes">
<file-association
content-type="com.ibm.xtools.comparemerge.emf.emfContentType"
file-extensions="xxx"/>
</extension>
В преобразованиях модель-модель входные или выходные модели Ecore должны иметь соответствующие базовые модели. Для того чтобы создать базовые модели, используйте мастер моделей EMF. Обязательно сгенерируйте код после создания базовой модели. Базовые модели должны быть зарегистрированы в среде разработки, или они должны быть расположены по тому же пути, что и соответствующие модели Ecore. Базовая модель должна быть сохранена в файле с расширением .genmodel, с похожим именем в том же регистре, что и модель Ecore. В противном случае модуль преобразований не найдет базовую модель. Если модуль преобразований не найдет базовую модель, то код не будет сгенерирован.
В конфигурации преобразования модель-модель необходимо указать файл, представляющий целевую модель, даже если этот файл пустой. Целевой контейнер не может быть URI.
Для того чтобы создать пустую модель Ecore, на главной странице редактора конфигурации преобразования или мастера нажмите Создать новый целевой контейнер и укажите файл, имеющий расширение целевой модели.
Для того чтобы преобразование модель-модель могло работать для преобразования JET (модели в текст), необходимо вручную добавить экземпляр среды JETRule в правила 'postProcessing' RootTransformation, относящегося к провайдеру преобразования. Ниже приведен пример кода, включаемого в класс провайдера преобразования. Замените 'xxx' на ИД преобразования JET.
/**
* Создать корневое преобразование. Здесь можно добавить другие правила преобразования
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param transform The root transformation
* @generated NOT
*/
protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
return new RootTransformation(descriptor, new MainTransform()) {
protected void addPostProcessingRules() {
add(new JETRule("xxx"));
}
};
}
Для того чтобы сгенерировать преобразования, которые используют в качестве входа или выхода модели UML, необходимо добавить метамодель UML в качестве корневого входа и/или выхода спецификации преобразования. Добавление профайла UML к спецификации преобразования не добавляет автоматически метамодель UML.
Рекомендация: Добавьте мета-модель UML кнопкой Добавить модель в мастере или редакторе преобразования модель-модель.
Если пользователь переключает режим фильтрации из "Основного" в "Промежуточный" или в "Расширенный режим", создает преобразования, а затем переключается обратно в "Основной" режим фильтрации, то некоторые из конечных точек преобразования перестают быть видимы. Вследствие этого может показаться, что соединительные линии преобразований имеют концы, которые ни с чем не соединены. Это влияет только на внешний вид отображения. Само преобразование и генерируемый исходный текст при этом не нарушаются.
Рекомендация: Представление можно исправить, переключившись обратно в тот режим фильтрации, который был включен при создании преобразований.
Если файл преобразований не содержит больше ни одного преобразования, которое указывает на элементы из некоторой определенной модели в качестве входов или выходов, то модель "удаляется" из файла преобразований. Проверка наличия неиспользуемых моделей производится при каждом удалении входа или выхода преобразования. Отдельные списки поддерживаются в файле преобразований для входов и выходов.
Рекомендация: Необходимо добавить модель в файл преобразования перед тем, как выбирать элементы этой модели как входы или выходы преобразования. Для того чтобы добавить модель в файл, нажмите кнопку Добавить модель в редакторе преобразования.
В редакторе конфигурации преобразования модель-модель можно выбрать опцию runSilent в любом режиме объединения, включая автоматический и визуальный. Если выбран автоматический или визуальный режим объединения, то опция runSilent активирует неинтерактивную стратегию объединения, если в целевой модели обнаружена поддержка fuse. В противном случае используется переопределяющая стратегия объединения.
При создании преобразования из мета-модели Ecore в мета-модель UML с профайлами необходимо проверить URI профайла, который будет использоваться в целевой модели UML. По умолчанию используется URI профайла, указанный в редакторе преобразования. Если указан URI ресурса, то он будет преобразован в аналогичный URI модуля.
Рекомендация: Можно указать другой URI в свойстве profileURI. Щелкните на корневом разделе в редакторе преобразования, чтобы открыть страницу свойств. Примечание: если используется зарегистрированный профайл, то можно указать его URI, если он отличается от профайла, применяемого автоматически. В противном случае зарегистрированный профайл может быть загружен более одного раза в наборе ресурсов, что приведет к неполадкам при объединении или слиянии.
При создании кода из моделей преобразования базовые файлы проекта, включая 'plugin.xml' и 'MANIFEST.MF', воссоздаются только в том случае, если они отсутствуют. Возможно, потребуется изменить эти файлы после генерации.
Рекомендация:
- Если в файл преобразования добавлены входные или выходные модели, то необходимо изменить файл manifest.mf. Добавьте зависимости для модулей, содержащих код сгенерированной модели для входной или выходной модели. Эти зависимости позволят избежать ошибок при компиляции, возникающих при попытке обращения к классам из этих модулей. Можно добавить зависимость от модуля, который содержит сгенерированный код для новой входной или выходной модели.
- При создании модели преобразования в модуле Java, содержащем файлы plugin.xml и manifest.mf, необходимо добавить обязательные зависимости в файл manifest.mf. Добавьте зависимость от преобразования создания и зависимость от входной/выходной модели. Также необходимо добавить расширение com.ibm.xtools.transform.core.transformationProviders в plugin.xml.