eclipse - UML XMI 到 Ecore

标签 eclipse uml eclipse-emf xmi

我有一个问题:

在我的建模工具(企业架构师)中,我建模了一个元模型(基于 UML)。 现在我想将元模型转化为Ecore。但我不知道该怎么做。

在 Enterprise Architect 中,我可以将元模型导出到 UML XMI。有谁知道是否可以将生成的 XMI 转换为 Ecore XMI ?!

谢谢

最佳答案

Does anyone know if it is possible to transform the generated XMI to Ecore XMI ?!

是的,这是可能的——至少在轮廓上是可能的。您可以将问题分为两部分:

  1. 语义映射是什么?换句话说,如何将源 XMI 中的概念映射到目标 eCore 模型中的概念?
  2. 您将如何在实践中实现这些映射?

语义映射

我假设您的元模型专注于静态结构。 ECore 不支持声明 EOperations 之外的动态概念。如果相关的话,请详细了解下面的动态。

我具体不了解 EA,也不了解它支持哪个(些)版本的 XMI。然而,它将是核心 UML 概念的一些变体:类、属性、操作、关联、AssociationEnd 等。 eCore有一个similar (if smaller) set of concepts :EClassEAttributeEDataTypeEReferenceEOperation等。 “类型”概念之间相当强的相关性;例如:

  • UML 类 --> EClass
  • 属性 --> EAttribute
  • 操作 --> EOperation

所以那里的映射应该是直接的。基本上为每个 UML 概念创建一个 ECore 等效实例。

关系不太明显,但仍然可行。 ECore 不直接支持关系; EReference 是唯一类似的概念。然而,合成关联非常容易,例如:

  • 单向导航 UML 关联成为单个 EReference,并复制了最小和最大基数
  • UML 双向关联变成两个 EReferences,每个方向一个。您还应该设置 EotherEnd 属性,这实际上表明两个 EReferences 是同一关联的一部分。

希望这能给您带来启发。

实现

定义概念映射后,有很多关于如何实现它的选项。所有这些通常都会遵循相同的基本模型:

解析源代码 --> 将源概念映射到目标概念 --> 生成目标文本。

您可以使用 xslt(因为它只是一个 XML->XML 转换)。您还可以使用众多可用的模型到模型 (M2M) 和/或模型到文本 (M2T) 工具包之一。参见例如Eclipse 建模项目( M2MM2T )。您还可以直接从 EA 使用 EA API 读取模型,而不是生成和解析 XMI。您的选择取决于您的环境、技能等。

如果你想看看它在实践中是什么样子,你可以看看 MagicDraw 。它提供开箱即用的 ECore 导出。 (请注意,这是一个付费工具 - 但可以使用 eval)。

也可能值得直接询问 Sparx:如果没有可用于 EA 的 ECore 导出附加组件/插件,我会感到有点惊讶。

第h。


动态

如果您的模型具有动态性(状态模型等),那么您就会遇到更多问题。 ECore 根本不涵盖这些概念。可以扩展 ECore,这可能是一种选择 - 但这可能需要更多工作,因为与 ECore 一起使用的工具不太可能理解您的扩展。

关于eclipse - UML XMI 到 Ecore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10303280/

相关文章:

uml - 如何表示一个复杂的用例,其中主要流程的每个步骤都可以有多个场景(替代或错误路径)?

uml - 新图创建新模型

modeling - 如何从 Ecore 模型创建 Xcore 资源?

eclipse - 从 EObject 的绝对 URI 获取相对路径

python - 使用 Python 进行 Eclipse EMF 模型查询

java - 如何在 Eclipse 中使用处理库?

java - "References to interface static methods are allowed only at source level 1.8"或更高,当我已经有 1.8 JRE 时

java - 尝试在 Eclipse Oxygen 中的 java 中使用 jdk.incubator.http.HttpClient 时出现 NoClassDefFoundError

java - 来自 java 桌面应用程序的 Web 服务

uml - 关联结束时,圆点是什么意思?