初識(shí)ecore文件
今天終于成功的編譯了一個(gè)ecore文件,輸出的結(jié)果是genmodel文件,然后在用這個(gè)genmodel文件generate model/edit/editor,就能夠得到一個(gè)最簡(jiǎn)單的屬性輸入框。
在編輯這個(gè)ecore文件的時(shí)候,遇到了幾個(gè)問(wèn)題,雖然都不大但是我覺(jué)得有一定的代表意義。從ibm的redbook上面幾乎都能找到答案,然后再加以實(shí)踐,問(wèn)題都能解決。
先看一眼總體的截圖:
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
第一個(gè)問(wèn)題就是根據(jù)ecore生成genmodel的時(shí)候系統(tǒng)不響應(yīng),點(diǎn)擊“finish”仍處在那個(gè)界面上。原因很簡(jiǎn)單,就是ecore文件有錯(cuò)誤。我ft,有錯(cuò)誤為什么不提示?無(wú)論是在eclipse還是在其他的xml文件查看器比如xmlspy2005pro都沒(méi)有出錯(cuò)提示,以至于我一致以為是我的腦子出了問(wèn)題:(
大方向找對(duì)就開(kāi)始解決錯(cuò)誤。
第二個(gè)問(wèn)題是每一個(gè)Eclass和所有的Eattribute和Ereference都必須由Etype,還不能是默認(rèn)的。如果在UML圖中是java基礎(chǔ)類比如int,boolean,String等等都可以選擇E*與其對(duì)應(yīng)的類(Eint,Eboolean,EString)。
第三個(gè),如果遇到了非常用類,比如InputStream等,就需要在試圖中創(chuàng)建一個(gè)新的EDataType,用它來(lái)代表我們要用的類。下圖是InputStream的屬性列表,結(jié)合他簡(jiǎn)單的說(shuō)一下如何定制這種EDataType:
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
DefaultValue和Serializable不用去管它,Instance Class Name里面輸進(jìn)去要指代的原始類,這里我們輸入的是java.io.InputStream,Name里面輸入的是這個(gè)對(duì)象的名字。保存以后在EAttribute元素的EType里面就能看到我們自己定義的類了。
p.s.
genmodel文件不能在Eclipse編輯器中修改,只能按照文本方式修改,非常的不方便,因?yàn)楹苡锌赡艹鲥e(cuò)。這個(gè)時(shí)候就只能對(duì)ecore文件進(jìn)行修改,然后再生成genmodel文件。
genmodel生成的代碼不能直接加入實(shí)現(xiàn)的接口類中的一些方法,需要在后面手動(dòng)添加。很簡(jiǎn)單,ctrl+1選擇相應(yīng)的選項(xiàng)就行了。
我覺(jué)得emf生成的代碼只是一個(gè)框架,具體的實(shí)現(xiàn)細(xì)節(jié)似乎還需要我們手動(dòng)的輸進(jìn)去,建模要是能在完整就好了,呵呵,懶鬼:P
posted on 2005-04-10 11:11 youthyflyer 閱讀(1135) 評(píng)論(0) 編輯 收藏 所屬分類: EMF&GEF學(xué)習(xí)和實(shí)踐