0

我正在使用 Mule 版本 3.5.1。我正在尝试运行批处理记录。输入阶段(文件入站)已成功完成,但处理阶段出错,而我在进程记录阶段内只有数据映射器(我还针对 xml 验证了 xsd,它看起来是正确的)。

   <data-mapper:config name="XML_To_CSV" transformationGraphPath="xml_to_csv.grf" doc:name="XML_To_CSV"/>
  <batch:job name="businesslogicflowBatch1">
    <batch:threading-profile poolExhaustedAction="WAIT"/>
    <batch:input>
        <file:inbound-endpoint path="C:\Users\Desktop\IN" responseTimeout="10000" doc:name="File"/>
        <logger message="*******inputPhase:#[payload]******" level="INFO" doc:name="Logger"/>
    </batch:input>
    <batch:process-records>
        <batch:step name="Batch_Step">
            <data-mapper:transform config-ref="XML_To_CSV" doc:name="XML To CSV"/>
        </batch:step>
    </batch:process-records>
    <batch:on-complete>
        <logger level="INFO" doc:name="Logger"/>
    </batch:on-complete>
</batch:job>

请找出我的错误

.............
com.mulesoft.module.batch.engine.DefaultBatchEngine: Input phase completed
ERROR 2014-09-12 14:26:04,219 [[businesslogicflow].connector.file.mule.default.receiver.01]                    org.mule.exception.DefaultMessagingExceptionStrategy: 
Message:Object"org.mule.transport.file.ReceiverFileInputStream" not of correct type. It must be of type "{interface java.lang.Iterable,interface java.util.Iterator,interface org.mule.routing.MessageSequence,interface java.util.Collection}" (java.lang.IllegalArgumentException)  

我不确定要做什么来制作“ java.lang.interface 和 java.util.iterator ”。

请让我知道你的建议。预先感谢。

4

2 回答 2

1

我认为您需要将其从文件流更改为数据映射器可以使用的对象。我没有配置用于测试的示例,但我会首先在数据映射器前面添加一个文件到字符串转换器。

于 2014-09-12T15:01:48.690 回答
0

我已经通过以下方式解决了,因为我的输入是 xml,所以我已经将 xml 转换为 jaxb 对象。流程记录将期望集合或列表中的记录。使用 java 组件转换为 Arraylist。然后像往常一样,datamapper(pojo to csv)。请在下面找到配置

    <mulexml:jaxb-context name="JAXB_Context" packageNames="com.to" doc:name="JAXB Context"/>

<spring:beans>
    <spring:bean name="NoFactsBean" class="java.util.ArrayList" />
</spring:beans>

<data-mapper:config name="Pojo_To_CSV" transformationGraphPath="pojo_to_csv.grf" doc:name="Pojo_To_CSV"/>
  <batch:job name="businesslogicflowBatch1">
    <batch:threading-profile poolExhaustedAction="WAIT"/>
    <batch:input>
        <file:inbound-endpoint path="C:\Users\Desktop\IN" responseTimeout="10000" doc:name="File"/>
        <mulexml:jaxb-xml-to-object-transformer returnClass="com.to.envelop" jaxbContext-ref="JAXB_Context" doc:name="XML to JAXB Object"/>
        <component class="com.GenerateList" doc:name="Java"/>
    </batch:input>
    <batch:process-records>
        <batch:step name="Batch_Step" accept-expression="#[getFirstException()]" accept-policy="ALL">
            <data-mapper:transform config-ref="Pojo_To_CSV" doc:name="Pojo To CSV"/>

            <file:outbound-endpoint path="C:\Users\Desktop\OUT" outputPattern="#[function:dateStamp]_convert.csv" responseTimeout="10000" doc:name="File"/>
        </batch:step>
    </batch:process-records>
    <batch:on-complete>
        <logger level="INFO" doc:name="Logger"/>
    </batch:on-complete>
</batch:job> 
于 2014-09-13T07:47:34.503 回答