Mule flowvars受到影响,在更改有效负载时保留有效负载

时间:2018-01-29 16:10:02

标签: foreach mule

我将DB中的输出存储在flowvar #[flowvars.test] 中,之后我迭代有效负载以删除几个键值对。当在for循环中修改有效负载时,存储在flowvars中的值也会被修改。我正在使用mule 3.9运行时。

    <db:parameterized-query><![CDATA[select MachineName,TransactionId,SourceAPIName,Source,Target,ErrorCode,Severity,MailContent,ExceptionType,ExceptionMessage from Notification
     where Notify='Y' and IsNotify='N']]>
                 </db:select>
             </poll>
             <expression-filter expression="#[payload.size()&gt;0]" doc:name="Stop If No Records"/>
             <set-variable variableName="test" value="#[message.payload]" doc:name="Variable"/>
<set-variable variableName="validatedEntries" value="#[[]]"
            doc:name="ValidatedEntries" />
                     <logger level="INFO" doc:name="Logger"/>
                     <foreach collection="#[flowVars.test]" doc:name="For Each">
                 <logger level="INFO" doc:name="Logger"/>
                 <set-variable variableName="tempNotificationTable" value="#[payload.remove('TransactionID')]" doc:name="Temp NotificationTable"/>
                 <expression-component doc:name="Expression"><![CDATA[#[flowVars.validatedEntries.add(payload)]]]></expression-component>
             </foreach>

1 个答案:

答案 0 :(得分:0)

For-Each不会创建对象的深层副本。因此,您的原始有效负载会发生变化。