毕业论文
您现在的位置: 框架 >> 框架优势 >> 正文 >> 正文

springwebflow执行流程及概念

来源:框架 时间:2023/1/20
小儿白癜风怎么治疗 http://m.39.net/pf/a_4784144.html

现实生活中,我们肯定遇见过走流程的事情,比如:发票报销,我们要先填写发票单子,之后财务审核,审核通过后才能给我们报销。再比如,目前流行的外卖配送,比如饿了么,我们登录进去,之后选择自己想吃的,之后确定订单支付,外卖几分钟到家门口了。

流程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-registry

3)处理流程请求

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