開發EMF模型僅限於XML Schema、IBM Rational Rose、Java source或者EMF Ecore。IBM Rational Software Architect(RSA)使許多應用程序開發任務能夠在與其他商業應用程序開發工具的協調中充分享受到UML模型的好處。RSA和EMF的結合將給商業性的或者開放源代碼的開發者提供一個強有力的工具。
導言
本文探討運用IBM® Rational® Software Architect(RSA)來開發一種可以被轉換為Eclipse Modeling Framework(EMF)模型的模型。為什麼您想要這樣做呢?因為EMF為我們提供了許多有用的特性,其中包括:
默認的XML/XMI連續性
模型改變通告
反射的API
適配器
編輯器
於是您會問:“我為什麼想要這些東西?”。因為由於RSA模型和EMF的結合,您能夠方便快捷的創建一個數據模型並對其加以編輯。
在 RSA中創建與平台無關的模型(PIMs)使您可以自由地將這些模型設定為特定平台的模型(PSMs)。這種重新定位目標可以通過應用UML概要文件和其他特定運行時的元數據更新發生在模型轉換的過程中。這些模型同樣可以被導出到其它格式以便別的應用程序使用,比如EMF和UML2。
這些轉換不僅僅局限於RSA;它們同樣可以發生在IBM® Rational® Software Modeler(RSM)中。
思考RSA模型
RSA一瞥
RSA是一種綜合性的設計和開發工具,它利用UML的模型驅動開發(MDD)來幫助您創建優良結構的應用程序和服務。
本文僅關注類圖以及相關聯的模型元素(類、包、關聯、屬性和枚舉)。
一個簡單的圖書館模型
這個簡單的模型是基於EMF 指南中的IBM® Rational Rose®模型,並已經在RSA中被重新創建。它包含三個彼此間相互關聯的類。圖書館既包含作者也包含圖書,就像圖1中顯示的那樣。正如您所期盼的,每本書擁有一個作者並且每位作者擁有一部書。“圖書”這個類擁有一項枚舉類型的屬性。
圖1:RSA中的簡單的圖書館模型
在高層次上和與您將要創建的EMF模型的比較中來理解此模型時非常重要的。
創建EMF模型的可選方案
當您使用RSA模型化您的數據模型和應用程序時,必須先來看一下EMF為創建一個用於產生代碼的EMF模型所提供的工具。EMF以XML Schema、Rational Rose、EMF Ecore和帶注解的Java™為它的生成器模型提供了輸入源,也就是我們所知道的genmodel。 從UML2中編寫RSA轉換來提供自定義的轉換是可能的。本文將重點關注在已經可以得到的可選方案上,而不需要構造一個特定的轉換方式。RSA允許您導出一個其他模型格式的RSA模型,比如Ecore或者UML2模型。
從RSA模型到EMF Core(Ecore)模型
RSA和EMF都提供一種表示模型的機制。RSA模型是基於UML2標准的,這種模型不僅可以建模一個系統的靜態數據模型,而且還可以對行為進行建模。EMF的模型更多的是關注於數據模型,以及一個用於操作處理和訪問的API。
從RSA到Ecore的轉換是創建一個EMF模型的最佳途徑,因為可以從“EMF模型和項目創建”向導中直接使用它。
對於一個RSA模型,您只需要點擊File->Export然後選擇Ecore Model選項,就像圖2中所示的那樣。
圖2:導出Ecore模型
Ecore模型將包含兩個Library包。這是因為RSA頂層模型元素及其所包含的包都被轉換為了EMF包。如果希望的話,您可以先編輯Ecore文件來刪除一個多余的包,確保被包含的模型元素被移送到目標包中。
從RSA模型到UML2模型
RSA的模型是一種對UML2標准模型的私有擴展。RSA包含一個內置的導出功能來完成從一個RSA模型到一個標准的UML2模型的轉換。這一轉換過程能夠被用來開發EMF模型,但這種做法並不理想,因為它需要一個從UML2到Ecore的額外轉換過程。只有在此之後Ecore模型才能被用來創建一個EMF模型。
將一個RSA模型轉換到一個UML2模型,點擊File->Export然後選擇UML2 Model選項,就像圖3中所示的那樣。
圖3:導出UML2模型
創建EMF模型
為了開發利用EMF,就需要創建一個EMF發生器模型,就是我們所知道的genmodel。
從Ecore創建一個新的EMF模型
利用一個標准的Ecore模型,您希望創建一個完全的EMF模型,以便在運用EMF的開發過程中充分利用它。
要創建一個完全的EMF模型,你可以使用所提供的EMF向導。首先點擊File->New->Other,然後打開選項Eclipse Modeling Framework選擇EMF模型向導。點擊Next來繼續該向導,就像圖4所示的那樣。
圖4:EMF模型創建向導
輸入一個名稱來生成模型文件——例如,Library.genmodel——然後點擊Next。就像圖5所示的那樣,選擇load from an EMF core model,因為您已經在先前的RSA中創建了這些,點擊Next。
圖5:從Ecore而來的EMF模型
在利用適當的Browse按鈕之前,定位從RSA中導出的Ecore文件。點擊Next就像圖6中所示的那樣。
圖6:提供源Ecore
最後選擇“Library ”包,然後點擊Finish退出向導。
現在,您將得到一個按照您所制定的要求而創建的 Library.genmodel 文件。
觀察新的EMF模型
現在您已經創建了 Library EMF模型,在它們的編輯器中打開新的資源來觀察結果。從中可以打開元素並檢查它們的屬性,就像圖7中所示的那樣。
圖7:Genmodel 和Ecore 的生成
現在此模型已經被轉換到EMF模型,EMF可以在這個模型中被充分利用。
總結
RSA 和EMF在應用程序開發周期中都有著特定的用途,目的就是使您能夠容易的跨工具使用。當工作在復雜的模型中時,使用RSA來開發模型就變得非常理想。 RSA能夠提供可視化的UML建模,利用概要文件使之適應UML語義的能力,以及從一種模型轉換到另一種模型的能力。RSA具有將其模型轉換到EMF core模型的能力。另外,使用EMF所支持的功能,您可以使用EMF core模型來產生一個完整的EMF模型。
同樣需要注意到的是,RSA具有一項基於已經存在的EMF core模型創建模型的特性。在EMF core模型是唯一可得到的模型來源時,RSA模型是最理想的方法。
本文配套源碼