Spring Web Flow 是一个web框架,适用于元素按规定流程运行的程序。是spring mvc的扩展,支持开发基于流程的应用程序。
一: Spring中使用web flow
1: 流程执行器 : 驱动流程的执行,当用户进入一个流程时,流程执行器会为用户创建并启动一个流程执行实例。当流程暂停的时候,流程执行器会在用户执行操作后恢复流程。
<flow : flow-executor id = "flowExecutor" flow-registry="flowRegistry" /> 元素会创建一个流程执行器
2: 配置流程注册表: 加载流程定义并让流程执行器能够使用他们
<flow : flow-registry id="flowRegistry" base-path = "/WEB-INF/flows">
<flow : flow-location-pattern value = "*-flow.xml"/>
</fow: flow-registry>
3: 处理流程请求 :
(1) FlowHandlerMapping来帮助DispatcherSerlet将流程请求发送给Spring Web Flow
<bean class = "org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
<property name = "flowRegistry" ref = "flowRegistry">
</bean>
FlowHandlerMapping装配了流程注册表,通过流程id,它就能知道请求的URL匹配到流程上。
(2) FlowHandlerAdapter : 等同于Spring mvc的控制器。它会响应发送的流程请求并对其进行处理
<bean class = org.springframework.webflow.mvc.servlet.FlowHandlerAdapter>
<property name = "flowExecutor" ref = "flowExecutor" />
</bean>
二、流程的组件 :
状态 , 通过选择spring web flow 的状态几乎可以把任意的安排功能构造成会话式的web应用程序。
1: 视图状态 , 用来为用户展现信息并使用用户在流程中发挥作用。
<view-state id="welcome" view = "greeting"> 用于定义视图状态。greeting是视图的名称
如果流程为用户展现了表单,你可能希望指名表单所绑定的对象。
<view-state id = "takePayment" model = " flowScope.paymentDetail"> 流程范围内对象。
2:行为状态,一般会触发Spring所管理Bean的一些方法并根据方法调用的执行结果转移到另一个状态
<action-state id = saveOrder>
<eval expression = "pizzaFlowActions.saveOrder(order)" />
<transition to = "thankYou" />
</action-state>
3: 决策状态 : 能够使得在流程执行是产生两个分支。
<decision-state id = "checkDeliveryArea">
<if test = "pizzaFlowActions.checkDeliveryArea(customer.zipCode)"
then = "addCustomer" else ="deliveryWarning ">
</decision-state>
4 : 子流程状态 : 允许在一个正在执行的流程中调用另一个流程
<subflow id = "order" subflow = "pizza/order">
<input name = "order" value = "order"/>
<transition on = "orderCreated" to = "payment">
</subflow-state>
<input> 元素作为子流程的输入被用于传递订单对象。 如果子流程结束的<end-state> 状态id为ordercreated,那么本流程将会转移到名为payment的状态
5: 结束状态 : 流程达到<end-state> 时 可能会有下面几种可能
1 :如果结束的流程时一个子流程,那么调用它的流程将会从<subflow-state> 处继续执行。
2 : 如果<end-state> 设置了view属性,指定的视图将会被渲染。
3: 不是上面两种,这个流程只是结束。
二、转移
使用<transition>元素来进行定义,它会作为各种状态元素的子元素
<transtion to="customerReady"> to 表示用于指定流程的下一个状态。
<transtion on="phoneEntered" to = "lookupCustomer"> on 表示触发的事件
全局转移 : 在创建完流程之后,你可能会发现有一些状态使用了一些通用的转移。使用<global-transitions>
三、流程数据 : 当流程从一个状态进行到另一个状态时,它会带走一些数据。
声明变量 流程数据保存在变量中, 而变量可以在流程的任意地方进行引用。
1、<var name = "customer" class = "com.springinaction.pizza.domain.Customer" / > 这个变量可以在流程的任务状态进行访问。
2、<evaluate result =“viewScope.toppingsList” expression = "T(com.springinaction.pizza.domain.Topping).asList()"> 创建变量,作为行为状态的一部分或者视图状态的入口 表示是视图作用域
3、<set name = "flowScope.pizza" value = "new com.springinaction.pizza.domain.Pizza()">
相关推荐
Spring WebFlow 是一个用于构建高度交互式Web应用的框架,它扩展了Spring MVC的功能,专注于管理应用程序中的流程和状态。本官方中文版权威指南PDF详细介绍了如何使用Spring WebFlow来构建动态、流程导向的Web应用。...
Spring WebFlow 是一个用于构建高度交互式和流程导向型Web应用程序的框架,它扩展了Spring MVC的功能,专注于管理用户交互的流程。这个例子中的"CartApp3"很可能是一个基于Spring WebFlow实现的购物车应用程序。 在...
<dependency org="org.springframework.webflow" name="spring-webflow" rev="2.4.0"/> ``` ##### 1.7 夜间构建和里程碑发布 为了使用Spring Web Flow的夜间构建或里程碑版本,可以通过在Maven配置文件中添加如下...
根据提供的标题、描述和标签,本篇文章将围绕“Spring Web Flow”这一主题展开,深入探讨其核心概念、架构原理及应用场景等内容。 ### Spring Web Flow概述 Spring Web Flow是Spring Framework的一部分,它为Web...
书中重点讲解Web流、流定义语言、流执行、流的测试以及自定义扩展等精髓内容,并结合使用Spring WebFlow 1开发的实例来向读者说明如何将其实际应用到项目中。尤其弥足珍贵的是,作者从框架设计者角度深入阐述了...
**Spring Web Flow 深入解析** Spring Web Flow 是一个基于Spring框架的开源库,它专注于构建复杂的Web应用程序中的导航逻辑和状态管理。这个库旨在解决传统MVC框架在处理多步骤交互流程时的局限性,例如用户填写...
《Spring Web Flow权威指南》是针对Spring Web Flow框架的一本深度解析书籍,旨在帮助开发者全面理解和熟练运用这一强大的web应用程序开发工具。Spring Web Flow是一种用于构建动态web交互体验的轻量级框架,它允许...
Spring Web Flow 。 官网 Spring Web Flow API。 Spring Web Flow 开发文档。
业务的逻辑涉及到数据的获取、传递、保存,相关的业务功能函数的调用等内容,这些功能的实现都可用 Java 代码来完成,但定义 Spring Web Flow 的语法与 Java 是无关的,这就要求 Spring Web Flow 提供与 Java 代码的...
在这个“spring webflow 例子”中,我们将深入探讨Spring Web Flow如何帮助我们构建一个网上书店应用。 首先,Spring Web Flow的核心概念包括流程定义、状态和转换。流程定义是整个流程的蓝图,它由一系列状态...
DOCTYPE webflow PUBLIC "-//SPRING//DTD WEBFLOW//EN" "http://www.springframework.org/dtd/spring-webflow.dtd"> <webflow id="bookflight" start-state="obtainTripInfo"> ``` 在这个示例中,`bookflight`...
**Spring Web Flow 2 简化页面流的开发** Spring Web Flow (SWF) 是一个用于构建富用户界面的框架,它专注于管理应用程序中的复杂导航逻辑,特别是那些涉及多个步骤和状态的交互流程。Spring Web Flow 2 是该框架的...
《Spring Web Flow 2.30官方文档精要解析》 Spring Web Flow是Spring Framework的一个扩展模块,专门设计用于处理复杂的、多步骤的web应用程序流程。版本2.30是其一个重要的迭代,包含了多项更新与优化,为开发者...
spring webflow 1.0 速查参考手册,
Spring Web Flow 2.0 入门 本教程分析了 Spring Web Flow 2.0 的技术要点,并且通过创建一个示例应用程序,展示了 Spring Web Flow 2.0 的基本知识。 开始之前 关于本教程 本教程通过一个简化的购物车应用,介绍了...
Spring Web Flow 的目标是成为管理Web应用页面流程的最佳方案。当你的应用需要复杂的导航控制,例如向导,在一个比较大的事务过程中去指导用户经过一连串的步骤的时候,SWF将会是一个功能强大的控制器。
### Spring Webflow 入门基础 #### 购物车用例 首先,我们通过一个购物车用例来深入理解Spring Web Flow的应用场景及其优势。购物车作为一个典型的电子商务应用场景,涉及用户选择商品、查看购物车内容、确认订单...
**Spring WebFlow 演示项目** Spring WebFlow 是一个用于构建强大、可维护的Web应用程序的框架,尤其适用于管理用户交互流程。它允许开发者定义和执行用户界面导航流程,这些流程可以跨越多个HTTP请求,提供了对...
Spring Web Flow 是一个用于构建高度交互式Web应用程序的框架,它是Spring Framework的一个组成部分,专注于管理复杂页面流程。它的主要目标是解决Web应用中跨越多个HTTP请求的有状态用户交互问题。Spring Web Flow ...
SpringWeb Flow 中的这个 <action-state> 是专为执行业务逻辑而设的 state 。如果某个应用的业务逻辑代码既不适合放在transition 中由客户端来触发,也不适合放在 Spring Web Flow 自定义的切入点,那么就可以考虑...