Spring Webflow:如何强制流程再次启动?

时间:2012-10-11 20:55:20

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

我是SWF的新手,我意外地继承了SWF应用程序的维护。

用户在屏幕顶部有一个水平菜单,其中显示5个选项。单击其中一个时,将在屏幕中加载一个portlet。

两天前,我收到了一项任务:每当用户点击其中一个选项时,portlet必须忽略其先前的状态并重新开始。

示例:其中一个portlet称为“SEARCH”,另一个称为“REPORTS”。今天,如果用户点击“搜索”,则appl会显示一个小表单和一个“GO”按钮。单击“开始”后,应用程序会显示结果列表,每个结果都带有一个编辑按钮。单击以编辑其中一个后,appl将显示所选结果的详细信息。到现在为止还挺好。

继续该示例,假设用户现在单击菜单中的“REPORTS”选项。 appl将显示报告portlet,其中包含自己的内容。再一次,到目前为止,这么好。

但是,如果用户现在再次单击“搜索”,则portlet将显示其上一个状态,即上一个搜索项的编辑。

我被要求改变这种行为,因此每次用户点击“搜索”时,它都会打开为空,也就是说,portlet的webflow将从头开始。

我该怎么做?有人可以帮助我吗?

我搜索了SMF的文档,并研究了spring-webflow-config-2.0.xsd文件,寻找这种情况的一些特定配置,但无济于事。

谢谢,

FQL

1 个答案:

答案 0 :(得分:2)

尝试这种方法:

创建一个新的流定义xml文件,您应该在其中放置一组将重定向到流的结束状态,以及一组将转换为结束状态的全局转换。因此,您应该为每个菜单项添加一个结束状态和一个全局转换。

<end-state id="searchMenuItem" view="flowRedirect:searchFlowName" />

<end-state id="reportsMenuItem" view="flowRedirect:reportsFlowName" />    

<global-transitions>    
    <transition on="searchMenuItem" to="searchMenuItem" />      
    <transition on="reportsMenuItem" to="reportsMenuItem" />        
</global-transitions>

将此流定义添加到流注册表,并将所有流添加为父流。因此,所有流程都应该具有可见的结束状态和全局转换。

编辑菜单链接以使用全局转换:

<a href="${flowExecutionUrl}&_eventId=searchMenuItem">Search</a>   
<a href="${flowExecutionUrl}&_eventId=reportsMenuItem">Reports</a>

这会导致当用户点击菜单项时,其全局转换将触发,从而导致转换到终端区域,并且流程重定向到所需的流程。

希望这有帮助。