关于spring webflow执行密钥的混淆,背后的语义是什么

时间:2011-12-26 02:13:50

标签: spring-webflow

最近,我查看了spring 2.3 webflow预订面孔演示,我发现每次点击“浏览”酒店详细信息时都会分配不同的流程执行密钥,这很奇怪。

当我搜索酒店和页面到搜索结果的第5页时,我得到一个execution=e1s2的网址。然后我点击浏览酒店详细信息,我得到一个execution=e1s3的网址。但是,当我单击“返回搜索”按钮时,我发现该页面被定向到带有execution=e1s4 URL的搜索列表的第一页,并且错过了分页状态。但是,浏览步骤在使用hotel search act的相同流程定义中定义,而分页var在流程范围内定义。

我的问题是新的执行密钥参数是否意味着新的流程执行?什么是语义?如果是这样,当我单击“返回搜索”按钮时,如何配置以保持相同的流程执行。

由于

1 个答案:

答案 0 :(得分:15)

准确地说:流程执行密钥(例如“e1s2”)确实由两部分组成:

  • “e1”:此部分标识流程执行。每次启动新流时,都会创建新的流执行。流执行基本上保持与执行流相关联的所有状态(即,您与Web应用程序进行的对话)。当流程达到最终状态时,流程执行(以及所有相关的快照)将被销毁。
  • “s2”:此部分标识流程执行中的快照。 Webflow使用所谓的延续快照来支持浏览器返回和刷新按钮。在流程执行的每个请求中,webflow都会创建一个新的快照,允许您在需要时从该点开始继续,例如当您使用浏览器后退按钮时。

另见: https://docs.spring.io/spring-webflow/docs/current/api/org/springframework/webflow/execution/repository/support/CompositeFlowExecutionKey.html

请记住,流程执行密钥不是人类可读的或由其他软件解释。这本质上是一个内部Webflow工件。