領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多
親愛的Spring社群,
我們很高興地宣佈 Spring Web Flow (SWF) 1.0 RC2 (釋出候選版 2) 已釋出。 下載 | 文件 | 更新日誌
此版本包含錯誤修復和次要改進。 1.0 RC2 的新功能和值得注意之處包括...
新特性和值得注意的改進
支援以可配置的方式將新啟動的流程執行輸入從其呼叫環境傳遞。 預設情況下,所有請求引數都作為輸入暴露。 流程可以選擇使用其輸入對映器將此輸入對映到其自身的本地作用域。 此對映器定義了流程的輸入契約,無論流程是作為頂層流程還是子流程啟動,該契約都是一致的。
考慮以下請求 URL 作為示例:
https://:8080/flights/search-flow?flightNumber=12345
預設情況下,當訪問此 URL 時,後臺的 FlowExecutor 會將 "flightNumber" 請求引數放入一個 "輸入對映" 中。 然後將該輸入對映傳遞給 "search-flow" 的新執行。
在 search-flow 定義中
<flow start-state="executeSearch">上述 <input-mapper> 定義了流程的輸入契約,宣告此流程支援 "flightNumber" 輸入屬性。 當啟動時提供了 flightNumber,它將被對映到 "flowScope" 中,名稱為 "flightNumber"。 對映器還能夠在對映操作期間執行型別轉換。
<input-mapper>
<mapping source="flightNumber" target="flowScope.flightNumber"/>
</input-mapper>
...
</flow>
要自定義流程執行輸入對映的填充,例如,從請求路徑或某些其他外部源拉取屬性,請配置 "FlowExecutorImpl.inputMapper" 屬性。
支援在 JSR168 Portlet 環境中進行流程執行和外部重定向。 結合基於延續的儲存庫,這允許在 Portlet 環境中使用瀏覽器導航按鈕(後退、重新整理)。 此外,在 Portlet 環境中,我們現在暴露了一個 "globalSessionMap" 屬性,用於訪問 Portlet Session APPLICATION_SCOPE 中的屬性。
一個新的儲存庫工廠名為 "SingleKeyFlowExecutionRepositoryFactory"。 該實現為每個持久化流執行生成一個唯一的識別符號。 它對於實現 1.0 EA "會話重定向" 語義很有用——即每次 POST 後,REDIRECT-GET 都會訪問一個穩定的 "流執行 URL",該 URL 中嵌入了常量流執行鍵。 請參閱 NumberGuess 示例以進行說明。
引入了一個獨立的“會話”子系統,所提供的流執行倉庫實現會委託該子系統來劃定管理流執行狀態的邏輯會話。 此會話子系統完全獨立於 Spring Web Flow 的其餘部分,可在 SWF 之外使用,並可能隨著時間的推移發展成為獨立的模組。 核心服務介面包括:
public interface ConversationService {當啟動一個新的流程執行並需要在一個請求之外持久化時,儲存庫會呼叫 "beginConversation" 來啟動一個新的邏輯
public Conversation beginConversation(ConversationParameters parameters);
public Conversation getConversation(ConversationId id);
public ConversationId parseConversationId(String encodedId);
}
public interface Conversation {
public ConversationId getId();
public void lock();
public void end();
public Object getAttribute(String name);
public void setAttribute(String name, Object value);
public void removeAttribute(String name);
public void unlock();
}
未來,我們期望在這個系統中提供強大的功能,包括透過 JMX 進行會話監控和管理,以及會話歷史和統計資料。 我們還期望證明它適用於 Spring Web Flow 之外的其他環境。 特別感謝 Juergen Hoeller 和 Ben Hale 在此可移植會話服務抽象設計中的幫助。
潛在的使用者影響變更
在通往 1.0 最終版本的道路上,1.0 RC2 存在一些潛在的使用者影響變更。 以下部分將對此進行說明。
在 spring-webflow-dtd 中,我們為了與其他屬性和元素名稱保持一致,將 '<action/>' 元素屬性 'resultName' 和 'resultScope' 分別重新命名為 'result-name' 和 'result-scope'。
為了簡化,移除了 FormAction 屬性 "bindOnSetupForm" 和 "validateOnBinding"。 經驗表明,這些屬性很少使用 並且一直是新使用者的困惑來源。 作為更好的替代方案,要在進入檢視狀態之前執行資料繫結操作,只需從您的流程定義中呼叫 "bind" 動作方法即可。 要計算是否應為 bindAndValidate 嘗試進行驗證,請重寫單個 "validationEnabled(RequestContext)" 鉤子。
移除了 FormAction 的 "exposeFormObject" 動作方法。 簡單地使用 "setupForm" 即可,這是首選方法。
FlowExecutionRepository 和 FlowExecutor SPI 介面已簡化。 更多的邏輯現在封裝在 FlowExecutionRepository 之後,包括生成的 FlowExecutionKeys 的結構和格式。 此外,FlowExecutionRepository 現在嚴格負責管理持久化的流程執行,別無他事。 “會話”這一附加概念不再為 SWF 核心所知。 這意味著幾點:
FlowExecutor 介面是 SWF 的入口點,它也為呼叫者簡化了。 它現在封裝了複雜內部型別(如 EventIds 和 FlowExecutionKeys)的知識,因此總體上更易於使用。
FlowExecutor 介面,作為 SWF 的入口點,也為呼叫者進行了簡化。 它現在封裝了複雜內部型別(例如 EventIds 和 FlowExecutionKeys)的知識,因此總體上更易於使用。
同樣,對顯式“會話重定向”的支援已被移除。 這表示移除了 "conversationRedirect:"
“view”字首和“CONVERSATION”RedirectType。 要在 1.0 RC2 中實現相同的邏輯重定向語義,只需將 FlowExecutor 配置為 redirectOnPause 型別 FLOW_EXECUTION 和 repositoryFactory 為
SingleKeyFlowExecutionRepositoryFactory。
--
Spring Web Flow 1.0 RC2 進一步完善了參考手冊,提供了 50 頁關於 SWF 使用的資料。 該手冊以 HTML 和 PDF 格式線上提供。
開始使用 Spring Web Flow 的最佳方法之一是檢視和演練示例應用程式。 我們建議從一開始就檢視所有示例,並根據需要補充參考手冊材料。1.0 RC2 版本附帶了十個示例應用程式,每個都展示了不同的產品功能集。 這些示例是:
1. 電話簿 - 展示大多數功能(包括子流程)的原始示例
2. 銷售商品 - 展示帶條件轉換、流程執行重定向、會話作用域和延續的嚮導
3. 流程啟動器 - 展示啟動和恢復流程的所有可能方式
4. 商品列表 - 展示 REST 風格 URL 和內聯流程
5. 運費 - 演示 Spring Web Flow 與 Ajax 技術結合使用
(感謝 Steven Devijver)
6. 猜數字 - 演示有狀態 Bean 和“單鍵”流程
執行重定向。
7. 生日 - 展示 Struts 整合
8. 檔案上傳 - 展示多部分檔案上傳
9. 電話簿-Portlet - Portlet 環境中的電話簿示例
(請注意流程定義沒有變化)
10. 銷售商品-JSF - JSF 環境中的銷售商品示例
要一步構建用於部署的示例應用程式,只需解壓釋出檔案,訪問 projects/spring-webflow/build-spring-webflow 目錄,然後執行 "ant dist" 目標即可。 請參閱 release readme.txt 和
projects/spring-webflow/spring-webflow-samples/readme.txt 分別獲取有關釋出存檔內容和示例的更多資訊。
所有示例專案都是 Spring IDE 專案,可直接匯入 Eclipse。
感謝所有支援本次釋出的人。 目前,我們預計 SWF 的下一個版本將是 1.0 最終版,目標釋出時間在六月底
。 如果有需要,仍有可能釋出另一個 1.0 版本候選。 請務必關注 SWF 主頁和
論壇以獲取更新。
祝您使用愉快!
Spring Web Flow 團隊