2016-06-08 64 views
1

我想重新使用現有流程鏈而不更改其預期有效負載並從新流程調用它。但是,我不確定如何在不丟失新流的有效負載的情況下調用現有流。這一切都必須在一個交易。我正在使用Spring Integration DSL Lambdas。這裏是什麼樣子從新流程中調用現有流程,然後繼續使用新流程

  Validation Flow B 
        | 
        Route 
       / \ 
     Error Flow Existing Validation Flow A -- Existing Persist Flow A 
                   | 
            ---------------------------- 
            | 
          New Persist Flow B 

後堅持滲流的成功,我想繼續與驗證流程B中的原始有效載荷送入堅持流動B.我應該把它保存在頭?我知道如何在標題中設置值。如何使用DSL在標頭中設置有效載荷。或者有沒有辦法在標題中存儲索賠檢查,而不是使用DSL的有效負載?

回答

0

有幾種技術和組件可以調用另一個流程。所有的概念和原則來自原始Spring Integration

其中之一是.gateway(),當您將消息發送到請求通道並等待來自該子流或其他流的回覆時。但在這種情況下,reply將成爲主流中下一個端點的​​。

另一種成分是.enrich(),你做幾乎一樣用.gateway(),而是將豐富的答覆現有​​或headers築底。我認爲,對於您的使用案例,如果您想繼續使用相同的​​,則可以省略headersproperties

無論如何,我會說你的用例看起來像.publishSubscribeChannel()與兩個訂戶相同的​​。現有流量應該作爲第一個用戶,而新流量作爲第二個流量。所有東西都應該在沒有任何Executor(默認)的情況下進行配置,因此只有在第一個流程成功完成後纔會調用第二個流程。

可以存儲在headers像​​:

​​
+0

由於加入有效載荷標頭,如提及。 – loops96

+0

如果這個答案對你有所質疑,那麼看到一個*接受*並在SO上獲得良好的聲譽將會很棒。 –