【发布时间】:2014-06-25 22:26:38
【问题描述】:
最近我研究了 Spring Web Flow,我很好奇 SWF 如何从流定义文件中创建流 ID。
以下是有关根据文件位置注册流 id 的 spring 文档的一部分:
使用 location 元素指定流定义的路径 登记。默认情况下,将为流分配注册表标识符 等于它们的文件名减去文件扩展名,除非注册表 浴室路径已定义。
<webflow:flow-location path="/WEB-INF/flows/booking/booking.xml" />
使用 base-path 属性定义所有流的基本位置 应用程序。然后所有流动位置都相对于基础 小路。基本路径可以是资源路径,例如“/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。
我阅读了 FlowDefinitionRegistry 源代码,但我发现 FlowDefinitionRegistry 仅将传入的请求 URL 解析为流 ID,以便与流定义文件中的流 ID 进行映射,但我没有找到 FlowDefinitionRegistry 将流位置解析为流 ID 的方式使用来自传入请求 URL 的流 ID 进行映射。
所以我的问题是,如何实现我自己的算法来指定流 id 也基于流位置?
【问题讨论】:
标签: spring registration spring-webflow-2