【发布时间】:2015-11-20 09:34:39
【问题描述】:
我有一个 Mule 流程,我在其中配置了一个 Scatter Gather 范围,如下所示:
<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="{"message": "success"}" 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>
Scatter Gather 后的记录器如下所示。
Payload is [Payload1, Payload2]
所以很明显上面的payload是一个列表。
foreach 中的两个记录器如下所示。
Payload null is : Payload1
Payload null is : Payload2
所以这意味着foreach内部记录器中的MEL表达式#[flowVars.counter]返回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] 可以正常工作
谁能解决这个问题?
【问题讨论】:
标签: mule