【问题标题】:Eclipse Modelling Framework (EMF): How to get the DomainModel from a Magicdraw UML2 ExportEclipse 建模框架 (EMF):如何从 Magicdraw UML2 导出中获取 DomainModel
【发布时间】:2009-09-10 09:49:09
【问题描述】:

我想使用 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-Domainmodel 导出到 EMF UML2 XMI,然后我得到 5 个文件。一个 project.uml 和 4 个配置文件(UML_Standard_Profile.MagicDraw_Profile.DSL_Customization.profile.uml、UML_Standard_Profile.MagicDraw_Profile.profile.uml、UML_Standard_Profile.UML_Standard_Profile.profile.uml、UML_Standard_Profile.Validation_Profile.profile.uml)。 所以如果我想用 loadPackageclass 加载 project.uml,我的 Package 是 null。

谁有示例应用,如何加载 MagicDraw 导出的 UML DomainModel?

多米尼克

【问题讨论】:

    标签: java uml eclipse-emf xmi


    【解决方案1】:

    您能否向我们展示来自 MagicDraw(作为 XMI)的 UML 模型的前几行?在这里,对于某些型号,我需要额外的

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

    加载这些模型(在 Eclipse 3.4.2 中,这些模型当然来自较旧的 MD 版本)。

    【讨论】:

      【解决方案2】:

      来源:http://dev.eclipse.org/newslists/news.eclipse.modeling.mdt.uml2/msg01517.html

      对于 EMF UML

      导入 org.eclipse.uml2.uml.util.UMLUtil; 配置文件 myProfile = UMLUtil.getProfile(MyProfilePackage.eINSTANCE, ... )

      在我发现的电子邮件链中,他们还展示了如何将其连接到模型 - 这也应该对您有所帮助。

      提问者似乎没听懂,但对我来说很有意义,并且类似于您用于 IBM RSA 的方法。

      IBM RSA:

      文件 f = 新文件(...); 配置文件 p = UMLModeler.openProfile(f.getAbsolutePath());

      【讨论】:

        猜你喜欢
        • 2012-07-18
        • 1970-01-01
        • 1970-01-01
        • 2019-11-06
        • 2017-11-30
        • 1970-01-01
        • 2016-10-19
        • 1970-01-01
        • 2013-06-09
        相关资源
        最近更新 更多