簡體   English   中英

EMF ecore和xsd不同步,如何解決?

[英]EMF ecore and xsd out of sync, how to resolve?

我的應用程序使用基於xsd的模型,該模型在生成Java類之前已轉換為ecore。 我的一個團隊成員在以前的版本中修改了.ecore元模型,該屬性曾經生成過。 他修改了屬性名稱,但未修改Extended MetaData,而是指定了用於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 ,但沒有找到任何東西。 有人有幫助我的想法嗎?

謝謝。

畢竟,處理不斷發展的(元)模型並不容易。 基本上,歸結為將數據從一種格式(符合一種Ecore模型)遷移到另一種格式(符合另一種Ecore模型)。

您可以應用模型轉換技術,例如ATLAMW 這使您可以連接(編織)兩個Ecore(元)模型(m1和m2)並自動生成將數據從格式m1轉換為格式m2,反之亦然的代碼。 (有關此主題的一些非常有趣的研究論文,請參見此處 。)

一種實用的方法可能是使用EMF手動實施模型轉換。 由於模型之間的更改很簡單,因此實現起來應該不太困難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM