概述:
觉得学一个东西首先大概跑通一个demo,有很多不懂,没有关系,接下来学习概念,你就会明白为什么会这么做?这就是带个问题学习、上一节模仿别人写的demo,大概了解流程
增加xml中web FLow 命名空间
xmlns:flow="http://www.springframework.org/schema/webflow-config"
http://www.springframework.org/schema/webflow-config
http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.3.xsd
8.1.1 装配流程执行器(CEO)
8.1.2 配置流程注册表(部门经理)flow registry
总结:
1、flow-location-pattern 表示利用正则表达式匹配,而flow-location是具体的地址
转存失败重新上传取消
请求过来-->DispatcherServlet ->FlowHandlerMapping->FlowHandlerAdapter
上面FlowHandlerMapping 类似 ResultMapping,路径映射
FlowHandlerAdapter 类似具体控制器
状态、转移和流程数据
8.2.1 状态
Action(行为) : 行为状态是流程逻辑发生的地方
Decision(决策): 决策状态将流程分成两个方向,类似if
End(结束) 结束状态是流程的最后一站,一旦进入End状态,流程就会终止
Subflow(子流程) 子流程状态会在当前正在运行的流程上下文启动一个新的流程
视图(View) 视图状态会暂停流程并邀请用户参与流程,其实就是显示jsp网页
视图状态:
行为状态:
决策状态
then="addCustomer"
else="deliveryWarning" />
子流程状态:
结束状态:
"externalRedirect" : 流程之外的视图
“flowRedirect:” 重定向另个流程中
8.2.2 转移(各个状态之间的交互)
例如:
异常转移:
on-exception="com.springinaction.pizza.service.CustomerNotFoundException" to="registrationForm" /> 全局转移:(整个流程终止)
所有状态都会默认拥有这个cancel转移 声明变量
视图作用域 expression="T(com.springinaction.pizza.domain.Topping).asList()" value="new com.springinaction.pizza.domain.pizza()"/> 定义流程数据的作用域; Flow: 创建它流程可见 Request: 当一个请求进入流程时创建 Flash:与Flow类似,当流程开始创建,在流程结束时销毁 View: 当进入视图状态时创建,当这个状态退出时销毁,只在视图状态内是可见的 当使用元素声明变量时,变量始终是流程作用域的,也就是在定义变量的流程内有效。当使用 总结:流程的三要素就是:状态、转移、流程数据8.2.3 流程数据
Conversation: 最高层级作用域