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