Computing Magazine

ForEach Vs Splitter in Mule

Posted on the 20 November 2019 by Abhishek Somani @somaniabhi
This example app will show the difference between Foreach and splitter in Mule version 3.x. Collection splitter splits the incoming collection object and then you have to put a aggregator to collect the resultant objects. For each scope is a scope which does not change the payload and you get the same collection object once for each loop completes.

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:vm="" xmlns:http="" xmlns="" xmlns:doc=""
<http:listener-config name="HTTP_Listener_Configuration" host="" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="foreachtestFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/test" allowedMethods="GET" doc:name="HTTP"/>
<component class="foreachexample.CollectionPayloadComponent" doc:name="Java"/>
<!-- <foreach doc:name="For Each">
<choice doc:name="Choice">
<when expression="#[payload == 'foreach']">
<set-session-variable value="foreachVar" variableName="test" doc:name="Session Variable"></set-session-variable>
<set-session-variable value="BBQVar" variableName="test" doc:name="Session Variable"></set-session-variable>
<flow-ref name="flow3" doc:name="Flow Reference"/>
</foreach> -->
<collection-splitter />
<logger message="payload is : #[payload]" level="ERROR"/>
<when expression="#[payload == 'foreach']">
<set-session-variable value="foreachVar" variableName="test"></set-session-variable>
<set-session-variable value="BBQVar" variableName="test"></set-session-variable>
<flow-ref name="flow3" />
<set-payload value="dsadasd"/>

<flow name="flow2">
<vm:inbound-endpoint path="foreach" doc:name="VM"/>
<logger message=" session var value is #[sessionVars.test] and payload is #[payload]" level="ERROR" doc:name="Logger"/>
<flow name="flow3">
<vm:outbound-endpoint path="foreach" doc:name="VM"/>

Post your comments and suggestions.

Back to Featured Articles on Logo Paperblog