簡介
Spring Web Flow單元是一個MVC的擴展,它允許你使用一個高階域定義語言來定義控制器。這個語言用來建模用戶互動,需要多次請求到伺服器來完成,並可能涉及不同的內容。
基本元素
Flow 可看作是客戶端與伺服器的一次對話( conversation )。 Flow 的完成要由分多個步驟來實現,在 Spring Web Flow 的語義中,步驟指的就是 state 。 Spring Web Flow 提供了五種 state ,分別是 Action State 、 View State 、 Subflow State 、 Decision State 、 End State ,這些 state 可用於定義 flow 執行過程中的各個步驟。除了 End State 外,其他 state 都可以轉換到別的 state ,一般通過在 state 中定義 transition 來實現到其他 state 的轉換,轉換的發生一般由事件( event )來觸發。
特點
Spring Web Flow是著名的Spring框架的子項目。它解決了困擾Web應用程式開發人員的3個主要問題.即用戶界面導航的控制、狀態管理和模組化,極大地提高了生產效率,尤其適合需要複雜用戶
互動界面的Web應用程式。此外,它還借鑑了UML
狀態圖思想的流定義方式,使得Web流的開發更加自然。
更確切地講, Spring Web Flow 語義關注的是業務的流程,並未與 Sun 公司的 Web 規範緊密結合,這種描述是更高層次的抽象,差不多是在建模的角度來描述業務流程。
不過, Spring Web Flow 也並非只有抽象,現在還沒有哪一種工具或語言可以將一個模型直接轉換成相應的應用程式。 Spring Web Flow 更像是抽象建模和技術細節的混血兒,相比於湮沒在繁多的控制器和視圖中的 Web MVC 套用來講, Spring Web Flow 提供了如清單 1 所描述的更高層次的抽象,但同時它也整合了像 Unified EL 這樣的工具來控制技術上的細節。
購物車示例
查看購物車--(生成訂單)-->顯示訂單--(確認)-->顯示確認信息
清單1用 Spring Web Flow 語義表達購物車流程
<flow>
<view-state id="viewCart">
<transition on="submit" to="viewOrder"/>
</view-state>
<view-state id="viewOrder">
<transition on="confirm" to="viewConfirmed"/>
</view-state>
<view-state id="viewConfirmed">
<transition on="returnToIndex" to="returnToIndex"/>
</view-state>
<end-state id="returnToIndex"/>
</flow>
版本發布
2010年07月20日,Spring Web Flow 2.1.1.RELEASE 發布,該版本是 2.1 的一個維護版本,主要改進內容有:
提取方法從FlowApplication JSF 2到Jsf2FlowApplication(swf - 1261)。
*修復處理的級聯屬性在AjaxTilesView(swf - 1053)。
*文檔DataModel實現(swf - 1358)
*刪除Dojo檔案從svn和替換為腳本放在一起定製Dojo構建(swf - 1362)。
*刪除壓縮彈簧。js和彈簧dojo。js檔案從svn和壓縮在構建(swf - 1363)。
*小JavaScript修復(swf - 1268,swf - 1358)。
2010年08月05日,Spring Web Flow 2.2.0.M1 發布。