Posted on 2007-05-07 14:10
xiaoxiaoleemin 閱讀(996)
評論(1) 編輯 收藏 所屬分類:
EMF
我習慣于直接用ECore Editor建立ecore模型,如果裝了GMF插件的話,在ecore文件上點擊鼠標右鍵,通過菜單“Initialize ecore-diagram diagram file”可以生成類似類圖的表示,這樣可以從整體上看模型。而且在建模的過程中可以隨時"Validate"以檢查當前存在的錯誤。以下是一些常見的問題:
1.Ecore Editor中根元素的直接子元素屬性頁中有“Ns Prefix"和"Ns URI"兩項需要設置,前者可以設置為模型的名字,后者隨便設置一個URI地址,如"http://"+模型名字。如果這兩項不設置,那么當修改了ecore模型后,從genmodel上“Reload" ecore模型時出錯。
2.某個EReference如果多重性為"0...*",則在屬性頁中把lower bound設置為0,upper bound設置為-1。
3.genmodel根元素的第一層子元素的屬性頁中,"All"類別中“prefix”屬性值是指EMF生成的代碼中Factory和Package等類的前綴,可以指定為模型名字,首字母大寫以符合類名的習慣;“base package”屬性值是生成的各個包的前綴,假設指定為“com.example"。然后有“Ecore”類別,其中的各個屬性值是從ecore模型中讀過來的,不可修改,其中“Package”類別下的"Name"屬性值是包名的一部分(假設指定為model),接在前面的base package值之后,那么生成的Model 部分代碼分別有三個包:com.example.model; com.example.model.impl; com.example.model.util.
btw:在有的GMF 版本中,如果包名存在首字母大寫的單詞,那么生成代碼的時候會出錯。