2014-06-17 41 views
0

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

下面是关于基于文件位置登记流程ID弹簧文档的一部分:

使用位置元素来指定路径来流动定义来 寄存器。默认情况下,流程将被分配注册表标识符 ,等于它们的文件名减去文件扩展名,除非已定义注册表浴槽路径 。

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

使用碱路径属性来定义用于在 应用程序中所有流的基本位置。所有的流量位置都是相对于基地的路径而言的。基础路径可以是资源路径,如'/ WEB-INF'或类路径上的 位置,如 'classpath:org/springframework/webflow/samples'。

<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解析流位置进路流程标识符与传入请求URL中的流程标识符进行映射。

所以我的问题是,如何实现我自己的算法来指定流程ID还基于流程的位置?

回答

0

尝试使用此流的位置:

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

你应该有流量ID将是这样的:订票/订票