我有两个问题
forEach
和flowVars.ABC
之类的flowVars.DEF
中声明了两个变量,我如何在forEach
块之外访问那两个变量?任何人都可以帮我吗?我无法访问foreach中的变量并添加2个JSON。
这是我的示例代码
<flow name="test">
<foreach doc:name="For Each">
<scatter-gather doc:name="Scatter-Gather">
<set-variable variableName="ABC" value="#[payload]" mimeType="application/json" doc:name="ABC"/>
<set-variable variableName="DEF" value="#[payload]" mimeType="application/json" doc:name="DEF"/>
</scatter-gather>
</foreach>
<set-payload value="#[flowVars.ABC + flowVars.DEF]" mimeType="application/json" doc:name="adding 2 vars"/>
</flow>
您需要了解范围如何与foreach
一起使用。在foreach
范围内设置的任何变量都不会在该范围之外。但是,在foreach
范围之外设置的变量(例如set-variable
之前的foreach
)将在foreach
范围内可用。这应该可以帮助您解决问题。我正在取消分散 - 聚集,因为它在你的例子中没有任何用处:
<flow name="test">
<set-variable variableName="ABC value="#[payload] mimeType="application/json" doc:name="ABC"/>
<set-variable variableName="DEF value="#[payload] mimeType="application/json" doc:name="DEF"/>
<foreach doc:name="For Each">
<set-variable variableName="ABC" value="#[payload]" mimeType="application/json" doc:name="ABC"/>
<set-variable variableName="DEF" value="#[payload]" mimeType="application/json" doc:name="DEF"/>
</foreach>
<set-payload value="#[flowVars.ABC ++ flowVars.DEF]" mimeType="application/json" doc:name="adding 2 vars"/>
</flow>
除此之外,我不确定你的代码是否是简化代码,但是现在有一些问题值得怀疑:
你为什么使用分散聚集?如果您不需要异步执行多项操作(例如调用多个服务),那么这只是代码中的一个复杂问题。在我看来,设置两个vars不符合条件。
你的代码应该做什么?从我的角度来看,您似乎只是将有效负载设置为原始有效负载中最后一个元素的副本。如果是这样,你可以在变压器中这样做:
%dw 2.0
output application/json
---
if (not isEmpty(payload))
payload[-1] ++ payload[-1]
else
[]