我已經用uml圖加載了一個xmi文件。結果我得到了一個org.eclipse.uml2.uml.Package。Eclipse:如何以編程方式將UML轉換爲ecore
現在我想以編程方式將其轉換爲Ecore(ePackage)。
我已經看過org.eclipse.uml2.uml.util.UMLUtil中的UML2EcoreConverter。但它的轉換方法對我來說並不明確。
我已經用uml圖加載了一個xmi文件。結果我得到了一個org.eclipse.uml2.uml.Package。Eclipse:如何以編程方式將UML轉換爲ecore
現在我想以編程方式將其轉換爲Ecore(ePackage)。
我已經看過org.eclipse.uml2.uml.util.UMLUtil中的UML2EcoreConverter。但它的轉換方法對我來說並不明確。
而是直接去了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(...)
您只能將一種方式從Ecore轉換爲UML。