Spring Web Flow 專案團隊剛剛完成了 Web Flow 2 的第7次維護版本。這是我們迄今為止最好的版本,距離 Web Flow 2.0.0 最終版本釋出幾乎整整一年。現在,隨著 2.0.x 系列的成熟和穩定,我們正在開始下一個主要版本的工作。在這篇文章中,我想回顧過去的一年,並提供一些關於我們未來方向的資訊。
Web Flow 2 的採用情況
Web Flow 2 去年釋出後,我們在釋出後的頭兩個月就看到了 50,000 次下載。自那以後,我們的論壇流量穩步增長,並且我們在幾個令人興奮的行業中看到了新的採用。你們中的許多人知道 Spring Web Flow 是 Orbitz 線上旅遊平臺的基礎,該平臺目前為 ebookers.com 和 nwa.com 等網站提供支援。如果您一直在關注 2009 年的 NBA 季後賽,您可能也會發現 Web Flow 同樣是 nba.com 的重要組成部分。
我們過去一年的工作
像所有 Spring 專案一樣,Web Flow 的成功依賴於反饋。與客戶和 SpringSource 支援工程師的現場交流推動了我們去年對 2.0.x 的大部分工作。社群在報告 bug、貢獻補丁、突出使用場景以及總體討論專案如何繼續改進的方法方面也非常出色。
我想快速回顧一下自 2.0.0.RELEASE 以來的一些具體改進
-
Flow URL 對映的配置簡化和約定
這一改進在 2.0.5 中應用,並受到客戶反饋以及Dan Allen 的 JSFOne 演示的推動,將典型的 webflow-config.xml 檔案大小削減了一半,減少到大約 20 行配置。正如您所見,這是透過結合基於 flow id 將 flow 定義繫結到 URL 的約定,應用對 flow 定義的萬用字元搜尋來實現的。
-
支援顯式的 view-state 模型繫結
這一改進首先作為對本安全公告的回應提供給 SpringSource 客戶,隨後在 2.0.3 中釋出,它允許您按 view-state 限制允許的模型繫結集合。這是以此處所示的宣告式風格實現的。
Post 後重定向改進
Web Flow 最有用的功能之一是Post 後重定向模式可以直接工作,這是良好後退按鈕支援和受控導航的一個關鍵先決條件。2.0.5、2.0.6 和 2.0.7 都引入了對這一支援的後續改進。最近的改進確保重定向行為在所有場景中都能一致應用,包括出現繫結或驗證錯誤時。您可以在 ViewState.java 的 doEnter 和 doResume 方法中檢視控制此模式強制執行的原始碼。
支援流式操作
社群找到了如何將檔案流式傳輸回參與流的客戶端。對此的文件支援在 Web Flow 2.0.0 中被忽略了,並在 2.0.6 中新增。
型別轉換改進
為支援 view-state 模型繫結的系統進行了大量改進,這些改進在 2.0.2 到 2.0.6 版本中實現。該系統提供了 Spring DataBinder 的所有獨特功能,例如支援轉換泛型集合的元素,並且相比 Java PropertyEditors 具有更簡單的型別轉換器 API。
除了這些核心改進之外,我們在過去一年還看到了一些有趣的 Web Flow 整合,例如 Grails 1.1、ZK RIA 框架、Terracotta、IceFaces、SpringSource 的富 Web 培訓課程、IntelliJ、Skyway Software 以及第一本 Web Flow 2 書籍。
未來方向
我們為未來制定了許多計劃。技術細節將留待下次再談,但我想總結一下這項工作的一些關鍵主題。首先,Web Flow 3 將是第一個要求 Java 5 的版本,因為它將以 Spring Framework 3 作為基礎。其次,您可以期待引入 @Flow 模型,它與 Spring MVC 的無狀態 @Controller 模型相輔相成,並允許將有狀態的 Web flow 定義為 POJO。第三,您可以期待 Spring JavaScript 和 Spring Faces,這兩個從 Web Flow 2 工作中發展而來的模組,都將被提升為頂級 Spring 專案。Spring JavaScript 將成為 Spring 官方的 Ajax 整合專案,而 Spring Faces 將成為 Spring 官方的 JavaServerFaces 整合專案。
我期待下週在 SpringOne 與大家見面,討論你們應用該專案的經驗和我們未來的方向!