2014-09-12 1 views
0

Я использую Mule версии 3.5.1. Я пытаюсь запустить пакетные записи. Фаза ввода (входящий файл) успешно завершена, но фаза обработки ошибочна, тогда как у меня есть только datamapper внутри фазы записи процесса (я также проверил xsd на xml, он выглядит правильно).Mule ESB: Простой пакетный поток мула, получающий ошибку при обработке записи statge

<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".

Пожалуйста, дайте мне знать ваши предложения. Заранее спасибо.

ответ

1

Я думаю, вам нужно изменить его из filestream на объект, который может использовать datamapper. У меня нет образца, настроенного для тестирования, но я бы начал с добавления трансформатора File To String перед datamapper.

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> 

 Смежные вопросы

  • Нет связанных вопросов^_^