uml - eclipse : how to programmatically convert UML to ecore

标签 uml eclipse-emf eclipse-emf-ecore

我已经加载了一个带有 uml 图的 xmi 文件。结果我得到了 org.eclipse.uml2.uml.Package。

现在我想以编程方式将其转换为 Ecore (ePackage)。

我已经查看了 org.eclipse.uml2.uml.util.UMLUtil 中的 UML2EcoreConverter。但我不清楚它的转换方法。

最佳答案

不要直接使用 UML2EcoreConverter,而是看一下

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

它需要一个包和一个选项映射并返回转换后的 EPackage。可以将 UMLUtil.UML2EcoreConverter.OPTION__* 中的选项作为键提供给选项映射。可能的值为 UMLUtil.OPTION_DISCARD/OPTION_IGNORE/OPTION_PROCESS/OPTION_REPORT。所有选项默认为 OPTION__IGNORE。

这些选项中的大多数用于处理未完全映射到 Ecore 的 UML2 类图概念,因此您可以控制应如何处理它们。

有关扩展功能映射(子集/并集、重新定义...),请参阅 OPTION_REDEFINING*、OPTION_SUBSETTING*、OPTION__UNION_PROPERTIES、OPTION_DUPLICATE*。将所有这些设置为 OPTION_PROCESS 应该没问题。

您可能想要禁用的一个选项是 OPTION__SUPER_CLASS_ORDER。这将按字母顺序重新排序泛化和接口(interface)实现,当您想要继承特定的 super 实现时,这可能会导致实现问题。另一种是 OPTION__CAMEL_CASE_NAMES,它将处理类和功能名称以强制采用严格的驼峰式大小写方案。这仅在您的 UML 工件没有有效的 java 名称的情况下才有意义。只需将它们设置为 OPTION_IGNORE,或者,查看它们将在哪里更改某些内容,设置为 OPTION_REPORT。

还有一个用于相反的convertFromEcore(...)。

如果您想更好地了解 UML2EcoreConverter 的内部工作原理:它基本上是一个简单的递归访问者,遍历 UML 模型,将每个工件转换为其 Ecore 等效项并进行一些清理。它扩展了 UMLSwitch 来处理不同的元类。因此,要了解如何将 UML 属性转换为 EStructuralFeature,请查看 caseProperty(...)

关于uml - eclipse : how to programmatically convert UML to ecore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11016477/

相关文章:

java - 外观设计模式的关联或聚合关系?

eclipse - UML XMI 到 Ecore

validation - 更改默认验证消息

eclipse - 如何将 ecore 文件转换为 ecorediag 文件

eclipse - Xtext链接服务和派生状态

java - 用Java解析Enterprise Architect生成的SysML

visual-studio-2010 - 如何在建模项目的类图中的属性中添加double或datetime类型?

uml - 将 ERD 转换为类图

java - 在 EMF 中使用 eStorage

java - 将使用 Papyrus 创建的 UML 类图转换为 .ecore 文件