首页 > 解决方案 > Mule ForEach 无法获得第一个值

问题描述

我的 Mule 3 流程中有一个 for each 循环。

在此处输入图像描述

相同的 Collection 是一个流变量数组,如下所示:

"[
  "Alpha",
  "Bravo",
  "Charlie",
  "Delta",
  "Echo",
]"

在 for each 内部,我有一个会话变量来存储当前数组值。我已将值设置为#[payload]。这个想法是使用每个迭代的 ID 来进行 API 更新调用。问题是,我将完整的有效负载作为当前的 id 会话变量(而不是单个值)。知道为什么它不迭代 5 次(5 是我在数组中拥有的 ID 数)。

在此处输入图像描述

标签: foreachmulemule-componentanypoint-studiodataweave

解决方案


我无法重现您的错误。可能是您的数组变量的定义方式不正确。我不知道。我做了一个小改动。 在此处输入图像描述

    <flow name="loos_sample" doc:id="25ef89d0-dfcd-48c3-8c66-a94373a3b46c" >
        <http:listener doc:name="Listener" doc:id="96eca53c-6976-4b0e-9a18-9fd6d0ee6520" config-ref="HTTP_Listener_config" path="/loop"/>
        <ee:transform doc:name="Transform Message" doc:id="2ea9d7e3-ff1c-4ba4-99f2-40ae4c2d16e7" >
            <ee:message >
            </ee:message>
            <ee:variables >
                <ee:set-variable variableName="varIds" ><![CDATA[%dw 2.0
output application/java
---
{ arr:
[
  "Alpha",
  "Bravo",
  "Charlie",
  "Delta",
  "Echo",
]

}]]></ee:set-variable>
            </ee:variables>
        </ee:transform>
        <foreach doc:name="For Each" doc:id="972ee8d5-d8d6-43b6-866a-0894d1b3a450" collection="#[vars.varIds.arr]">
            <logger level="INFO" doc:name="Logger" doc:id="4478c587-f01c-4e2a-9485-5aa4b1be11df" message="curernt item: #[payload]"/>
        </foreach>
    </flow>

推荐阅读