【发布时间】:2018-01-29 16:10:02
【问题描述】:
我将 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()>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>
【问题讨论】:
-
无论任何 flowvars 引用 #[payload] 的地方都会被修改。我正在使用 Mule 3.9 运行时。