2016-06-17 59 views
1

我有一个基于UML2版本2.0.0的UML模型(xmlns:uml="http://www.eclipse.org/uml2/2.0.0/UML")。在eclipse中,我已经安装了Papyrus的最新版本,它随UML2 2.5.0版一起提供。在eclipse中导入基于UML2版本2.0.0的UML模型

我的模型是从Rhapsody生成的一个非常简单的模型,其中我有一个Requirement(requirements_1),一个Block和一个Operation(test_req())。在模型中,test_req()操作验证REQUIREMENT_1如示意图如下: enter image description here

使用狂想曲XMI工具包,我导出模型到XMI格式,并试图将其导入以Eclipse作为纸莎草纸项目。当我导入模型转换成纸莎草工程,原型(验证)的依赖test_req之间施加()和未检测到REQUIREMENT_1:enter image description here

因为它可以在图像中可以看出,<<verify>>铅板在不施加到requirement_1

任何人都可以解释为什么刻板印象丢失?是否因为UML2版本的差异?我怎样才能解决这个问题?

我也张贴我的UML模型参考here

+0

哪有依赖呢? 'test_req()'是'block_2'中的一个操作。 –

+0

我在需求图中添加了test_req()(如第一张图所示),并在test_req和requirements_1之间创建了一个依赖关系 – user2888308

+0

显示的是一个SysML模型,您是否安装了Papyrus SysML可选组件? – CharlesRivet

回答

1

这里的主要问题是,我的模型基于UML2 2.0.0版,在eclipse中,我安装了最新版本的UML,即UML 2.5.0。因此,当我尝试将我的模型导入Papyrus项目时,它使用UML2版本2.5.0而不是2.0.0,因此一些刻板印象无法识别。

我能解决我的代码中加入以下代码,以确保UML2版本2.0.0用于发现在模型中的现有关系:

ResourceSet set = new ResourceSetImpl(); 
UMLResourcesUtil.init(set); 
set.getResourceFactoryRegistry().getExtensionToFactoryMap() 
    .put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE); 

set.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE); 

Map<URI, URI> uriMap = set.getURIConverter().getURIMap(); 
URI uri = URI.createURI("jar:file:/home/jars/org.eclipse.uml2.uml.resources_2.0.3.v200707131442.jar!/"); // for example 
uriMap.put(URI.createURI(UMLResource.LIBRARIES_PATHMAP), uri.appendSegment("libraries").appendSegment("")); 
uriMap.put(URI.createURI(UMLResource.METAMODELS_PATHMAP), uri.appendSegment("metamodels").appendSegment("")); 
uriMap.put(URI.createURI(UMLResource.PROFILES_PATHMAP), uri.appendSegment("profiles").appendSegment("")); 
0

我狂想曲之前已经用于生成从SysML的图码基于Windriver的工作台日食。 我不知道xml导入/导出,但是当我们将配置更改为CPP_CFG部分中设置的编译器设置的eclipse样式&时,rhapsody能够直接在eclipse环境中生成代码。 也许这也适用于你。