2009-09-01 2 views
0

私のアプリケーションは、javaクラスの生成前にecoreに変換されたxsdのモデルベースを使用しています。 チームメンバーの1人が以前のバージョンで生成された1つの属性の.ecoreメタモデルを変更しました。彼は属性名を変更しましたが、xml永続性に使用される要素名を指定するExtended MetaDataは変更しませんでした。EMF ecoreとxsdの同期が外れ、解決方法は?

<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命名されるXSDの属性、たEcore変換を変更作成する場合でしょうjavaDocsAndUserApidocsAndUserApiという名前の永続化された要素である属性名を持って、そしてもちろんjavaDocsAndUserApiも生成します。これにより、以前に永続化されたモデルとの互換性が失われます。

私はたEcore見つけるために、XSDオーサリングガイドを見てきました:som_attribute私は変革をたEcoreするXSD中にdocsAndUserApi命名されるメタデータを強制的にXSDで使用するキーを指定することができるようになるが、見つかりませんでした何でも 誰かが私を助ける考えを持っていますか?

ありがとうございます。

答えて

1

結局、進化する(メタ)モデルを扱うのは簡単ではありません。基本的には、あるフォーマット(あるEcoreモデルに準拠)から別のフォーマット(別のEcoreモデルに適合)へデータを移行することになります。

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

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

関連する問題