从动作状态恢复Spring Webflow

时间:2019-05-23 12:57:42

标签: spring spring-webflow spring-webflow-2

spring webflow中是否可以选择从动作状态或决策状态恢复流量? 我需要实现的流程要求跳过该流程以单击电子邮件中的某些链接。我有处理电子邮件链接的控制器,并且我尝试恢复以前的流程,但不从最后一个视图状态恢复。 我有这样的东西

<view-state id="start>
    <transition on="submit" to="handleStep1"/>
</view-state>

<action-state id="handleStep1"/>
    <evaluate expression="a.something()"/>
    <transition on="emailSent" to="show-email-sent"/>
    <transition on="changeSomething" to="show-change"/>
</action-state>

<view-state id="show-email-sent" view="emailSentPage">
</view-state>

<view-state id="show-change" view="showChangePage">
</view-state>

当动作状态决定发送电子邮件时,用户将显示电子邮件已发送页面。现在,他将单击电子邮件中的链接,并且他应该返回到操作状态,该状态将决定他现在可以进入“显示更改”页面。 我可以通过获取flowRequestContext.getFlowExecutionUrl()然后在处理电子邮件点击的控制器中使用它来恢复流,但是此url总是重定向到视图状态(取决于我何时保存其值,它指向开始视图状态或已发送电子邮件的视图状态。如何从动作状态恢复流程;或者其他想法如何处理这种情况?

1 个答案:

答案 0 :(得分:1)

您可以在电子邮件的链接中添加一个参数,即http://yoursite.com/yourflow?resume=true

然后,在您的流程中添加一个非必需的输入:

<input name="resume" required="false" type="boolean"/>

添加一个决策状态来处理它:

<decision-state id="resumeOrNotResume">
    <if test="resume == null || !resume" then="start" else="showChange"/>
</decision-state>

并将其设置为开始状态:

<flow start-state="resumeOrNotResume">