Eclipse Modeling Framework (EMF): как получить DomainModel из экспорта в Magicdraw UML2 - PullRequest
2 голосов
/ 10 сентября 2009

Я хочу использовать EMF для генерации кода, поэтому я написал несколько методов для загрузки моего файла UML2, который я сгенерировал сам. Это прекрасно работает со следующим кодом:

protected void registerResources() {
    resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);

    resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);

    Map<URI, URI> uriMap = resourceSet.getURIConverter().getURIMap();
    String resourcesJarPath = Thread.currentThread().getContextClassLoader().getResource("org.eclipse.uml2.uml.resources_2.2.0.v200805131030").toExternalForm();
    URI baseUri = URI.createURI(resourcesJarPath);
    uriMap.put(URI.createURI(UMLResource.LIBRARIES_PATHMAP), baseUri.appendSegment("libraries").appendSegment(""));
    uriMap.put(URI.createURI(UMLResource.METAMODELS_PATHMAP), baseUri.appendSegment("metamodels").appendSegment(""));
    uriMap.put(URI.createURI(UMLResource.PROFILES_PATHMAP), baseUri.appendSegment("profiles").appendSegment(""));
}

public Package loadPackage(URI uri) {
    Resource resource = resourceSet.getResource(uri, true);
    return (Package) EcoreUtil.getObjectByType(resource.getContents(), UMLPackage.Literals.PACKAGE);
}

Но теперь я хотел экспортировать модель Magicdraw-Domain в EMF UML2 XMI, и там я получил 5 файлов. Один проект.uml и 4 файла профиля Поэтому, если я хочу загрузить project.uml с помощью loadPackageclass, мой пакет будет нулевым.

У кого-нибудь есть пример приложения, как загрузить экспортированную MagicDraw UML DomainModel?

Dominik

Ответы [ 2 ]

3 голосов
/ 13 сентября 2009

Не могли бы вы показать нам первые несколько строк модели UML из MagicDraw (как XMI)? Здесь для некоторых моделей мне нужен дополнительный

resourceSet.getPackageRegistry().put("http://www.eclipse.org/uml2/2.0.0/UML", UMLPackage.eINSTANCE);

для загрузки этих моделей (которые предположительно пришли из более старой версии MD в Eclipse 3.4.2).

1 голос
/ 10 сентября 2009

Источник: http://dev.eclipse.org/newslists/news.eclipse.modeling.mdt.uml2/msg01517.html

Для ЭДС UML :

import org.eclipse.uml2.uml.util.UMLUtil; Профиль myProfile = UMLUtil.getProfile (MyProfilePackage.eINSTANCE, ...)

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

Кажется, что задающий вопрос не понял его, но он имеет смысл для меня и похож на методы, которые вы используете для IBM RSA.

IBM RSA:

Файл f = новый файл (...); Профиль p = UMLModeler.openProfile (f.getAbsolutePath ());

...