領先一步
VMware 提供培訓和認證,助您加速前進。
瞭解更多尊敬的 Spring 社群:
我們很高興地宣佈 Spring Web Flow (SWF) 1.0 RC2(釋出候選版 2)已釋出。 Spring Web Flow (SWF) 1.0 RC2(釋出候選版 2)已釋出。 下載 | 文件 | 更新日誌
此版本包含錯誤修復和輕微改進。 1.0 RC2 的新特性包括...
新特性
支援以可配置的方式傳遞從呼叫環境輸入給新啟動的流程執行(flow executions)。 預設情況下,所有請求引數都作為輸入公開。 然後,流程可以使用其輸入對映器(input mapper)將此輸入對映到其自己的本地作用域(local scope)中。 該對映器定義了流程的輸入契約,無論流程是作為頂級流程還是作為子流程啟動,該契約都是一致的。
請參考以下請求 URL 作為示例:
https://:8080/flights/search-flow?flightNumber=12345
預設情況下,當訪問此 URL 時,後端的 FlowExecutor 會將 "flightNumber" 請求引數放入一個“輸入對映”(input map)中。 然後,該輸入對映會傳遞給 "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 環境中進行流程執行和外部重定向。 結合基於延續的倉庫(continuation-based repository),這允許在 Portlet 環境中使用瀏覽器導航按鈕(後退、重新整理)。 此外,在 Portlet 環境中,我們現在公開了一個 "globalSessionMap" 屬性,用於訪問 Portlet Session APPLICATION_SCOPE 中的屬性。
一個新的倉庫工廠,名為 "SingleKeyFlowExecutionRepositoryFactory"。 此實現為每個持久化的流程執行生成一個唯一的識別符號。 它有助於實現 1.0 EA 的“會話重定向”(conversation redirect)語義——即每次 POST 後,透過 REDIRECT-GET 請求一個嵌入了常量流程執行鍵的穩定的“流程執行 URL”。 請參閱 NumberGuess 示例以獲取說明。
引入了一個獨立的“會話”(conversation)子系統,提供的流程執行倉庫實現會將邏輯會話的劃分委託給它,以管理流程執行狀態。 該會話子系統與 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"。 經驗表明這些屬性很少使用,並且是新使用者的困惑來源。 作為更好的替代方案,要在進入檢視狀態(view state)之前執行資料繫結操作,只需從您的流程定義中呼叫 "bind" 操作方法即可。 要計算是否應在 bindAndValidate 嘗試中進行驗證,請覆蓋單個 "validationEnabled(RequestContext)" 鉤子。
FormAction 的 "exposeFormObject" 操作方法已被移除。 只需使用首選的 "setupForm" 即可。
FlowExecutionRepository 和 FlowExecutor SPI 介面已簡化。 現在,更多的邏輯封裝在 FlowExecutionRepository 後面,包括生成的 FlowExecutionKeys 的結構和格式。 此外,FlowExecutionRepository 現在只嚴格負責管理持久化的流程執行(persistent flow executions),別無其他。 “會話”(conversation)的附加概念不再為 SWF 核心所知。 這意味著幾點:
FlowExecutor 介面,作為 SWF 的入口點,對呼叫者來說也得到了簡化。 它現在封裝了對複雜內部型別的瞭解,例如
EventIds 和 FlowExecutionKeys,因此總體上更容易使用。
同樣地,移除了對顯式 "conversationRedirect" 的支援。 這意味著移除了 "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. Phonebook - 最初的示例,展示了大部分功能(包括子流程)
2. Sellitem - 展示了一個具有條件轉換、流程執行重定向、會話作用域和延續的嚮導(wizard)
3. Flowlauncher - 展示了啟動和恢復流程的所有可能方式
4. Itemlist - 展示了 REST 風格的 URL 和內聯流程(inline flows)
5. Shippingrate - 展示了 Spring Web Flow 與 Ajax 技術結合使用
(感謝 Steven Devijver)
6. NumberGuess - 展示了有狀態 bean 和“單鍵”流程
執行重定向。
7. Birthdate - 展示了與 Struts 的整合
8. Fileupload - 展示了多部分檔案上傳
9. Phonebook-Portlet - 在 Portlet 環境中的 phonebook 示例
(注意流程定義並未改變)
10. Sellitem-JSF - 在 JSF 環境中的 sellitem 示例
要一步構建示例應用程式進行部署,只需解壓釋出歸檔檔案,進入 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 團隊