现实生活中,我们肯定遇见过走流程的事情,比如:发票报销,我们要先填写发票单子,之后财务审核,审核通过后才能给我们报销。再比如,目前流行的外卖配送,比如饿了么,我们登录进去,之后选择自己想吃的,之后确定订单支付,外卖几分钟到家门口了。
流程tu那么如果公司,有一天,不想人为的通过纸质的形式报销发票了,想通过电脑操作,这样很方便也节省了一天跑腿的业务,在电脑上沟通就ok了,那么你会用什么开发呢。
其实我们有很多办法可以解决,只不过是流程与实现是结合在一起的,没有地方能够完整的描述整个流程。
SpringWebFlow是一个web框架,它适用于元素按规定流程运行的程序。它是SpringMVC的扩展,它支持开发基于流程的应用程序。它将流程的定义与实现流程行为的类和视图分离开来。
一、在Spring中配置WebFlow
SpringWebFlow是基于SpringMVC基础构建的,因此这意味着所有流程的请求都需要首先经过SpringMVC的DispatcherServlet,我们需要在Spring应用上下文中配置一些bean来处理流程请求并执行流程,从命名空间开始
命名空间1)装配流程执行器
流程执行器(flowexecutor)驱动流程的执行,当用户进入一个流程时,流程执行器会为用户创建并启动一个流程执实例。当流程暂停的时候(如为用户展示视图时),流程执行器会在用户执行操作后恢复流程。
在spring中,webflow:flow-executorid=flowExecutor/元素会创建一个流程执行器。
2)配置流程注册表
尽管流程执行器负责创建和执行流程,但它并不负责加载流程定义,这个责任落在了流程注册表(flowregister)身上。
流程注册表(flowregister)的工作是加载流程定义并让流程执行器能够使用它们。spring中使用webflow:flow-registry配置流程注册表
webflow:flow-registry3)处理流程请求
DispatcherServlet一般将请求分发给控制器,但是对于流程而言,我们需要一个FlowController来帮助DispatcherServlet将流程请求发送给Springwebflow。
FlowController二、流程组件
流程是由3个主要元素定义的:状态、转移和流程数据。状态是流程事发的地点,如果你将流程想象成旅行,那状态就是路途中的一个个景点,流程中的状态是业务逻辑执行、做出决策或将页面展现给用户的地方。转移就是连接各个景点的路线,在流程中你通过一个状态转为到另外一个状态,在旅行中,买纪念品是必不可少的,在流程中,它就是收集一些数据。
1)状态
SpringWebFlow定义了5种不同类型的状态。
①、视图状态
视图状态用于为用户展现信息,并使用户在流程中发挥作用,在xml定义如下
view-stateid=viewCartview=viewCart/
②、行为状态
行为状态一般会触发spring所管理bean的一些方法并根据方法调用的执行结果转移到另外一个状态。action-stateid=addToCart/
action-state③、决策状态
决策状态就是流程在某一个点根据流程的当前情况进入不同的分支(比如:如果今天下雨就在家打游戏,如果不下雨就出去打篮球)
decision-stateid=isPassengerInfoRequired/
decision-state④、子流程状态
允许在一个正在执行的流程中调用另外一个流程,类似于在一个方法中调用另外一个方法。
subflow-stateid=enterPassengerInformationflow=passenger/
subflow-state⑤、结束状态
所有的流程都需要结束
end-stateid=returnToIndexview=externalRedirect:servletRelative:/index.jsp/
2)转移
transitionon=returnToIndexto=returnToIndex/转移连接了流程中的状态,在流程中除了结束状态之外,每个状态都需转移。on属性来指定触发转移的事件、to属性指定转移到哪里
3)流程数据
就像快递一样,从一个地方转移到另外一个地方,快递单上写着各种信息来表明快递的状态以及目的地。最简单的形式varevaluate
varname=mycartclass=samples.webflow.Cart/
evaluateexpression=productService.getProducts()result=viewScope.products/
内容有些多,谢谢,你的坚持,读到结尾
转载请注明:http://www.0431gb208.com/sjszjzl/3278.html