背景:
小弟工作已有十年有余,期間接觸了不少工作流產品,個人比較喜歡的還是JBPM,因為出自名門Jboss所以備受推崇,但是現在JBPM版本已經與自己當年使用的版本(3.X)大相徑庭,想升級也不太容易,后來得知JBPM的老大轉戰到了Activiti,處於對JBPM的喜歡所以研究了一下Activiti,發現Activiti不但保留下JBPM優秀的DNA而且還進行了優化,相比之前JBPM設計更簡單更清晰更容易掌握。
三年前Activiti開始進入公司的正式項目中並且表現非常良好,但是它的Web版的定制器無法滿足我們的需求,可能是由於當初Activiti剛發布不久這方面的成型的產品比較少,所以沒有找到合適的替代產品,那該怎么辦呢?經過一番的思想斗爭,小弟決定先自己做一個Demo,如果可行則自己研發。
經過研究其他工作流引擎的定制器,小弟發現找到一個能夠支持多瀏覽器的繪圖腳本庫很關鍵,所以開始在網上瘋狂的尋找,俗話說:黃天不負有心人,最后終於發現一個新大陸——Draw2d,但是接下來一個問題來了,這個腳本庫是收費的,怎么辦?誰叫咱們是做JAVA出身的呢!對免費的開源的情有獨鍾,后來在網上找到早期的版本是免費的,下載下來研究一番發現功能基本夠用,哈哈哈。。。。搞定!
好了羅嗦的這么多,就是想引出本篇的主人公——Draw2d,至於它有多牛可以訪問官網了解一下,不過現在都是收費的而且比早期的版本功能強大很多。
下面進入正題,詳細講解一下Draw2d,講解之前請注意以下內容都是基於Draw2d早期版本而且都是本人通過研讀代碼獲得(由於收費所以沒有文檔,只能靠自己),如果與現在版本有出入或者理解錯誤的地方請指正。
Draw2d類圖:
以上是Draw2d中各種組件(如:窗口、對話框、菜單、圖形、線的起點和終點、注釋等等)類圖,這些組件在繪圖時經常用到,其中帶顏色的類是本設計器使用的組件(后面的章節會着重介紹)。
以上是Draw2d中連接線類圖,設計器中的連接線就是Connection擴展而來,一個Connection實例一般由三個部分組成:Color、ConnectionDecorator和ConnectionRouter。
Color:定義連接線的顏色(RGB)
ConnectionRouter:定義連接線是折線還是曲線等
ConnectionDecorator:定義連接線是否有箭頭
后面會重點介紹,這里不在贅述。
以上是Draw2d中畫布類圖,繪圖時在畫布上添加圖形(上面提到的類的實例)即可實現相應圖形的繪制。Draw2d中已經內置了WorkFlow類型的畫布這為定制器的開發帶來了很大的方便。
這幅圖是Draw2d中指令類圖,Draw2d中使用了Command模式響應事件處理,方便實現自定義工具欄功能按鈕,如:設置顏色、設置文本功能等等。
除了以上類圖中展示的類,Draw2d中還有很多靜態工具方法和工具類(如:XML解析、序列化/反序列化、ArrayList、String等),這里不在過多的展開查看源代碼很容易理解,有問題的話可以給我留言。