我使用的是Mule版本3.5.1。我试图运行批处理记录。输入阶段(文件入站)已成功完成,但处理阶段错误,而我在进程记录阶段只有数据映射器(我还验证了xsd对xml,它看起来没错。)
<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)
我不确定要制作什么&#34; java.lang.interface和java.util.iterator &#34;
请告诉我你的建议。预先感谢。
答案 0 :(得分:1)
我认为你需要将它从文件流更改为datamapper可以使用的对象。我没有配置测试样本,但我首先在数据映射器前面添加一个File To String转换器。
答案 1 :(得分:0)
我已通过以下方式解决,因为我的输入是xml,我已将xml转换为jaxb对象。进程记录将期望集合或列表中的记录。使用java组件转换为Arraylist。然后像往常一样,datamapper(pojo到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>