EMF ecore и xsd не синхронизированы, как решить?

В моем приложении используется модельная база на xsd, которая была преобразована в ecore перед созданием классов java. Один из членов моей команды изменил метамодель .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< /strong> преобразование ecore также создаст имя метаданных javaDocsAndUserApi, что нарушит совместимость с ранее сохраненными моделями.

Я просмотрел руководство по созданию xsd, чтобы найти ecore:som_attribute, который позволил бы мне указать, какой ключ использовать в xsd, чтобы заставить метаданные называться docsAndUserApi во время преобразования xsd в ecore, но не найти что-нибудь. У кого-нибудь есть идея помочь мне?

Спасибо.


person SeB    schedule 01.09.2009    source источник


Ответы (1)


В конце концов, иметь дело с развивающимися (мета-) моделями непросто. В основном это сводится к переносу данных из одного формата (соответствующего одной модели Ecore) в другой (соответствующий другой модели Ecore).

Вы можете применять методы преобразования модели, такие как ATL и AMW. Это позволяет связать (сплести) две (мета) модели Ecore (m1 и m2) и автоматически сгенерировать код, преобразующий данные из формата m1 в формат m2 и наоборот. (См. здесь некоторые очень интересные исследовательские работы по этому вопросу.)

Прагматичным подходом может быть ручная реализация преобразования модели с использованием EMF. Поскольку изменения между вашими моделями просты, это не должно быть слишком сложно реализовать.

person Frank Grimm    schedule 02.10.2009