如何将type = java.lang.String转换为type = java.lang.Iterable作为批处理步骤(Process Records),期望java.lang.Iterable的类型。注意:输入是一个xml文件,而mule flow是一个批处理作业。
当xml只有一个“Report_Entry”记录时,会收到错误消息。对于“Report_Entry”的多个条目,流程工作正常。
<object-to-string-transformer doc:name="Object to String"/>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
<set-payload
value="#[xpath3('/*:Report_Data/*:Report_Entry', payload, 'NODESET')]" doc:name="Set Payload"/>
<logger message="XML Record - #[payload]" level="INFO" doc:name="Logger"/>
</batch:input>
<batch:process-records>
<batch:step name="Batch_Step1">
<json:object-to-json-transformer doc:name="Object to JSON"/>
<logger message="XML Record - #[payload]" level="INFO" doc:name="Logger"/>
<amqp:outbound-endpoint exchangeName="${amqp.exchangeName}" queueName="${amqp.queueName}" responseTimeout="10000" encoding="UTF-8" mimeType="application/xml" connector-ref="AMQP_Connector" doc:name="AMQP"/>
</batch:step>
</batch:process-records>
在记录器中,它在set-payload条件之后打印'org.mule.api.processor.LoggerMessageProcessor:XML Record - net.sf.saxon.dom.DOMNodeList@57d263b4'。我们的要求是将xml记录转换为JSON并写入AMQP。
答案 0 :(得分:0)
那是因为分裂者。如果您只想在批处理作业之前进行集合/迭代,则jsut使用set-payload:
<set-payload
value="#[xpath3('/*:Report_Data/*:Report_Entry', payload, 'NODESET')]" />
<batch:execute name="test" />
无论节点数量多少,都应该这样做。