gpt4 book ai didi

uml - eclipse : how to programmatically convert UML to ecore

转载 作者:行者123 更新时间:2023-12-02 05:40:38 25 4
gpt4 key购买 nike

我已经加载了一个带有 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 )

它接受一个包和一个 Map 选项并返回转换后的 EPackage(s)。可以将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com