© Copyright International Business Machines Corporation 2006. All rights reserved.US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
在編寫模型至模型的轉換時,如果目標是 UML 2 模型,則不會自動對映預設的 UML 設定檔。例如,不會自動對映 default.epx UML 設定檔。必須手動對映這些設定檔,或採用 UMLDefaultLibrariesAddRule 架構。如果目標是 UML 模型 EClass,您可以手動將這個架構新增至轉換。
若要將架構新增至轉換,請將下列程式碼新增至轉換:
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated NOT
*/
protected void addTransformElements(Registry registry) {
add(new UMLDefaultLibrariesAddRule());
addGeneratedTransformElements(registry);
// 在這裡,您可以在產生的轉換元素後面新增更多轉換元素
// 請記得移除 @generated 標籤或加上 NOT
}
在編寫模型至模型的轉換時,若要在目標模型中使用「融合」支援,則 Eclipse 工作區的外掛程式中必須有 "org.eclipse.core.runtime.contentTypes" 延伸。 您可以在外掛程式中指定此延伸,該外掛程式內含衍生自目標模型網域的網域名稱。如需此延伸的相關資訊,請參閱「比較/合併」專案的延伸點文件。這可讓您為目標模型製定更準確的融合策略。若為較簡單的 EMF 策略,您可以指定下列延伸(將 "xxx" 改為您的目標檔副檔名):
<extension
point="org.eclipse.core.runtime.contentTypes">
<file-association
content-type="com.ibm.xtools.comparemerge.emf.emfContentType"
file-extensions="xxx"/>
</extension>
在編寫模型至模型的轉換時,您指定為輸入或輸出的 Ecore 模型必須有相對應的 genmodel。您可以利用「EMF 模型」精靈來建立 genmodel。 請確定在建立 genmodel 之後才產生程式碼。genmodel 必須登錄在開發工作台,不然就必須在相對應的 Ecore 模型的相同路徑中。 genmodel 必須有 .genmodel 副檔名,且要有類似 Ecore 模型的名稱和相同的大小寫。 否則,轉換編寫引擎會找不到 genmodel。如果轉換編寫引擎找不到所需的 genmodel,則會停止產生程式碼。
在建立模型至模型轉換的轉換配置時,必須指定代表目標模型的檔案,即使檔案空白也一樣。您不能指定 URI 作為目標儲存器。
若要建立空的 Ecore 模型,請在轉換配置編輯器或精靈的「主要」頁面上,按一下建立新的目標儲存器按鈕,並指定和目標模型的副檔名一樣的檔案。
若要將前端的模型至模型轉換整合至 JET(模型至文字)轉換,您必須手動將 JETRule 架構的實例新增至轉換提供者中的 RootTransformation 的 'postProcessing' 規則。 下列範例顯示必須在轉換提供類別中加入的程式碼。必須將 'xxx' 改為 JET 轉換的 id。
/**
* 建立根轉換。在這裡可以將更多規則新增至轉換
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param transform 根轉換
* @generated NOT
*/
protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
return new RootTransformation(descriptor, new MainTransform()) {
protected void addPostProcessingRules() {
add(new JETRule("xxx"));
}
};
}
若要產生可輸入或輸出 UML 模型的轉換,請指定 UML Meta 模型作為對映規格的根輸入、根輸出或兩者。將 UML 設定檔新增至對映規格並不會自動新增 UML Meta 模型。
暫行解決方法:在「模型至模型轉換對映」精靈和編輯器中按一下「新增模型」按鈕,新增 UML Meta 模型。
如果使用者將特性過濾從「基本」切換成「中級」或「進階」模式,然後建立對映,之後又切回「基本」過濾模式,則對映連接器的端點可能消失。 這會導致有端點的對映連接器變成沒有連接任何項目。這只影響對映的外觀。對映及轉換從對映產生的程式碼不受影響。
暫行解決方法:只要指定對映建立時所用的過濾模式,就可以更正對映的外觀。
當對映檔中已無對映指定模型的元素作為對映輸入或輸出時,將會從對映檔中「除去」模型。刪除對映輸入或輸出時會檢查是否存在未用的模型。對映檔中會個別維護輸入及輸出的清單。
暫行解決方法:必須將模型新增至對映檔,才能從模型中選取元素作為對映輸入或輸出。請在「對映編輯器」中按一下新增模型按鈕,將模型新增至對映檔。
在產生的模型至模型轉換的轉換配置編輯器中,runSilent 選項可以搭配任何合併模式來指定,包括 'automatic' 或 'visual'。如果合併模式設為 automatic 或 visual當目標模型中提供融合支援時,runSilent 選項會強制採取無聲合併策略。否則會採用置換合併策略。
使用設定檔來建立從 Ecore Meta 模型至 UML Meta 模型的轉換對映模型時,請驗證將在目標 UML 模型中使用的設定檔 URI。預設會使用您在對映編輯器中指定的設定檔 URI。如果指定資源 URI,則會轉換成同等的外掛程式 URI。
暫行解決方法:在內容頁面上,您可以在 profileURI override 內容中指定不同的 URI。請按一下對映編輯器的根區段來顯示內容頁。附註:如果使用登錄的設定檔,您可以指定設定檔所登錄的 URI(如果不同於系統自動產生所使用的設定檔)。否則會造成登錄的設定檔在資源集裡載入多次,導致合併或融合發生問題。
從模型至模型轉換中的對映模型產生程式碼時,如果找不到基本的專案檔,例如 plugin.xml 和 manifest.mf,則系統會自動產生。產生之後,您可能需要編輯這些檔案。
暫行解決方法:
- 如果將輸入模型或輸出模型新增至對映檔,您必須編輯 manifest.mf 檔案。請新增外掛程式的相依關係,此外掛程式含有輸入/輸出模型產生的模型程式碼。嘗試存取這些外掛程式中的類別時可能發生編譯錯誤,新增這些相依關係可修正這些錯誤。如果外掛程式含有新的輸入/輸出模型所產生的程式碼,您可以在此外掛程式上增加相依關係。
- 如果在含有 plugin.xml 和 manifest.mf 檔案的 Java 外掛程式中建立對映模型,您必須將必要的相依關係新增至 manifest.mf 檔案。請在轉換編寫上新增相依關係,在輸入/輸出模型上新增相依關係。您也必須將 com.ibm.xtools.transform.core.transformationProviders 延伸新增至 plugin.xml 檔案。