2015-11-20 58 views
0

後,我有一個騾子流,其中我配置分散聚集範圍如下圖所示:騾子的foreach的計數器是空分散收集

<flow name="simpleScatterGather"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/scatter-gather-test" doc:name="HTTP" /> 
    <scatter-gather doc:name="Scatter-Gather"> 
     <flow-ref name="subFlow1" doc:name="callSubFlow1"/> 
     <flow-ref name="subFlow2" doc:name="callSubFlow2"/> 
    </scatter-gather> 
    <logger message="Payload is #[payload]" level="INFO" doc:name="logPayload"/> 
    <foreach doc:name="forEach"> 
     <logger message="Payload #[flowVars.counter] is : #[payload]" level="INFO" doc:name="logEachPayload"/> 
    </foreach> 
    <set-payload value="{&quot;message&quot;: &quot;success&quot;}" mimeType="application/json" doc:name="setResponse"/> 
</flow> 

<sub-flow name="subFlow1"> 
    <set-payload value="Payload1" doc:name="setPayload" /> 
</sub-flow> 

<sub-flow name="subFlow2"> 
    <set-payload value="Payload2" doc:name="setPayload" /> 
</sub-flow> 

分散後的記錄器收集日誌像下面。

Payload is [Payload1, Payload2] 

所以很明顯,上面的有效載荷是一個列表。

兩個記錄器在foreach日誌裏面,如下所示。

Payload null is : Payload1 
Payload null is : Payload2 

所以它意味着MEL表達式#[flowVars.counter]在foreach中的記錄器返回null。

當我改變了的foreach範圍明確地包括collection屬性象下面這樣:

<foreach doc:name="forEach" collection="#[payload]"> 
    <logger message="Payload #[flowVars.counter] is : #[payload]" level="INFO" doc:name="logEachPayload"/> 
</foreach> 

的foreach日誌內的兩個記錄器等的下方。

Payload 1 is : Payload1 
Payload 2 is : Payload2 

現在MEL表達#[flowVars.counter]按預期工作

任何人都可以請解決這個問題?

回答

1

爲什麼我現在還不確定,但分散收集返回一個org.mule.DefaultMessageCollection似乎混亂的計數器。但是,如果您明確將collection設置爲​​,那麼它就可以工作。

<foreach doc:name="forEach" collection="#[payload]"> 
    <logger message="Payload #[flowVars.counter] is : #[payload]" 
     level="INFO" doc:name="logEachPayload" /> 
</foreach> 
+0

是的,它看起來像一個bug。我在(https://www.mulesoft.org/jira/browse/MULE-9136)上創建了一個bug。 –