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