2012-06-13 46 views
2

我已經用uml圖加載了一個xmi文件。結果我得到了一個org.eclipse.uml2.uml.Package。Eclipse:如何以編程方式將UML轉換爲ecore

現在我想以編程方式將其轉換爲Ecore(ePackage)。

我已經看過org.eclipse.uml2.uml.util.UMLUtil中的UML2EcoreConverter。但它的轉換方法對我來說並不明確。

回答

3

而是直接去了UML2EcoreConverter的,看看

org.eclipse.uml2.uml.util.UMLUtil.convertToEcore(包,地圖)

它需要一個包和地圖選項並返回轉換的EPackage(s)。選項映射可以從UMLUtil.UML2EcoreConverter.OPTION __ *中作爲鍵的選項提供。可能的值爲UMLUtil.OPTION_ DISCARD/OPTION _IGNORE/OPTION_ PROCESS/OPTION _REPORT。所有選項默認爲OPTION__IGNORE。

大多數這些選項都是用於處理UML2類圖的概念,這些概念不會乾淨地映射到Ecore,因此您可以控制它們應該如何處理。

對於擴展特徵映射(子集/工會,重新定義......),看到OPTION_ 重新定義 *,OPTION_ 子集 *,OPTION__UNION_PROPERTIES,OPTION_ DUPLICATE *。應該可以將所有這些設置爲OPTION_PROCESS。

您可能想禁用的一個選項是OPTION__SUPER_CLASS_ORDER。這將按照字母順序重新排列泛化和接口實現,當您想要繼承特定的超級實現時,這可能會導致實現問題。另一個是OPTION__CAMEL_CASE_NAMES,它將處理類和功能名稱以強制執行嚴格的駱駝案例方案。這隻有在你的UML構件沒有有效的java名字的情況下才有意義。只需將它們設置爲OPTION_IGNORE,或者查看它們將在哪裏更改某些內容,即可OPTION_REPORT。

還有一個convertFromEcore(...)。

如果您想更好地理解UML2EcoreConverter的內部工作原理:它基本上是一個簡單的遞歸訪問器,它遍歷UML模型,將每個工件轉換爲它的Ecore等價物並進行一些清理。它擴展了UMLSwitch來處理不同的元類。因此,爲了查看UML屬性如何轉換爲EStructuralFeature,請查看caseProperty(...)

-1

您只能將一種方式從Ecore轉換爲UML。

相關問題