Mule ESB: простой пакетный поток Mule выдает ошибку при обработке статуса записи

Я использую Mule версии 3.5.1. Я пытаюсь запустить пакетные записи. Фаза ввода (входящий файл) успешно завершена, но фаза обработки не выполняется, тогда как у меня есть только datamapper внутри фазы записи процесса (я также проверил 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)  

Я не уверен, что нужно для создания "java.lang.interface и java.util.iterator".

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


person star    schedule 12.09.2014    source источник


Ответы (2)


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

person SteveS    schedule 12.09.2014

Я решил следующее: поскольку мой ввод - 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> 
person star    schedule 13.09.2014