【问题标题】:Mule flowvars getting affected which preserves payload when the payload is changedMule flowvars 受到影响,当有效负载发生变化时它会保留有效负载
【发布时间】: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()&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>

【问题讨论】:

  • 无论任何 flowvars 引用 #[payload] 的地方都会被修改。我正在使用 Mule 3.9 运行时。

标签: foreach mule


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多