0

私のアプリケーションは、Javaクラスの生成前にecoreに変換されたxsdのモデルベースを使用しています。私のチームメンバーの1人が、以前のバージョンの.ecoreメタモデルを変更しました。これは、以前は生成されていた属性の1つです。彼は属性名を変更しましたが、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オーサリングガイドを見て、xsdからecoreへの変換中にメタデータにdocsAndUserApiという名前を付けるために、xsdで使用するキーを指定できるecore:som_attributeを見つけましたが、何も見つかりませんでした。誰かが私を助けるためのアイデアを持っていますか?

ありがとうございました。

4

1 に答える 1

1

進化する(メタ)モデルに対処することは、結局のところ簡単ではありません。基本的には、ある形式(あるEcoreモデルに準拠)から別の形式(別のEcoreモデルに準拠)にデータを移行することです。

ATLAMWなどのモデル変換手法を適用できます。これにより、2つのEcore(メタ)モデル(m1とm2)を接続(織り)し、データをフォーマットm1からフォーマットm2に、またはその逆に変換するコードを自動的に生成できます。(このテーマに関するいくつかの非常に興味深い研究論文については、ここを参照してください。)

実用的なアプローチは、EMFを使用してモデル変換を手動で実装することです。モデル間の変更は単純なので、実装するのはそれほど難しくありません。

于 2009-10-02T11:58:47.677 に答える