EMF ecore и xsd не синхронизированы, как решить? - PullRequest
0 голосов
/ 01 сентября 2009

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

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

Спасибо.

1 Ответ

1 голос
/ 02 октября 2009

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

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

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

...