Flex開發流程設計器的經驗之談(4)

2021-08-23 13:16:06 字數 1156 閱讀 8970

在(3)中,簡要介紹了整個flex版設計器的整體架構,那麼今天就進入比較細粒度的flex gef的核心看看。

既然名稱中有「gef」,那麼肯定會與eclipse gef的設計會有所類似,事實上,本身就是借鑑gef的設計思想和物件概念模型,只是做了改造和簡化。

如下圖所示。

其最基本的核心在於「imodel、ieditpart、ifigure」,這構成了mvc的核心物件模型。

imodel的變更會通知ieditpart這個控制器,由控制器重新整理ifigure。—— 不過此處並沒有採用emf那種物件結構:emf在底層對model的所有屬性變更都做了監聽,任何變更都會引發notifor操作,從而利用***來處理notification。在我最初的設計中,原本也想這麼操作的,不過後來摒棄這個思路。如果在底層再引入乙個類似emf的框架,會再引入大量的基類,無形中增大了最終flash檔案的大小。所以,此處雖然也支援notifor操作,但是都是「外圍顯示主動通知notifor」的方式,而且拋棄了notification這一層。—— 這樣的結果就是,我在command中,並不是非常徹底的只操作model,或多或少都會會顯示引發對editpart的處理操作。(這是乙個很「拖泥帶水」的實現方式,但是處理方式要簡化很多,而且節省了很多底層**,縮減了flash檔案)。

當然,每乙個editor都會維持乙個屬於其自己的editdomain,用於記錄在當前操作空間的一些物件,比如「commands」、「那些物件被選中」、「figure或model與editpart的快速索引」等等。

另外,每個editor都會由乙個viewer來,定義當前顯示方式。同時,利用editpartfactory、modelfactory、figurefactory來建立相應物件。上層業務層真正需要實現不同的factory(已經包括相應的model、editpart、figure),這樣就可以很容易快速實現不同「檢視展現模式」。—— 外圍大量的擴充套件**都是在這個地方。

當然,這裡面有乙個「figure」概念。早在(1)中,就已經簡單提過,figure並不是flex中的概念,只是用用於「宣告這是乙個gef中的圖形」而已。(注:這個figure的處理很有技巧性,處於商業產品的限制,我無法更多的在這裡做詳細解釋,大家只能自己揣摩了)

當然,真正的flex gef核心實現要比上面圖形中的展現複雜不少。但基本邏輯關係的核心已經表示差不多了。

這部分內容也只能「點到即止」,畢竟本身屬於商業產品範疇。

Flex開發web流程設計器的經驗之談(1)

乙個多月之前,發了篇有關用flex開發了乙個流程設計器原型的博文,詳見 這乙個多月來,主要忙於這邊引擎的重構,以及flex流程設計器的實際性開發工作。目前基本已經成形,所以將一些心得寫出來,分享一下。目前的外在表現,以及內部構架,已經與原型幾乎不同了,進行了很大的重構。如下圖,是目前的外觀,是按照b...

Flex開發web流程設計器的經驗之談(1) 轉

備份一下資料,哈哈 乙個多月之前,發了篇有關用flex開發了乙個流程設計器原型的博文,詳見 這乙個多月來,主要忙於這邊引擎的重構,以及flex流程設計器的實際性開發工作。目前基本已經成形,所以將一些心得寫出來,分享一下。目前的外在表現,以及內部構架,已經與原型幾乎不同了,進行了很大的重構。如下圖,是...

FLEX 流程設計器

今天是我在csdn第一次寫部落格。先把我做的東西放在上面。然後我在點評!基本實現了流程設計器的所有功能,與後台同步,匯入匯出檔案,匯出,繪製虛線直線曲線等,泳道的繪製,前進回退。放大縮小。等等。使用了自己做的和自帶的特效。我在做本作品的同時,參照了。外國人寫的圖形軟體的demo。老外總是nb的。在學...