Spring Web Flow 專案團隊剛剛完成了 Web Flow 2 的 第七個維護版本。這是我們迄今為止最好的版本,距離 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 系列的大部分工作。社群在 報告錯誤、貢獻補丁、突出 使用場景 以及普遍討論專案可以如何繼續改進 方面 也表現出色。
我想快速回顧一下自 2.0.0.RELEASE 以來做出的一些具體改進:
-
流 URL 對映的配置簡化和約定
這項改進在 2.0.5 版本中實現,源於客戶反饋以及 Dan Allen 在 JSFOne 上的演示,它將典型的 webflow-config.xml 檔案大小減半,降至約 20 行配置。正如您在 此處 所見,這是透過應用萬用字元搜尋流定義並結合基於流 ID 的流定義到 URL 的約定來實現的。
-
顯式檢視狀態模型繫結的支援
這項改進首先是為了響應此 安全公告 而為 SpringSource 客戶提供的,隨後在 2.0.3 版本中釋出,它允許您限制允許的模型繫結集按檢視狀態進行。這透過此處 展示 的宣告性樣式實現。
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 版本中新增。
型別轉換改進
在 2.0.2 到 2.0.6 版本中,對支援檢視狀態模型繫結的系統進行了大量改進。該系統提供了 Spring DataBinder 的所有獨特功能,例如支援轉換通用集合的元素,並且與 Java PropertyEditors 相比,具有更簡單的型別 Converter API。
除了這些核心改進之外,我們還在過去一年中看到了許多有趣的 Web Flow 整合,例如 Grails 1.1、ZK RIA 框架、Terracotta、IceFaces、SpringSource 的 richweb 培訓課程、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 上與許多朋友見面,討論您在應用該專案中的經驗以及我們的未來方向!