码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-08-16 17:59:34      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

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)定义流程数据的作用域

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

标签:

原文地址:http://www.cnblogs.com/zcs201093189/p/4734565.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!