您的位置:首页 > 编程语言 > Java开发

spring web flow学习笔记一

2013-04-18 13:56 274 查看
1、Spring web flow 内置五种具体state 类型,这些state有常用控制器的行为,分别:

    ViewState:允许用户参于流程flow

   ActionState:执行业务应用代码 

   DecisionState:流程的路由选择

   SubflowState:分发出子流程

 
 EndState:中止流程

 除EndState外,其它四个state类型均可流转到其它state类型中。类关系图如下:



2、ViewState

当进一个view state后,用户(或者其他外部客户端)就可以参与到这个flow中。这种参与的流程如下:

  如果此view state配置了<render-actions>节点,先执行此元素里中action对应方法,然后此viewstate将
会生成一个作为逻辑应答的org.springframework.webflow.execution.ViewSelection发送给调用者。

  flow execution在这里被“暂停”,控制被交还到调用系统那里。调用系统使用返回的ViewSelection来给用户
选择一个合适的操作界面(或者其他应答)。经过一段时间的“思考”之后,用户发送一个输入事件将flow
从"pasue“点恢复过来。

3、transition:
transition在flow中定义一条路径,它将flow从一个state带到另一个。后台对应的源码为TransitionDefinition。所有的TransitionAbleStates都有一个或者更多的transitions,每个都定义了到在同一个flow中另一个state的路径(或者递归的路径回到同一个state)。当进入一个transition
state的时候,他会执行一系列的behavior。比如,一个叫做"Display Form"的TransitionableStates可以用来显示一个表单并暂停等待用户输入。这个state的执行结果叫做事件,用来驱动state的转移的执行。比如,用户可以点击表单的提交按钮,这个按钮会发送一个满足转移到“处理提交”状态条件的"submit event"xml配置中,在transition元素中可以配置action
state
一个transition可以配置一个或者更多个在transition本身因为ecutionCriteria而执行前需要执行的action。如果一个或者多个Action没有成功完成,转移将不会进行

动态transitions (Dynamic transitions)

  一个transition的目标state resolver可以被配置成计算动态目标状态 。 如:<transition on="back" to="${flowScope.lastStateId}">

全局transitions(Global transitions)

  一个或者更多transition会被在state-level附带的加入到所有的TransitionableState 类型中去。同样,被所有state所共有的transition也可以在flow-level中加入。这种共有的转移就叫做全局转移。

  当一个transitionable state收到一个事件后,他会首先尝试去匹配一个自己的transition,如果没有一个transition能够在 state level被满足,他将会去匹配global transition。如果仍然没有能够满足的transition,一个 NoMatchingTransition Exception将会被抛出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: