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

spa*_*con 6 spring-webflow

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

当我搜索酒店和页面到搜索结果的第5页时,我得到一个URL execution=e1s2.然后我点击浏览酒店详细信息,我得到一个URL execution=e1s3.但是,当我单击"返回搜索"按钮时,我发现页面被定向到带有execution=e1s4URL 的搜索列表的第一页,并且错过了分页状态.但是,浏览步骤在具有酒店搜索行为的相同流程定义中定义,并且在流程范围内定义了分页var.

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

谢谢

klr*_*lr8 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工件.