前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Spring实战》摘录 - 15

《Spring实战》摘录 - 15

作者头像
用户1335799
发布2019-05-08 17:42:07
6150
发布2019-05-08 17:42:07
举报

141

问题: #8.1.1-2|在Spring中,<flow:flow-executor>元素会创建一个流程执行器。

回答:

代码语言:javascript
复制
<flow:flow-executor id="flowExecutor" /><flow:flow-executor id="flowExecutor" />

尽管流程执行器负责创建和执行流程,但它并不负责加载流程定义。这个责任落在了流程注册表(flow registry)身上。

142

问题: #8.1.2-1 | 流程注册表(flow registry)的工作是加载流程定义并让流程执行器能够使用它们。我们可以在Spring中使用<flow:flow-registry>配置流程注册表,如下所示:

回答:

代码语言:javascript
复制
<flow:flow-registry id="flowRegistry" base-path="/WEB-INF/flows">   <flow:flow-location-pattern value="*-flow.xml" /></flow:flow-registry><flow:flow-registry id="flowRegistry" base-path="/WEB-INF/flows">   <flow:flow-location-pattern value="*-flow.xml" /></flow:flow-registry>

在这里的声明中,流程注册表会在“/WEB-INF/flows”目录下查找流程定义,这是通过base-path属性指明的。依据<flow:flow-location-pattern>元素的值,任何文件名以“-flow.xml”结尾的XML文件都将视为流程定义。

143

问题: #8.1.2-3 | 在使用流程定位模式的时候,流程定义文件相对于基本路径的路径将被用作流程的ID。

回答:

144

问题: #8.1.2-4 | 作为另一种方式,我们可以去除base-path属性,而显式声明流程定义文件的位置。

回答:

代码语言:javascript
复制
<flow:flow-registry id="flowRegistry">   <flow:flow-location path="/WEB-INF/flows/springpizza.xml" /></flow:flow-registry><flow:flow-registry id="flowRegistry">   <flow:flow-location path="/WEB-INF/flows/springpizza.xml" /></flow:flow-registry>

145

问题: #8.1.2-5 | 如果你希望更显式地指定流程ID,那你可以通过<flow:flow-location>元素的id属性来进行设置。例如,要将pizza作为流程ID,可以像这样配置。

回答:

代码语言:javascript
复制
<flow:flow-registry id="flowRegistry">   <flow:flow-location id="pizza"         path="/WEB-INF/flows/springpizza.xml" /></flow:flow-registry><flow:flow-registry id="flowRegistry">   <flow:flow-location id="pizza"         path="/WEB-INF/flows/springpizza.xml" /></flow:flow-registry>

146

问题: #8.1.3-1 | 我们在前一章曾经看到,DispatcherServlet一般将请求分发给控制器。但是对于流程而言,我们需要一个FlowHandlerMapping来帮助DispatcherServlet将流程请求发送给Spring Web Flow。在Spring应用上下文中,FlowHandlerMapping的配置如下:

回答:

代码语言:javascript
复制
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">  <property name="flowRegistry" ref="flowRegistry" /></bean><bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">  <property name="flowRegistry" ref="flowRegistry" /></bean>

147

问题: #8.1.3-2 | FlowHandlerMapping装配了流程注册表的引用,这样它就能知道如何将请求的URL匹配到流程上。请举例说明:

回答: 例如,如果我们有一个ID为pizza的流程,FlowHandlerMapping就会知道如果请求的URL模式(相对于应用程序的上下文路径)是“/pizza”的话,就要将其匹配到这个流程上。

148

问题: #8.1.3-3 | FlowHandlerMapping的工作仅仅是将流程请求定向到Spring Web Flow上,响应请求的是FlowHandlerAdapter。FlowHandlerAdapter等同于Spring MVC的控制器,它会响应发送的流程请求并对其进行处理。FlowHandlerAdapter可以像下面这样装配成一个Spring bean。

回答:

代码语言:javascript
复制
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">  <property name="flowExecutor" ref="flowExecutor" /></bean><bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">  <property name="flowExecutor" ref="flowExecutor" /></bean>

149

问题: #8.2 | 在Spring Web Flow中,流程是由三个主要元素定义的:

回答:

  1. 状态 1. 状态(State)是流程中事件发生的地点。 2. 流程中的状态是业务逻辑执行、做出决策或将页面展现给用户的地方。
  2. 转移 流程中,你通过转移的方式从一个状态到另一个状态。
  3. 流程数据 反映流程状况的一些数据。

150

问题: #8.2.1-1 | Spring Web Flow可供选择的状态。 回答:

  • 行为(Action) --- 行为状态是流程逻辑发生的地方。
  • 决策(Decision) --- 决策状态将流程分成两个方向,它会基于流程数据的评估结果确定流程方向。
  • 结束(End) --- 结束状态是流程的最后一站。一旦进入End状态,流程就会终止。
  • 子流程(Subflow) --- 子流程状态会在当前正在运行的流程上下文中启动一个新的流程。
  • 视图(View) --- 视图状态会暂停流程并邀请用户参与流程。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 怀英的自我修炼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档