预期的返回类型为java.lang.Iterable

时间:2016-01-12 17:15:58

标签: mule

如何将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。

1 个答案:

答案 0 :(得分:0)

那是因为分裂者。如果您只想在批处理作业之前进行集合/迭代,则jsut使用set-payload:

<set-payload
    value="#[xpath3('/*:Report_Data/*:Report_Entry', payload, 'NODESET')]" />

<batch:execute name="test" />

无论节点数量多少,都应该这样做。