2016-06-17 29 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環境中生成代碼。 也許這也適用於你。