Jbpmside要使用Flex開發流程設計器以及管理器,剛好公司的一個內部項目也應用到Flex,大概花了一個禮拜來熟悉和瞭解Flex。其中發現Flex開發和AJAX開發的很多相通之處,這裡把自己對Flex的一些學習心得總結一下。分為三部分,分別是對Riawave架構的介紹、參照Riawave,對自己先前採用的AJAX開發架構的介紹、以及對AJAX前景的一些自己看法。
一、Flex架構Riawave的定製應用
Flex有很多開發架構,最有名的是Cairngorm。但是Cairngorm太複雜了,職責的細粒度分離帶來的是過多的類和代碼,不太適合中小項目。這裡我們採用了Riawave,準確的說Riawave並不是一個架構,它只是一個通訊錄管理的簡單程式碼範例,它包含了很多的最佳實務。這裡想說一點,就是很多時候採用某種技術起決定因素的往往不是技術本身是否先進,而是看該技術的使用者是否眾多。
Riawave將應用程式拆分成三部分,分別是Views、ModelLocator、DAO。
Views指的是應用裡的頁面組件,例如表格、表單、菜單等。它的職責:1、組成整個應用的介面;2、對組件內部的原生事件進行處理,這些事件指發生在該組件裡的滑鼠事件和鍵盤事件;3、當需要其他組件進行協作時,發布定製事件;4、對其所關聯的資料進行操作;5、監聽其他組件發布的與之相關的定製事件,並做出展現形式上的改變。
ModelLocator是整個應用的核心。
它的職責:
1、集中儲存應用的所有資料;
2、給頁面組件提供統一的定製事件監聽器介面,即所有的頁面組件要對其他組件的定製事件監聽則必須通過ModelLocator來進行訂閱;
3、唯一的定製事件發布介面,即任何頁面組件要發布自己的定製事件都必須通過ModelLocator發布;
4、集中維護所有定製事件的類型。ModelLocator是單態的,通過ModelLocator,應用程式所有的定製事件都被統一管理。
DAO負責操作應用的資料。
它的職責:
1、改變應用的資料,提供應用資料修改的統一介面,即使用者操作頁面組件改變資料時,實際上是由頁面組件轉寄給DAO處理;
2、遠端存取服務端,Flex通常作為應用程式的前端展現出現,和AJAX一樣,資料的操作要和伺服器端進行互動;
3、伺服器端返回正確的操作結果後,改變ModelLocator裡的資料,發布定製事件,觸發相應頁面組件改變。
可以看到,整個Flex應用完全是由事件驅動的。
其他需要瞭解的部分:
1、Flex的Data Binding機制,這個機制實際也是由事件發布/訂閱機制實現的,它可以省去自己編寫重複的定製事件發布/訂閱代碼,實現組件展現資料與ModelLocator的資料同步;
2、VO,本地的資料建模、用途:發布定製事件時,通過VO攜帶組件資料,VO被包含在事件裡;傳遞資料到DAO。