搶先一步
VMware 提供培訓和認證,助您快速進步。
瞭解更多親愛的 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 型別的例項都可以配置一個進入動作,該動作將在進入狀態時執行。 這有助於實現通用的狀態設定邏輯。例如,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 型別的例項都可以配置一個退出動作,該動作將在退出狀態時執行。這有助於實現通用的狀態清理邏輯。 可以再次指定多個動作,它們將自動封裝在 CompositeAction 中。
<action-state id="executeSearch">
<action bean="searchAction"/>
<transition on="success" to="displayResults"/>
<exit>
<action bean="auditAction" method="logResults"/>
</exit>
</action-state>
流程執行監聽器條件
在 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 配置將監聽器 1 和 2 附加到所有流程 (*) 的執行上,而監聽器 3 僅附加到 "sampleFlowA"。
大大增強的表示式語言支援
此版本的一大亮點是新的 Spring 資料繫結模組的持續進展。 spring-binding 中包含一個表示式解析和評估抽象,與健壯的型別轉換工具無縫整合。 這兩者結合起來,允許任意字串(代表一個或多個表示式,例如“Announcement: ${org} ${product} ${release} is out!”)被消費並轉換為可評估的表示式,利用任何表示式語言,預設使用 OGNL。 Spring Web Flow 在多個地方利用了這一機制,包括重定向表示式、轉換表示式和屬性對映表示式。
redirect:/${sourceEvent.parameters.url}?attribute1=${flowScope.foo}&attribute
2=${requestScope.bar}"
<transition on="${result == 'success' && ${flowScope.selectedItinerary.price} > 500.0" to="requireCreditCheck"/>
<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 型別,並將 long 型別結果設定到 someBean.id。
基於會話的事務同步器策略
PR4 新增了一個 TransactionSynchronizer,它在 HTTP 會話作用域儲存中管理事務令牌。 它非常適合與利用延續且需要防止重複應用程式事務發生的流程一起使用。
新的便利動作實現
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和 往常一樣,我們非常珍視您的反饋意見。 預計 Web Flow 1.0 RC1 將於 7 月底釋出,屆時將整合 Portlet MVC 和 JSF。
祝好,Keith Donald
Erwin Vervaet