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 版本上的大部分工作。社群在報告 bug、貢獻補丁、突出使用場景以及普遍討論專案如何繼續改進的方法方面也表現出色。
我想快速回顧一下自 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 的 富 Web 培訓課程、IntelliJ、Skyway Software 以及第一本 Web Flow 2 書籍。
未來方向
我們為未來制定了很多計劃。技術細節我將在另一時間介紹,但我想總結一下這項工作的幾個關鍵主題。首先,Web Flow 3 將是第一個要求 Java 5 的版本,因為它將以 Spring Framework 3 作為基礎。其次,您可以期待引入 @Flow 模型,該模型補充了 Spring MVC 的無狀態 @Controller 模型,並允許將有狀態的 Web 流定義為 POJO。第三,您可以期待 Spring JavaScript 和 Spring Faces 這兩個源自 Web Flow 2 工作的模組,都被提升為頂級的 Spring 專案。Spring JavaScript 將成為 Spring 官方的 Ajax 整合專案,而 Spring Faces 將成為 Spring 官方的 JavaServerFaces 整合專案。
我期待下週在 SpringOne 與大家見面,討論您應用該專案的經驗以及我們未來的方向!