EMF中的三個部分:元數據meta-data,代碼生成code generation,默認序列化default serialization.
EMF is part of the Model Driver Architecture(MDA).MDA是將整個應用軟件生存周期的開發管理都集中于模型上。這種模型是用元模型(meta-model)定義的。然后,使用映射,模型被用于生成software artefacts, 這就實現了整個系統。
EMF所能做的:emf能夠用于描述和構建模型。所實現的模型可以被用于任何java應用程序的開發。
對于ecore模型我們有幾點需要注意:
1。在ecore文件的xmi描述中沒有各個元素之間的聯系,我們使用EReference來表示各個元素之間的聯系。
對于兩個方向上的聯系,通過兩個成對的EReference來表示,每個聯系的類,都有一個eOpposite來保存它自己在所聯系類中的名字(引用)。
對于單方向上的聯系,使用一個單獨的EReference,并且這個reference沒有eOpposite(因為對方并沒有對自己的引用)。
連接的多重性通過upperBound和lowerBound來表示。多個用-1。
2。使用EPackage可以像java中的package一樣用。
3。兩種模型,一種是業務模型,一種是視圖模型。一般將兩種模型放在不同的package中。兩種方法將兩種模型聯系起來:
一是構建一個新package,構建一個多重繼承的新package來將兩個package聯系起來。
二是將兩種模型分開存儲,添加從視圖模型到業務模型的引用。這種方法兩個模型是松耦合的。這種單方向的引用也不會破壞(污染)業務模型。注意,由于這種引用是兩個package之間的,所以在移用的eType類型中需要指明包名。
除此之外,ecore還提供了一種遞歸的定義方法。就是使用eSubPackage來分別包含業務模型和視圖模型,并且在這兩個subPackage間建立reference(對于package來說是自己引用自己)。
4。我們可以有多種方法來生成ecore模型。通過注釋的java接口(annotated java interface),通過rantional rose創建模型,通過XML Schema等等。