关于spring webflow执行键的困惑,背后的语义是啥
Posted
技术标签:
【中文标题】关于spring webflow执行键的困惑,背后的语义是啥【英文标题】:confusion about spring webflow execution key, what's the semantics behind关于spring webflow执行键的困惑,背后的语义是什么 【发布时间】:2012-01-27 18:54:49 【问题描述】:最近看了spring 2.3 webflow booking-faces demo,奇怪的是每次点击“浏览”酒店详情时都会分配不同的flow execution key。
当我搜索酒店和页面到搜索结果的第 5 页时,我得到一个带有execution=e1s2
的 URL。然后我点击浏览酒店详情,我得到一个带有execution=e1s3
的URL。但是当我点击“返回搜索”按钮时,我发现页面被定向到搜索列表的第一页,并带有execution=e1s4
URL,并且错过了分页状态。但是,浏览步骤是在与酒店搜索行为相同的流程定义中定义的,而分页变量是在流程范围内定义的。
我的问题是新的执行关键参数是否意味着新的流程执行?语义是什么?如果是这样,当我单击“返回搜索”按钮时,如何配置以坚持相同的流程执行。
谢谢
【问题讨论】:
我得到了答案。 webflow执行key由两部分组成:flow instance id和state id。例如,在“execution=e1s2”的url中,“e1”表示流实例执行,“s1”表示状态。因此,在上述问题中,所有 url 都表示相同的流实例但不同的流统计信息。至于“返回搜索”重置分页状态的现象,是因为Primefaces的延迟加载表。 【参考方案1】:准确地说:流程执行键(例如“e1s2”)确实由两部分组成:
“e1”:这部分标识流程执行。每次启动新流程时,都会创建一个新流程执行。流执行本质上包含与执行流相关的所有状态(即您与 Web 应用程序的对话)。当流程达到结束状态时,流程执行(以及所有关联的快照)将被销毁。 “s2”:这部分标识流执行中的快照。 Webflow 使用所谓的连续快照来支持浏览器的返回和刷新按钮。在流程执行的每个请求中,webflow 都会创建一个新快照,以便您在需要时从该点继续继续,例如当您使用浏览器后退按钮时。另请参阅: https://docs.spring.io/spring-webflow/docs/current/api/org/springframework/webflow/execution/repository/support/CompositeFlowExecutionKey.html
请注意,流程执行密钥并非旨在供人类阅读或由其他软件解释。这本质上是一个内部 webflow 工件。
【讨论】:
以上是关于关于spring webflow执行键的困惑,背后的语义是啥的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring MVC 之上使用 Spring WebFlow 啥时候有意义?
找不到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/webflow]
spring-roo 2.0 Spring Webflow 持久性最佳实践