2009-09-10 55 views
1

我想使用EMF生成代碼,所以我編寫了一些方法來加載我自己生成的UML2文件。這工作得很好用下面的代碼:Eclipse建模框架(EMF):如何從Magicdraw UML2獲取DomainModel導出

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 XMI UML2,我在那裏得到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?

多米尼克

回答

0

來源: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());

2

您能向我們展示MagicDraw的UML模型(如XMI)的前幾行嗎?在這裏,對於某些型號我需要一個額外的

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

加載這些模型(這誠然是來自舊的MD版,在Eclipse 3.4.2)。

+1

非常感謝,現在它可以工作,並且模型不再爲null – ddejmek 2009-09-28 09:47:05