【问题标题】:EMF ecore and xsd out of sync, how to resolve?EMF ecore 和 xsd 不同步,如何解决?
【发布时间】:2009-09-01 11:34:45
【问题描述】:

我的应用程序使用基于 xsd 的模型,该模型在生成 java 类之前已转换为 ecore。 我的一位团队成员在以前的版本中修改了 .ecore 元模型,这是曾经生成的一个属性。他修改了属性名称,但没有修改指定用于 xml 持久性的元素名称的扩展元数据。

<eStructuralFeatures xsi:type="ecore:EReference" name="javaDocsAndUserApi" upperBound="-1"
    eType="#//JavaDocsAndUserApi" containment="true" resolveProxies="false">
  <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
    <details key="kind" value="element"/>
    <details key="name" value="docsAndUserApi"/>
  </eAnnotations>
</eStructuralFeatures>

所以我们有一个属性名称 javaDocsAndUserApi 和名为 docsAndUserApi 的持久元素,当然如果我创建更改 xsd 中的属性以命名为 javaDocsAndUserApi,ecore 转换也会生成一个元数据名称 javaDocsAndUserApi,这将破坏与以前持久化模型的兼容性。

我查看了 xsd 创作指南以找到一个 ecore:som_attribute,它允许我指定在 xsd 中使用哪个键来强制在 xsd 到 ecore 转换期间将元数据命名为 docsAndUserApi但没有找到任何东西。 有人有什么想法可以帮助我吗?

谢谢。

【问题讨论】:

    标签: eclipse eclipse-emf eclipse-emf-ecore


    【解决方案1】:

    毕竟,处理不断发展的(元)模型并不容易。它基本上归结为将数据从一种格式(符合一种 Ecore 模型)迁移到另一种格式(符合另一种 Ecore 模型)。

    您可以应用ATLAMW 等模型转换技术。这允许您连接(编织)两个 Ecore(元)模型(m1 和 m2)并自动生成将数据从格式 m1 转换为格式 m2 的代码,反之亦然。 (有关此主题的一些非常有趣的研究论文,请参阅here。)

    一种实用的方法可能是使用 EMF 手动实现模型转换。由于模型之间的更改很简单,因此实施起来应该不会太难。

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 2012-05-06
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2016-09-05
      相关资源
      最近更新 更多