【问题标题】:Expected return type java.lang.Iterable预期返回类型 java.lang.Iterable
【发布时间】:2016-01-12 17:15:58
【问题描述】:

如何将 type=java.lang.String 转换为 type=java.lang.Iterable,因为批处理步骤(流程记录)需要 java.lang.Iterable 类型。注意:输入是一个 xml 文件,而 mule 流是一个批处理作业。

当 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>

在记录器中,它在设置有效负载条件后打印“org.mule.api.processor.LoggerMessageProcessor: XML Record - net.sf.saxon.dom.DOMNodeList@57d263b4”。我们的要求是将xml记录转换为JSON并写入AMQP。

【问题讨论】:

    标签: mule


    【解决方案1】:

    那是因为分离器。如果您只想在批处理作业之前收集/迭代,请使用 set-payload:

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

    无论节点数量多少,这都应该可以工作。

    【讨论】:

    • 感谢瑞恩的建议。我已经用代码 sn-p 更新了这个问题。在设置有效负载条件之后,当我尝试记录输出时,它以 DOMNodeList 类型出现。您能否建议如何将其转换为 JSON?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多