Java Eclipse建模框架(EMF):如何从Magicdraw UML2导出中获取DomainModel

Java Eclipse建模框架(EMF):如何从Magicdraw UML2导出中获取DomainModel,java,uml,eclipse-emf,xmi,Java,Uml,Eclipse Emf,Xmi,我想使用EMF生成代码,所以我编写了一些方法来加载我自己生成的UML2文件。这适用于以下代码: protected void registerResources() { resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLR

我想使用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);
}
受保护的无效注册表资源(){
resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI,UMLPackage.eINSTANCE);
resourceSet.getResourceFactoryRegistry().GetExtensionFactoryMap().put(UMLResource.FILE_扩展名,UMLResource.Factory.INSTANCE);
Map uriMap=resourceSet.getURIConverter().getURIMap();
字符串resourcesJarPath=Thread.currentThread().getContextClassLoader().getResource(“org.eclipse.uml2.uml.resources_2.2.0.v200805131030”).toExternalForm();
URI baseUri=URI.createURI(resourcesJarPath);
put(URI.createURI(UMLResource.LIBRARIES_PATHMAP)、baseUri.appendSegment(“库”).appendSegment(“”);
put(URI.createURI(UMLResource.METAMODELS_PATHMAP)、baseUri.appendSegment(“元模型”).appendSegment(“”);
put(URI.createURI(UMLResource.PROFILES_PATHMAP)、baseUri.appendSegment(“PROFILES”).appendSegment(“”);
}
公共包装入包(URI){
Resource=resourceSet.getResource(uri,true);
返回(包)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.uml、uml_Standard_Profile.uml、uml_Standard_Profile.Validation_Profile.Profile.uml)。 因此,如果我想用loadPackageclass加载project.uml,我的包是空的

有没有人有一个示例应用程序,如何加载MagicDraw导出的UML域模型

多米尼克来源:

对于EMF UML

导入org.eclipse.uml2.uml.util.UMLUtil; Profile myProfile=UMLUtil.getProfile(MyProfilePackage.eINSTANCE,…)

在我在上面找到的电子邮件链中,他们还展示了如何将其连接到一个模型上,这对您也应该有所帮助

提问者似乎没有理解,但对我来说这很有意义,并且与您用于IBMRSA的方法类似

IBM RSA:

文件f=新文件(…);
Profile p=UMLModeler.openProfile(f.getAbsolutePath())

您能给我们展示一下MagicDraw(作为XMI)中UML模型的前几行吗?在这里,对于一些型号,我需要一个额外的

resourceSet.getPackageRegistry().put("http://www.eclipse.org/uml2/2.0.0/UML", UMLPackage.eINSTANCE);
加载这些模型(在Eclipse3.4.2中,这些模型无疑来自较旧的MD版本)