Spring Web Flow PR4 發布

發布 | Keith Donald | 2005 年 7 月 17 日 | ...

親愛的 Spring 社群:

我很高興宣布 Spring Web Flow Preview 4 (PR4) 的發布。此版本將 Spring Web Flow 與 Spring 1.2.2+ 對齊。

這將是最後一個 Web Flow 預覽版本;下一個版本將是 1.0 RC1。要下載,請訪問:http://sourceforge.net/project/showfiles.php?group_id=73357&package_id=148517

注意:PR3 和 PR4 之間存在一些不相容的變更。這包括將根套件從 org.springframework.web.flow 重新命名為 org.springframework.webflow,強調 Web Flow 作為一個獨立模組的地位,值得擁有頂層套件。 有關變更的完整列表,請訪問此處的變更日誌:http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Change+Log

WebFlow Portlet 使用者的特別注意事項:PR4 不包含 Portlet MVC 整合。Portlet MVC 使用者將需要等待幾週後的 Web Flow RC1,屆時 Portlet MVC 將整合並隨 Spring 1.3 一起發布。對於由此造成的任何短期不便,我們深感抱歉:預計更好的 Portlet MVC 整合 + 範例應用程式將在未來幾週內恢復。

此 PR4 版本包含許多新的且值得注意的增強功能。以下是其中一些

State 進入動作

任何 State 類型的任何實例都可以配置一個進入動作,該動作將在進入該狀態時執行。這有助於通用狀態設置邏輯。例如,ViewState 可以設置一個進入動作來執行任意的預渲染邏輯。 這種預渲染邏輯可能會加載參考資料以填充表單下拉式選單。 任意數量的動作可以按順序執行,作為複合狀態進入動作的一部分

<view-state id="displayCriteria" view="searchCriteria">
<entry>
<action bean="searchFormAction" method="setupForm"/>
<action bean="searchFormAction" method="setupReferenceData"/>
</entry>

<transition on="search" to="executeSearch">
<action bean="searchFormAction" method="bindAndValidate"/>
</transition>
</view-state>

TransitionableState 退出動作

任何 TransitionableState 類型的任何實例都可以配置一個退出動作,該動作將在退出該狀態時執行。這有助於通用狀態拆卸邏輯。可以再次指定多個動作,它們將自動包裝在 CompositeAction 中。

<action-state id="executeSearch">
<action bean="searchAction"/>
<transition on="success" to="displayResults"/>
<exit>
<action bean="auditAction" method="logResults"/>
</exit>
</action-state>

Flow Execution Listener Criteria

在 PR4 之前,沒有簡單的方法可以為一組流程定義定義哪些監聽器應觀察已啟動的流程執行。新的 FlowExecutionListenerCriteria 提供了一種可插拔的策略,其中針對給定 Flow 定義的執行的適用監聽器集是按請求計算的。

<bean id="flowExecutionManager"
class="org.springframework.webflow.execution.servlet.ServletFlowExecutionManager">
<property name="listenerMap">
<map>
<entry value="*">
<key>
<list>
<bean class="example.Listener1"/>
<bean class="example.Listener2"/>
</list>
</key>
</entry>

<entry value="sampleFlowA">
<key>
<list>
<bean class="example.Listener3"/>
</list>
</key>
</entry>
</map>
</property>
...
</bean>

上面的 Spring 配置將 Listener 1 和 2 附加到所有流程 (*) 的執行,而 Listener 3 僅附加到 "sampleFlowA"。

大大增強的表達式語言支持

此版本的一個真正優勢是新的 Spring 資料綁定模組的持續進展。 spring-binding 包含一個表達式解析和評估抽象,該抽象與強大的類型轉換設施無縫整合。 這兩者結合起來允許消耗表示一個或多個表達式的任意字串,例如“Announcement: ${org} ${product} ${release} is out!”,並將其轉換為可評估的表達式,使用任何表達式語言,其中 OGNL 是預設語言。 Spring Web Flow 在多個地方利用此機制,包括重新導向表達式、轉換表達式和屬性映射表達式

  1. 對於針對請求上下文評估的重新導向表達式,例如
    redirect:/${sourceEvent.parameters.url}?attribute1=${flowScope.foo}&attribute
    2=${requestScope.bar}"
  2. 對於驅動動態狀態轉換決策的轉換表達式
    <transition on="${result == 'success' && ${flowScope.selectedItinerary.price} > 500.0" to="requireCreditCheck"/>
  3. 對於在兩個來源之間映射屬性的屬性映射表達式
    <subflow-state id="browseDetails" flow="detailFlow">
    <attribute-mapper>
    <input value="${sourceEvent.parameters.id}" as="someBean.id" from="string" to="long"/>
    </attribute-mapper>
    ...
    </subflow-state>

增強的屬性映射器類型轉換支持

輸入和輸出映射元素的 "from" 和 "to" 屬性可用於指定類型轉換規則。 因此定義

<input value="${sourceEvent.parameters.id}" as="someBean.id" from="string" to="long"/>

表示

將 ${sourceEvent.parameters.id} 的值從字串轉換為 long,並在 someBean.id 處設置 long 結果。

基於會話的 TransactionSynchronizer 策略

PR4 新增了一個新的 TransactionSynchronizer,它在 HTTP 會話範圍的儲存中管理事務 token。 它非常適合與利用連續性並需要防止重複應用程式事務發生的流程一起使用。

新的便利動作實現

webflow.action 套件現在支援多個新的動作實現,包括:CompositeAction、DelegatingAction 和 GuardedAction。

啟用 JMX 的流程執行統計

sellitem 範例現在演示了使用 JMX 管理協議收集所有 Web Flow 的全域統計資料,並使用任何 JMX 客戶端(如 JDK 1.5 JConsole)監控這些統計資料的功能。 未來的 Web Flow 版本將增強此功能,以允許在每個流程執行的基礎上進行管理和監控。

簡化和改進的 Struts 整合

使用 PR4 大大簡化了 Struts 1.x 整合,並與 Spring 1.2.2 引入的 SpringBindingActionForm 對齊。不再需要特殊的 FlowActionMapping,因為所有特定於 webflow 的配置現在都由 Spring 管理。 請參閱 birthdate 範例應用程式以獲取具體範例。

其他

改進的 javadoc、錯誤訊息和日誌記錄

大大改進的建置系統,具有「一步到位」的範例應用程式建置/部署

Erwin 和我必須感謝 Colin Sampaleanu 整理了一個出色的建置系統來管理整體開發和發布過程。 當您下載 PR4 時,您會發現建置和部署範例應用程式,以及 Spring Web Flow 的任何元件(例如項目本身或綁定模組)既簡單又容易,並且具有仔細的自動 jar 檔案管理。 這個基於 Ant 1.6.x 的「通用建置」系統利用 Ivy 進行 jar 依賴管理--

這些只是此版本的一些新功能。 有關變更的完整列表,請參閱 http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Change+Log

與往常一樣,我們非常重視您的意見反應。 預計在 7 月底之前發布 Web Flow 1.0 RC1,其中包含 Portlet MVC 和 JSF 整合。

乾杯,

Keith Donald
Erwin Vervaet

取得 Spring 電子報

隨時掌握 Spring 電子報的最新資訊

訂閱

領先一步

VMware 提供培訓和認證,以加速您的進展。

了解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。

了解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

檢視全部