博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring 实战-第八章-使用Spring Web Flow
阅读量:5262 次
发布时间:2019-06-14

本文共 1868 字,大约阅读时间需要 6 分钟。

Spring Web Flow 是 Spring 的一个子项目,其最主要的目的是解决跨越多个请求的、用户与服务器之间的、有状态交互问题,比较适合任何比较复杂的、有状态的、需要在多个页面之间跳转的业务过程。

配置SWF需要

  • 装配流程执行器(flow executor)

执行器驱动流程的执行,当用户进入流程时,流程执行器会为用户创建并启动一个流程执行实例,当流程暂停的时候(如为用户展示视图时),流程执行器会在用户执行操作后恢复流程。

 

 

  • 配置流程注册表

流程注册表的工作室加载流程定义并让流程执行器能够使用它们。

 

 

  • 处理流程请求

DispatcherServlet会将请求分发给控制器,SWF中需要一个FlowHandlerMapping来帮助DispatcherServlet将流程请求发送给SWF。

 

FlowHandlerMapping装配了流程注册表的引用,这样就知道如何将请求的URL匹配到流程上。比如请求"/pizza",就会找WEB-INF/pizza目录下的流程。

 

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

  • 状态(State)是流程中时间发生的地点。
状态类型   功能 标签
行为(Action) 行为状态是流程逻辑发生的地方 <action-state>
决策(Decision) 决策状态将流程分成两个方向,它会基于流程数据的评估结果确定流程方向 <decision-state>
结束(End)   结束状态是流程的最后一站,一旦进入End状态,流程就会终止 <end-state>
子流程(Subflow) 子流程状态会在当前正在运行的流程上线文中启动一个新的流程 <subflow-state>
视图(View) 视图状态会暂停流程并邀请用户参与流程 <view-state>

 

 

 

 

 

Spring Web Flow 定义了 5 个切入点,通过 flow 定义文件的配置,可在这 5 个切入点插入相关业务逻辑代码。

 

 

 

 

 

 

  • 转移(transition)是流程的连接不同状态的动作。

 

属性to用于指定流程的下一个状态,属性on指定触发转移的事件。

转移连接了流程中的状态,除了结束状态之外的每个状态,至少都需要一个转移。状态可以有多个转移,分别对应于当前状态结束时可以执行的不同路径。

此外,还可以定义全局转移,使的流程中的所有状态都会默认用于某个转移。

 

 

  • 流程数据

流程数据保存在变量中,而变量可以在流程的各个地方进行引用。可以使用

  • <var>:最简单的形式,作用域为整个流程
  • <evaluate>:计算了一个表达式并将结果放到了变量中

 

  • <set>:与<evaluate>类似,都是将变量设置为表达式。

Spring Web Flow 定义了五种不同的作用域:

范围 生命作用域和可见性
Conversion

最高层级的流程开始时创建,在最高层级的力促恒结束时销毁。被最高层级的流程和其所有的子流程所共享。

Flow 当流程开始时创建,在流程结束时销毁。只有在创建它的流程中是可见的。
Request 当一个请求进入流程时创建,在流程返回时销毁
Flash 当流程开始时创建,在流程结束时销毁。在视图状态渲染后,它也会被清除。
View 当进入视图状态时创建,当这个状态退出时销毁。只在视图状态内是可见的。

 

 

 

 

 

1

 

sourceCode:

 

转载于:https://www.cnblogs.com/lvjianwei/p/7943604.html

你可能感兴趣的文章
趣谈Java变量的可见性问题
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
ssm框架之将数据库的数据导入导出为excel文件
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
验证组件FluentValidation的使用示例
查看>>
0320-学习进度条
查看>>
解决windows系统的oracle数据库不能启动ora-00119和ora-00130的问题
查看>>
ip相关问题解答
查看>>
MetaWeblog API Test
查看>>
反弹SHELL
查看>>
关闭Chrome浏览器的自动更新和升级提示
查看>>
移动、尺寸改变
查看>>
poj2255Tree Recovery【二叉树重构】
查看>>
tcpcopy 流量复制工具
查看>>
vue和react的区别
查看>>
第十一次作业
查看>>
负载均衡策略
查看>>
微信智能开放平台
查看>>
ArcGIS Engine 中的绘制与编辑
查看>>
Oracle--通配符、Escape转义字符、模糊查询语句
查看>>