Spring Web Flow 2.0 M4 - 反饋徵集
Web Flow 團隊一直在努力開發 Web Flow 2。我們剛剛達到了第四個里程碑,並最早將於下週進入釋出候選狀態。2.0 最終版本計劃於本月底釋出。
從現在到 2.0 最終版本釋出,我們期待您的反饋!如果您是當前使用 Web Flow 1.x 的應用程式開發人員,或正在評估在您的專案中使用 Web Flow,請評估 2.0 M4 並告訴我們您的想法。如果您是將 Web Flow 引擎整合到您的框架中的 Web 框架提供商,我們鼓勵您評估 2.0 M4 中改進的鉤子,並與我們聯絡。
在接下來的幾段中,我將為使用 Web Flow 的應用程式開發人員以及將其整合到自己 Web 框架中的框架開發人員提供 2.0 M4 的亮點。
應用程式開發人員
首先,評估最新的 Web Flow 功能集的最佳方法是執行分發包中包含的參考應用程式。2.0 M4 中有兩個參考應用程式,它們都是“Spring Travel”旅行預訂應用程式的變體。一種變體展示了 Web Flow 如何與 Spring MVC 和 JSP 檢視整合,另一種則展示了 Web Flow 如何與 Spring MVC 和 JSF 檢視整合。(參見:
如何部署)
2.0 版本的主要主題之一是易用性。Web Flow 2.0 M4 引入了許多新功能,簡化了流程的實現,我們非常歡迎您就這些功能提供反饋。具體來說:
- 我們引入了簡化的 XML 流程定義語法。執行最新的 Spring Travel 參考應用程式進行測試,或者比較我們示例流程的舊版本與最新版本。您怎麼看?許多簡化源於增強的 EL 使用以及更簡單的動作執行標籤。例如,您現在可以使用 EL 執行任何 Spring bean 上的任何方法,以及任何流程變數。
- 我們引入了與 Spring Security 2 的整合。Spring Travel 參考應用程式展示瞭如何使用“secured”元素保護流程。您還可以保護狀態和轉換元素。
- 2.0 M4 中有幾個新的“富 Web”功能。您可以將檢視狀態標記為“popup”,其檢視將為您呈現在一個彈出對話方塊中(預設為 Dojo 彈出視窗)。您還可以在轉換塊中使用新的“render”標籤,以在處理 Ajax 事件後請求頁面的部分渲染。最後,嘗試在 Spring Travel 應用程式中關閉 Javascript,並注意應用程式如何繼續工作。我們努力構建了對降級支援,這對於無法依賴客戶端上 Javascript 可用的客戶來說很重要。
- 我們顯著減少了 FlowExecution 鍵的長度。1.x 版本的鍵格式使流程執行 URL 看起來像這樣:https:///booking?_flowExecutionKey=_c1E11178E-485F-3913-98BA-86E17A09FA3D_kE977CB0B-47FE-3319-A688-FE4F4FFFCE2。預設的 2.0 格式為您提供了更簡單的 URL,例如:https:///booking?execution=c1v1,其中第一個數字是您的 conversationId,第二個數字是您的檢視(或 continuation)id。當然,URL 格式仍然是可配置的。
- 還有更多內容值得檢視;請參閱釋出公告,瞭解其他新功能的描述。
框架開發人員
Web Flow 的目標之一始終是“專注於做好一件事 [實現流程],並使其易於擴充套件”。Web Flow 的核心扮演著提供最完整的流程引擎的重任。在此角色中,我們鼓勵其他框架提供商在我們工作的基礎上進行構建,並讓他們告訴我們整合是否不夠簡便。Grails 社群已經在這樣做,他們將 Web Flow 整合到 Grails 中,以便在 Groovy 中實現流程(Grails 基於 Spring MVC 構建,而 Web Flow 是一個自然的 MVC 擴充套件,因此非常契合)。
為了讓框架開發人員更容易整合,我們在 Web Flow 中做了一些工作。首先,主要有三個擴充套件點:
- FlowExecutor SPI 允許 Web Flow 引擎嵌入到另一個環境中,例如 Web 框架。例如,這就是 Web Flow 整合到 Spring MVC 的方式。我們將 Spring MVC 視為權威的基於 Java 的 MVC 平臺,但如果您不能將其作為基礎,這個鉤子就在那裡供您使用。
- FlowBuilder SPI 允許您引入另一種語法來定義流程。我們的 XmlFlowBuilder 隨 Web Flow 分發包一起提供。Graeme Rocher 為 Grails 開發了一個基於 Groovy 的流程構建器。
- ViewFactory SPI 允許您將檢視框架整合到 Web Flow 中,以便在流程中渲染檢視。這就是 Spring Faces 如何為 Web Flow 提供 JSF 支援的方式,也是劍橋大學 RSF 團隊如何將 Web Flow 整合到他們的框架中的方式。我能想到使用此擴充套件點進行整合的其他候選方案包括 Wicket、Flex,以及可能的 GWT。
這些擴充套件點在版本 2 中都得到了簡化,並且 ViewFactory 擴充套件點是新的。2.0 M4 還引入了一個新的“AjaxHandler”擴充套件點,用於整合 Ajax 請求/響應處理,並提供了一個與 Spring Javascript 配合使用的實現。我們目前還在與 IceFaces 團隊合作,以便在 2.0 最終版本釋出時整合他們的 Ajax 元件庫。Web Flow 2 的正式釋出即將到來。請幫助我們使其儘可能易於使用和擴充套件!