Spring Web Flow 学习笔记(2)-流程的组件

1.在Spring Web Flow中,流程由三个主要元素定义的:状态、转移和流程数据。

状态是流程中事件发生的地点,类似公路旅行中停下来的地点,转移就类似与连接这些地点的公路

2.状态

  Spring Web Flow 定义了5种不同类型的状态:

状态类型 作用
行为(Action) 是流程逻辑发生的地方
决策(Decision) 将流程分成两个方向,它会基于流程数据的评估结果确定流程的方向
结束(End) 是流程的最后一站,一旦进入End状态,流程就会结束    
子流程(Subflow) 会在当前的正在进行的流程上下文中启动一个新的流程
视图(View) 会暂停流程并邀请 用户参与流程

  (1)视图状态

    视图状态用来为用户展示信息并使用户在流程中发挥作用,实际的视图实现可以是Spring支持的任意类型的视图,但通常是用JSP来实现的。在流程定义的XML文件中,<view-state>用户定义视图状态

<view-state id="welcome" />

  其中id有两个含义,一是在流程内标示这个状态,二是指定了流程到这个状态时要展示的逻辑视图的名称,如果要显示的指定另外一个视图,可以如下:

<view-state id="welcome" view="greeting"/>

  如果流程为用户展示了一个表单,可能需要指明表单所绑定的对象,可以如下:

<view-state id="takePayment" model="flowScope.paymentDetails"/>

 (2)行为状态

  是应用程序自身在执行任务,在在流程定义的XML文件中,行为状态使用<action-state>元素来声明,示例如下:

<action-state id="saveOrder">
        <evaluate expression="pizzaFlowActions.saveOder(order)"/>
        <transition to="thankYou"/>
</action-state>

  <evaluate>元素给出行为状态要做的事情,expression属性指定了进入这个状态是要评估的表达式

 (3)决策状态

   决策状态能够使在流程执行时产生两个分支,决策将评估一个Boolean类型的表达式,然后在两个状态中选择一个。示例如下:

<decision-state id="checkDeliveryArea">
  <if test="pizzaFlowActions.checkDeliveryArea(customer.zipCode)"
      then "addCustomer"
      else "deliveryWarning"/>
</decision-state>

  (4)子流程状态

    在一个正在执行的流程中调用另一个流程,示例如下:

<subflow-state id="order" subflow"pizza/order">
 <input name="order" value="order"/>
  <transition on="orderCreated" to="payment"/>
</subflow-state>

  (5)结束状态

   指定了流程的结束,示例如下:

<end-state id="customerReady"/>

3.转移,全局转移

  转移连接了流程中的状态,流程中除了结束状态外,至少需要有一个转移,这样就能够一旦这个流程执行完成时要去向哪里。

  转移需使用<transition> 元素来进行定义,它会作为各个状态的子元素,示例如下:

<transition to="customerReady"/>

  属性to用来指定流程的下一个状态,只使用to属性,那么这个转移就会是当前状态的默认转移选项。还可以使用on属性来指定触发转移的事件。

<transition on ="phoneEntered" to="lookupCustomer"/>

 多个状态中重复通用的转移,可以把它定义为全局转移,这样流程中所有的状态都会默认拥有这个全局转移,示例如下:

<global-transitions>
    <transition on="cancel" to="endState"/>
</global-transitions>

4.流程数据

(1)定义变量

(2)定义流程数据的作用域

时间: 2024-10-21 15:47:05

Spring Web Flow 学习笔记(2)-流程的组件的相关文章

Spring Web Flow 学习笔记(1)

1.Spring Web Flow 是Spring MVC的扩展,它支持开发基于流程的应用程序,它将流程的定义与实现流程的行为的类和视图分离开来. 2.尽管Spring web Flow是Spring框架的子项目,但它并不是Spring框架的一部分. 3.在Spring中使用Web Flow (1)织入流程执行器 流程执行器驱动流程的执行,当用户进入一个流程时,流程执行器会为用户创建并启动一个流程执行实例,当流程暂停的时候,(如为用户展示视图的时候),流程执行器会在用户执行操作后恢复流程.创建流

Spring web Flow2学习笔记

想抽时间研究一下Spring web Flow2,能够找到的唯一电子书是<深入解析Spring+MVC与Web Flow>,我现在摘录本书的一段内容如下,通过这一段,大家可以想象中文背景的程序员具有多大的先天劣势,还可以看到流畅的翻译对一本书来说有多重要! 不多吐槽了,下面是正文. 首先要区分工作流workflow和webflow,webflow是试图层的概念,用于实现一组页面交互逻辑,类似于.Net的wizard组件:workflow一般是业务层的设计,可能包括主管审核.定时器.施工反馈等业

《Spring实战》学习笔记-第八章:使用Spring Web Flow

第四版的第八章内容与第三版基本一致. 本章内容: 创建会话式web应用程序 定义流程状态和行为 保护web流程 互联网的一个奇特之处就在于它很容易让人迷失.有如此多的内容可以查看和阅读,而超链接是其强大魔力的核心所在. 有时候,web应用程序需要控制web冲浪者的导向,引导他们一步步地访问应用.比如电子商务网站的付款流程,从购物车开始,应用程序会引导你依次经过配送详情.账单信息以及最终的订单确认. Spring Web Flow是一个web框架,它适用于元素规定流程运行的程序.本章中,我们将会探

spring web flow 2.0入门(转:http://luanxiyuan.iteye.com/blog/2282126)

Spring Web Flow 2.0 入门详解 博客分类: spring 目录: 参考文献 购物车用例 什么情况下可以使用 Spring Web Flow? 配置 Spring Web MVC 配置 Spring Web Flow 2.0 的基础 在购物车示例应用中配置 Spring Web Flow 用 Unified EL 实现业务逻辑 用 subflow 实现添加商品到购物车功能 global transition 简介 1.参考文献 参考1:http://www.ibm.com/dev

Spring Web Flow 笔记

在Spring 中配置 Web Flow <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flow="http://www.sprin

Spring web flow——披萨订购流程示例(1)

一.Spring web Flow定义 Spring Web Flow(后面简称swf)是一个Web框架,它适用于元素按规定流程运行的程序.Spring Web Flow是Spring MVC的扩展,它支持开发基于流程的应用程序.它将流程的定义于实现流程行为的类和视图分离开来. 下面我们通过生成披萨订单的新Web应用程序.我们会使用Spring Web Flow来定义订单流程. 1.1 swf环境准备 尽管swf是Spring框架的子项目,但它并不是Spring框架的一部分.因此,在构建基于流程

Spring Web Flow 入门demo(三)嵌套流程与业务结合 附源码

上篇博客我们说Spring web Flow与业务结合的方式主要有三种,下面我们主要介绍一下第三种的应用方式 3,执行到<action-state> 元素 SpringWeb Flow 中的这个 <action-state> 是专为执行业务逻辑而设的 state .如果某个应用的业务逻辑代码既不适合放在transition 中由客户端来触发,也不适合放在 Spring Web Flow 自定义的切入点,那么就可以考虑添加<action-state> 元素专用于该业务逻辑

Spring Web Flow 入门demo(三)嵌套流程与业务结合 附源代码

上篇博客我们说Spring web Flow与业务结合的方式主要有三种,以下我们主要介绍一下第三种的应用方式 3,运行到<action-state> 元素 SpringWeb Flow 中的这个 <action-state> 是专为运行业务逻辑而设的 state . 假设某个应用的业务逻辑代码既不适合放在transition 中由client来触发,也不适合放在 Spring Web Flow 自己定义的切入点,那么就能够考虑加入<action-state> 元素专用于

Spring源码学习笔记(3)

Spring源码学习笔记(三) 前言----     最近花了些时间看了<Spring源码深度解析>这本书,算是入门了Spring的源码吧.打算写下系列文章,回忆一下书的内容,总结代码的运行流程.推荐那些和我一样没接触过SSH框架源码又想学习的,阅读郝佳编著的<Spring源码深度解析>这本书,会是个很好的入门. DispatcherServlet 实现核心功能 和普通的 Servelt 类一样, DispatcherServlet 中的 doGet() 和 doPost() 方法