2014-09-13 47 views
0

我有一個ServiceFlow和一個FileFlow。一旦ServiceFlow(Flow1)被觸發,FileFlow(Flow2)應該獲取所有文件並處理它們。Mule ESB:無法控制從flow1流向flow 2

將Flow2中的初始狀態設置爲停止狀態僅在Mule服務器啓動之前第一次工作,即第一次觸發執行。一旦流量達到第一個觸發器,如果​​我試圖保留一些文件在file:inbound-endpoint它開始處理文件。

但我的方案僅基於每個觸發器,因此第二個文件必須選擇該文件。請幫助我如何在Flow2中進行控制。

我使用下面的代碼

<flow name="serviceFlow" doc:name="Flow1"> 
    <http:inbound-endpoint exchange-pattern="request-response" 
     host="localhost" port="8081" doc:name="HTTP" contentType="text/xml" 
     mimeType="text/xml" /> 
    <set-payload value="'Started Processing'" doc:name="Set Payload" /> 
    <async doc:name="Async"> 
     <expression-component doc:name="Expression"> 
      app.registry.FileFlow.start(); 
     </expression-component> 
    </async> 
</flow> 

<flow name="FileFlow" doc:name="Flow2" initialState="stopped" > 
    <file:inbound-endpoint responseTimeout="10000" doc:name="File" path="C:\Users\Desktop\IN"/> 
    <batch:execute name="businessBatch1" doc:name="Batch Execute"/> 
</flow> 

使用騾子版本:3.5.1

回答

2

我可以建議你是把一個<expression-component doc:name="Expression">app.registry.FileFlow.stop();</expression-component>在第二流的末尾,以便在第二次人流後被執行時,它會再次使其初始狀態爲「停止」,以便您可以無憂地再次觸發第一個流程,因爲flow2已停止。

<flow name="serviceFlow" doc:name="Flow1"> 
    <http:inbound-endpoint exchange-pattern="request-response" 
     host="localhost" port="8081" doc:name="HTTP" contentType="text/xml" 
     mimeType="text/xml" /> 
    <set-payload value="'Started Processing'" doc:name="Set Payload" /> 
    <async doc:name="Async"> 
    <expression-component doc:name="Expression"> 
     app.registry.FileFlow.start(); 
    </expression-component> 
    </async> 
</flow> 

<flow name="FileFlow" doc:name="Flow2" initialState="stopped" > 
    <file:inbound-endpoint responseTimeout="10000" doc:name="File" path="C:\Users\Desktop\IN"/> 
    <batch:execute name="businessBatch1" doc:name="Batch Execute"/> 
    <expression-component doc:name="Expression"> 
    app.registry.FileFlow.stop(); 
    </expression-component> 
</flow> 
+0

森:我已經嘗試過,但它似乎並沒有工作。我是做錯了還是有其他方法。 – star 2014-09-13 21:48:52

+0

@Aniren:老闆謝謝,它工作正常。但在其他一些場景中,比如我從我的Flow2調用批處理流,而在(輸入階段)的批處理流中,我得到的錯誤如** org.mule.transport.file.ReceiverFileInputStream **不是正確的類型。它必須是類型**接口java.lang.Iterable java.lang.Iterable「**它不工作。再次我做批處理輸入階段迭代(因爲我inout我們xml,使用Java組件作爲列表)它的工作原理爲什麼這個奇怪的場景 – star 2014-09-13 22:25:22

+0

你需要在Stack Overflow上創建一個單獨的新問題,在那裏發佈你的Mule配置..我們可以研究它並討論那個問題的解決方案:) – 2014-09-14 09:16:59