【发布时间】:2012-05-05 09:45:36
【问题描述】:
我有一个问题:
在我的建模工具(Enterprise Architect)中,我对元模型(基于 UML)进行了建模。 现在我想将元模型转换为 Ecore。但我不知道该怎么做。
在 Enterprise Architect 中,我可以将元模型导出到 UML XMI。有谁知道是否可以将生成的 XMI 转换为 Ecore XMI?!
谢谢
【问题讨论】:
标签: eclipse uml eclipse-emf xmi
我有一个问题:
在我的建模工具(Enterprise Architect)中,我对元模型(基于 UML)进行了建模。 现在我想将元模型转换为 Ecore。但我不知道该怎么做。
在 Enterprise Architect 中,我可以将元模型导出到 UML XMI。有谁知道是否可以将生成的 XMI 转换为 Ecore XMI?!
谢谢
【问题讨论】:
标签: eclipse uml eclipse-emf xmi
有人知道是否可以将生成的 XMI 转换为 Ecore XMI 吗?!
是的,这是可能的——至少在大纲上是这样。您可以将问题分为两部分:
语义映射
我在这里假设您的元模型侧重于静态结构。 ECore 不支持声明 EOperations 之外的动态概念。如果相关,请在下面详细了解动态。
我不知道具体的 EA,也不知道它支持哪个版本的 XMI。但是,它将是核心 UML 概念的一些变体:类、属性、操作、关联、关联结束等。
eCore 有similar (if smaller) set of concepts:EClass、EAttribute、EDataType、EReference、EOperation 等。“类型”概念之间存在相当强的相关性;例如:
所以那里的映射应该是直截了当的。基本上为每个 UML 概念创建一个等效的 ECore 实例。
关系不太明显,但仍然可行。 ECore 不直接支持关系; EReference 是唯一类似的概念。然而,合成关联非常容易,例如:
EReference,并复制了最小和最大基数EReferences,每个方向一个。您还应该设置EOtherEnd 属性,这实际上表示这两个EReferences 是同一个关联的一部分。希望这能给你这个想法。
实施
定义了您的概念映射后,有很多关于如何去做的选择。所有人通常都遵循相同的基本模型:
解析源 --> 将源概念映射到目标概念 --> 生成目标文本。
您可以使用 xslt(因为它只是一个 XML->XML 转换)。您还可以使用众多可用的模型到模型 (M2M) 和/或模型到文本 (M2T) 工具包之一。参见例如eclipse 建模项目 (M2M, M2T)。您也可以通过使用 EA API 读取模型而不是生成和解析 XMI 来直接从 EA 获取。您选择哪一种取决于您的环境、技能等。
如果你想看看它在实践中会是什么样子,你可以看看MagicDraw。它提供开箱即用的 ECore 导出。 (请注意,这是一个付费工具 - 但可以使用 eval)。
直接询问 Sparx 也是值得的:如果 EA 没有可用的 ECore 导出插件/插件,我会有点惊讶。
第一次。
动态
如果您的模型具有动力学(状态模型等),那么您的问题就更大了。 ECore 根本不涵盖这些概念。可以扩展 ECore,这可能是一种选择 - 但它可能需要更多工作,因为与 ECore 一起使用的工具不太可能理解您的扩展。
【讨论】:
您可以轻松地从 Ecore 转到 UML,但其他方式实际上是不可能的。您的插件很少,但是当您尝试使用它们时它不起作用。
【讨论】: