从mule读取单行并在mule中转换为SOAP请求

时间:2014-09-02 07:35:47

标签: mule

我正面临一个问题。

要求是我有一个csv文件,应该转换为soap请求(soap consumer组件)。问题是一次性转换所有csv行。在我的情况下,soap请求无法处理一个请求中的所有行。它应该是多次通话。

我做的是,

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:ws="http://www.mulesoft.org/schema/mule/ws" xmlns:data-mapper="http://www.mulesoft.org/schema/mule/ee/data-mapper" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.5.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ws http://www.mulesoft.org/schema/mule/ws/current/mule-ws.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/ee/data-mapper http://www.mulesoft.org/schema/mule/ee/data-mapper/current/mule-data-mapper.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd">
    <ws:consumer-config name="Web_Service_Consumer1" wsdlLocation="CPAdministration_updated.wsdl" service="AdminService" port="AdminEndpoint" serviceAddress="http://localhost/FM/service/Hrportal?wsdlformule" doc:name="Web Service Consumer"/>
    <data-mapper:config name="CSV_To_Xml_UpdateUserRequest_" transformationGraphPath="csv_to_xml_updateuserrequest__2.grf" doc:name="CSV_To_Xml_UpdateUserRequest_"/>
    <flow name="soapFlow1" doc:name="soapFlow1">
        <file:inbound-endpoint path="E:/temp/mule" responseTimeout="10000" doc:name="File"/>
        <data-mapper:transform config-ref="CSV_To_Xml_UpdateUserRequest_" doc:name="CSV To Xml&lt;UpdateUserRequest&gt;"  />
        <logger message="Converted xml is here #[payload]" level="INFO" doc:name="Logger"/>
        <ws:consumer config-ref="Web_Service_Consumer1" operation="UpdateUser" doc:name="Web Service Consumer"/>
    </flow>
</mule>

1 个答案:

答案 0 :(得分:0)

实现此目的的一种方法是使用拆分器和聚合器。您的流程可能如下所示:

<flow name="soapFlow1" doc:name="soapFlow1">
    <file:inbound-endpoint path="E:/temp/mule" responseTimeout="10000" doc:name="File"/>
    <data-mapper:transform config-ref="CSV_To_Xml_UpdateUserRequest_" doc:name="CSV To Xml&lt;UpdateUserRequest&gt;"  />
    <logger message="Converted xml is here #[payload]" level="INFO" doc:name="Logger"/>
    <splitter expression="#[xpath('//item')]" doc:name="Splitter" enableCorrelation="ALLWAYS"/>
    <mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
    <ws:consumer config-ref="Web_Service_Consumer1" operation="UpdateUser" doc:name="Web Service Consumer"/>
    <message-chunk-aggregator failOnTimeout="true" doc:name="Message Chunk Aggregator"/>
</flow>

显然必须将xpath表达式更改为在您的情况下有意义的内容。