2012-07-31 66 views
1

在我們的應用程序中,我們使用Spring WebFlow來瀏覽網站中的用戶。在某些頁面中,我需要知道從哪個流程開始當前的子流程。 Spring WebFlow中有沒有簡單的方法來獲取這些信息?是否有可能在春季獲得子流的堆棧webFlow

我使用的是Spring WebFlow 2.0.9版本,不幸的是無法升級到更新的版本。

簡單的例子:我有從foo/flow.xml叫,bar/bar.xhtmlbar/flow.xml稱爲foo/foo.xhtml


最後,我有baz/baz.xhtml有一個baz/flow.xml。這被稱爲來自foo流或bar流的子流。在支持巴茲流動豆我需要看到的「歷史」我怎麼叫我的baz/flow.xml

發現的解決方案對於這個問題:
你也可以實現自己的FLowExecutionListener,當你進入一個StateDefinition您可以檢查是否它是SubflowState的一個實例並獲取父級的名稱。然後,也許你可以把這個變量放在FlowScope中,以便在你的狀態下使用它 - rptmat57

回答

1

對於在每個子流程中設置的原始流程使用輸入,怎麼樣?
baz/flow.xml

<input name="comingFrom" type="string">

foo/flow.xml

<subflow-state id="subFlowFoo" subflow="baz">
<input name="comingFrom" value="Foo" type="string"/>
...
</sublfow-state>

bar/flow.xml

<subflow-state id="subFlowBar" subflow="baz">
<input name="comingFrom" value="Bar" type="string"/>
...
</sublfow-state>

+0

是的,那就是,我是怎麼做的同時,但這種方法是不是整齊,因爲我想。如果我有另一個流程或更深的結構,那麼在任何地方填充輸入變量都會是一個開銷。 – premma 2012-08-02 18:49:23

+0

是真的,你可以連接字符串來獲得整個堆棧,但它仍然不是最好的。 – rptmat57 2012-08-02 19:06:21

+3

你也可以實現你自己的FLowExecutionListener,並且當你輸入一個StateDefinition時,你可以檢查它是否是SubflowState的一個實例並且獲取父級的名字。那麼也許你可以將這個變量放在FlowScope中,以便在你的狀態 – rptmat57 2012-08-02 19:19:38