最近我研究了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?
答案 0 :(得分:0)
尝试使用此流程位置:
<webflow:flow-location-pattern value="/hotels/**/*.xml"/>
您应该将流ID设置为:预订/预订