自定义Flow ID解析Spring Webflow

时间:2014-06-17 01:16:10

标签: spring registration spring-webflow-2

最近我研究了Spring Web Flow,我很好奇SWF如何从流定义文件中创建流ID。

以下是有关根据文件位置注册流ID的Spring文档的一部分:

  

使用location元素指定流定义的路径   寄存器。默认情况下,将为流分配注册表标识符   等于文件名减去文件扩展名,除非注册表   浴道是定义的。

 <webflow:flow-location path="/WEB-INF/flows/booking/booking.xml" />
  

使用base-path属性为所有流定义基本位置   应用程序。然后所有流动位置都相对于基座   路径。基本路径可以是资源路径,例如'/ WEB-INF'或a   类路径上的位置   '类路径:组织/ springframework的/的Webflow /样品'。

<webflow:flow-registry id="flowRegistry" base-path="/WEB-INF">
<webflow:flow-location path="/hotels/booking/booking.xml" />
</webflow:flow-registry>
  

定义了基本路径,算法即可   稍微分配流标识符的变化。现在将分配流量   注册表标识符等于其基数之间的路径段   路径和文件名。例如,如果流定义位于   '/WEB-INF/hotels/booking/booking-flow.xml'和基本路径是   '/ WEB-INF'此流程的剩余路径是'hotels / booking'   成为流程ID。

我读了FlowDefintionRegistry源代码,但是我发现FlowDefinitionRegistry只将传入的请求URL解析为流ID,以便从流定义文件中映射流ID,但我没有找到FlowDefinitionRegistry将流位置解析为流ID的方式使用来自传入请求URL的流ID进行映射。

所以我的问题是,如何实现我自己的算法来根据流量位置指定流量ID?

1 个答案:

答案 0 :(得分:0)

尝试使用此流程位置:

<webflow:flow-location-pattern value="/hotels/**/*.xml"/>

您应该将流ID设置为:预订/预订