Spring Web Flow
1: 装配流程执行器
<flow:flow-executor id="flowExecutor" />
负责创建并执行流程
<webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry">
</webflow:flow-executor>
2:配置流程注册表
加载流程定义,并让流程执行器可以使用它们
<flow:flow-registry id="flowRegistry" base-path="/WEB-INF/flows">
<flow:flow-location-pattern value="*-flow.xml"
</flow>
<webflow:flow-registry id="flowRegistry" flow-builder-services="builder">
<webflow:flow-location path="/WEB-INF/login-webflow.xml" id="login"/>
<webflow:flow-location path="/WEB-INF/remoteLogin-webflow.xml" id="remoteLogin" />
</webflow:flow-registry>
3;流程组件
三个主要元素:
状态:业务逻辑执行、作出决策、将页面展现给用户
转移:
流程数据:
(1)状态:5个
行为Action:逻辑发生
决策:
结束:
子流程:正在运行的流程启动一个新流程
视图:暂停流程并邀请用户参与流程
视图:
<view-state id="welcome">默认逻辑视图名为id名称welcome
<view-state id="welcome" view="welcome">显示指定逻辑视图名
<view-state id="welcome" view="welcome" model="flowScope.test">
model指明表单绑定的对象
行为状态
<action-state id="save">
<evaluate expression="action.save(id)"/> <evaluate>行为状态要做的事情
<transition on="execute" to="thankyou"/> <transition>指定下一流程走向哪里,各种状态的子元素 on="A" to="B" 触发了A时间,流向B
<transition on-exception="A" to="B"/> 抛出异常A,流向B
<transition to="B"/> 流向B
</action-state>
决策
<decision-state id="check">
<if test="action.check(id)" then="success" else="false"/>
<decision-state/>
子流程
<subflow-state id="order" subflow="order">
<input name="order" value="value"/> <imput>输入
<transition to="thankyou"/>
<subflow-state/>
结束
<end-state id="end"/>
(2)全局转移
<global-transitions> 将这个定一个为全局转移,所有流程中状态都有这个转移
<transition on="A" to="B"/>
<global-transitions/>
(3)流程数据-声明变量
<var name="person" class="..Person"> 新建实例
<set name="person" value="new ..Person()">
<evaluate result="person" expression=getPerson()"> 表达式结果复制到变量