Mule ESB - 获取有效负载值

时间:2015-03-18 12:25:38

标签: mule

我无法从查询结果中获取ID。 骡子版本是3.5。 这是流程:

<flow name="mule.activity">
<poll doc:name="Poll">
<fixed-frequency-scheduler frequency="10000"/>
<db:select config-ref="JSDB" doc:name="Database">
<db:parameterized-query><![CDATA[SELECT ID FROM ACTIVITY where rownum = 1]]></db:parameterized-query>
</db:select>
</poll>
<logger message="Current payload is #[payload]" level="DEBUG" category="mule.activity" doc:name="Logger"/>
<logger message="Current payload size is #[payload.size()]" level="DEBUG" category="mule.activity" doc:name="Logger"/>
<logger message="Current id is #[payload.ID]" level="DEBUG" category="mule.activity" doc:name="Logger"/>
</flow>

这是日志

[2015-03-18 13:13:36,875] DEBUG: Current payload is [{ID=1363230}]
[2015-03-18 13:13:36,881] DEBUG: Current payload size is 1
[2015-03-18 13:13:36,888] DEBUG: id is null

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

具有DB连接器的查询的返回有效负载始终是列表,无论是0,1还是n个元素。 你的MEL表达式假设它是一张地图:#[payload.ID] 您应该执行#[payload.get(0).ID]

之类的操作

然后我再建议你不要使用这个表格来访问地图

[payload.get(0).ID]

而是

[payload.get(0)[ 'ID']]

在第一个示例中,如果您在尝试访问地图的ID时出错,则错误并不总是描述性的。

HTH