您如何在Mule的ForEach循环中累积值? [英] How do you accumulate values within a ForEach loop in Mule?

查看:185
本文介绍了您如何在Mule的ForEach循环中累积值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下json输出:

I have the below json output:

{
  "results": [
    {
      "ID": "1",
      "ImageID": "2",
      "Name": "Test1",
      "Owner": "sysadmin",
      "Author": "sysadmin",
      "Creator": "sysadmin"
	},
	{
      "ID": "2",
      "ImageID": "23",
      "Name": "Test2",
      "Owner": "sysadmin",
      "Author": "sysadmin",
      "Creator": "sysadmin"
	}
  ]
}

对于上述响应中的每个ID,我需要调用传递ID的其余服务作为参数,其余服务将向我发送回响应.我必须将所有输出合并到一个output子中的单个json响应中. 我已经尝试过使用每种浓缩器,但无法构建它.下面是我正在使用的代码.

For each ID in above response, i need to invoke the rest service passing ID as a parameter and the rest service will send me a response back. I have to consolidate all the output into a single json response in mule. I have tried using for each and enricher but could not able to build it. Below is the code which i am using.

 <foreach doc:name="For Each Loop">
  <logger level="INFO" message="#[payload]" doc:name="Logger" category="INFO"/>
            <json:json-to-object-transformer doc:name="JSON to Object"/>
   <enricher doc:name="Message Enricher">
                <http:request config-ref="SAM" path="/abc/#[payload.ID]" method="GET" doc:name="HTTP"/>
<enrich target="#[flowVars.ID]" source="#[payload[0].ID]"/>
 </enricher>
 <logger level="INFO" message="#[flowVars.ID]" doc:name="Logger" />
 <expression-component doc:name="Expression"><![CDATA[payload.ID = flowVars.ID;    ]]></expression-component> 
 </foreach>

请帮助我解决此问题!!

Kindly help me with the way to fix this !!

谢谢

推荐答案

您需要在for-each循环之前初始化一个空数组,并将其添加到for-each中的该数组:

You need to initialize an empty array before the for-each loop and add to that array within the for-each:

<set-variable variableName="idList" value="#[[]]" doc:name="Variable - Init idList"/>
<foreach doc:name="For Each Loop">
  <logger level="INFO" message="#[payload]" doc:name="Logger" category="INFO"/>
  <json:json-to-object-transformer doc:name="JSON to Object"/>
  <enricher doc:name="Message Enricher">
    <http:request config-ref="SAM" path="/abc/#[payload.ID]" method="GET" doc:name="HTTP"/>
    <enrich target="#[flowVars.ID]" source="#[payload[0].ID]"/>
  </enricher>
  <logger level="INFO" message="#[flowVars.ID]" doc:name="Logger" />
  <expression-component doc:name="Expression"><![CDATA[flowVars.idList.add(flowVars.ID);]]></expression-component> 
</foreach>

我在此视频中介绍了这一主题.

I cover this topic in this video.

这篇关于您如何在Mule的ForEach循环中累积值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆