如何在Mulesoft中检查Arraylist中的特定值?

时间:2018-08-20 16:48:30

标签: arraylist mule mule-component

这是我的ArrayList-

[  
   {  
      AccountNumber=123456,
      Amount=257710.06
   },
   {  
      AccountNumber=845679,
      Amount=3672351.06
   }
]

在这里,我要检查帐号123456是否在列表中。 我使用了“选择”组件,因为我想用搜索到的帐号创建另一个列表。这是我的代码-

 <choice doc:name="Choice">
        <when expression="#[flowVars.investOneList.contains(123456)]">
            <logger message="Account number is present" level="INFO" doc:name="Logger"/>
        </when>
        <otherwise>
            <logger message="Account number is not present" level="INFO" doc:name="Logger"/>
        </otherwise>
    </choice>

在这里,我的记录器显示“帐户号不存在”。我的代码虽然在列表中,但找不到帐号。 有人可以帮我吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

如果要使用List.contains(...),则需要映射具有以下形式的变量:

%dw 1.0
%output application/java
---
flowVars.investOneList map $.AccountNumber

这将输出[123456, 845679]作为payload(如果需要,您可以设置其他内容)。然后,您可以在选择的路由器中执行此操作:

<choice doc:name="Choice">
        <when expression="#[payload.contains(123456)]">
            <logger message="Account number is present" level="INFO" doc:name="Logger"/>
        </when>
        <otherwise>
            <logger message="Account number is not present" level="INFO" doc:name="Logger"/>
        </otherwise>
    </choice>

但是您可以通过使用dw()函数来完成MEL中的全部操作:

...
<when expression="dw('(flowVars.investOneList map $.AccountNumber) contains 123456')">
...

这将防止您仅需要获取帐号列表就可以进行中间计算。