最近做了一個可視化編輯器相關的項目,采用了GMF。現在項目即將進入尾聲,以后可能不再接觸這個東西,so在還沒有忘掉之前,將經驗記錄下來以供大家參考。 當然做這個項目之前,我對GMF,EMF一無所知,只是對GEF有所了解,所以可能會有些囫圇吞棗的感覺,但是相信我的理解還是會對各位有所幫助。
GMF其實是一個整合了GEF,EMF的自動化生成代碼的項目。使用GMF,可以快速的生成一個包含可視化編輯器的項目,這一點網上有文章介紹:15分鐘學會GMF。15分鐘是夸張了一點,不過15天完成一個可視化項目,對一個熟練的GMF程序員來說,卻絕對不是什么難事。但是既然使用了GMF框架,你就不得不面對以下幾個問題:
一、既然是框架,自然要遵守框架的規則,GMF是模式驅動設計的,也就是說必須建好模型,才能進行下一步的開發工作。但是國內很多項目,需求總是不斷更新,這種情況下,不要輕易使用GMF。
二、使用GMF框架,自然不具備GEF的靈活性,很多地方都被限制住了,不適合做靈活性非常大的圖形設計。
三、不得不忍受GMF里大量的bug。
我比較過GMF1.0,2.0,2.1三個版本,其中1.0完全不能容忍,2.0比較傻,2.1還過得去,所以GMF還是值得大家期待的,畢竟是越做越好。

一個比較簡單的GMF流程編輯器
個人感覺GMF非常適合做流程編輯器,主要是圖形要求簡單,并且適合GMF自動布局,兼之對模型要求不高。
在學習GMF之前,有必要研究一下GEF和EMF,其中GEF是必須要有所了解的,而對EMF要求不算太高,能建一個ecore模型,了解emf的commandstack就夠了(其實我本人不太喜歡EMF,我更喜歡用自己的模型框架)。
GMF的學習周期大概2周左右,上手到熟練大概需要1個月的時間(我自己的學習周期),當然這期間會碰到各種各樣的技術問題,針對不同的case,碰到的問題也會不一樣,而我這個系列的文章,主要就是把我所遇到的問題陳列出來,并提供一個解決之道。
附GMF相關資料:
八進制:GMF常見問題
GMF Newsgroup Q and A