Wso2esb wso2 esb聚合和响应扩展

Wso2esb wso2 esb聚合和响应扩展,wso2esb,aggregation,Wso2esb,Aggregation,我编写了一个代理来聚合来自不同DSS服务的消息,并将所有内容组合到一个响应中。代理配置如下所示 <?xml version="1.0" encoding="UTF-8"?> <proxy xmlns="http://ws.apache.org/ns/synapse" name="AggregateEmpMessageProxy" transports="https,http" statistics="disable" tr

我编写了一个代理来聚合来自不同DSS服务的消息,并将所有内容组合到一个响应中。代理配置如下所示

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="AggregateEmpMessageProxy"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <log level="full"/>
         <clone>
            <target>
               <sequence>
                  <payloadFactory media-type="xml">
                     <format>
                        <p:select_with_key_emp_id_operation xmlns:p="http://ws.wso2.org/dataservice">
                           <p:id>$1</p:id>
                        </p:select_with_key_emp_id_operation>
                     </format>
                     <args>
                        <arg xmlns:m="http://ws.wso2.org/dataservice"
                             evaluator="xml"
                             expression="//m:select_with_key_emp_id_operation/m:id"/>
                     </args>
                  </payloadFactory>
                  <header name="Action"
                          scope="default"
                          value="http://ws.wso2.org/dataservice/select_with_key_emp_id_operation"/>
                  <send>
                     <endpoint name="ID_Service">
                        <address uri="http://compute-1.amazonaws.com:9767/services/emp_id_DataService.HTTPEndpoint"/>
                     </endpoint>
                  </send>
               </sequence>
            </target>
            <target>
               <sequence>
                  <payloadFactory media-type="xml">
                     <format>
                        <p:select_with_key_emp_desig_operation xmlns:p="http://ws.wso2.org/dataservice">
                           <p:id>$1</p:id>
                        </p:select_with_key_emp_desig_operation>
                     </format>
                     <args>
                        <arg xmlns:m="http://ws.wso2.org/dataservice"
                             evaluator="xml"
                             expression="//m:select_with_key_emp_id_operation/m:id"/>
                     </args>
                  </payloadFactory>
                  <header name="Action"
                          scope="default"
                          value="http://ws.wso2.org/dataservice/select_with_key_emp_desig_operation"/>
                  <send>
                     <endpoint name="Exp_Service">
                        <address uri="http://compute-1.amazonaws.com:9767/services/emp_desig_DataService.HTTPEndpoint"/>
                     </endpoint>
                  </send>
               </sequence>
            </target>
            <target>
               <sequence>
                  <payloadFactory media-type="xml">
                     <format>
                        <p:select_with_key_emp_exp_operation xmlns:p="http://ws.wso2.org/dataservice">
                           <p:id>$1</p:id>
                        </p:select_with_key_emp_exp_operation>
                     </format>
                     <args>
                        <arg xmlns:m="http://ws.wso2.org/dataservice"
                             evaluator="xml"
                             expression="//m:select_with_key_emp_id_operation/m:id"/>
                     </args>
                  </payloadFactory>
                  <header name="Action"
                          scope="default"
                          value="http://ws.wso2.org/dataservice/select_with_key_emp_exp_operation"/>
                  <send>
                     <endpoint name="Desig_Service">
                        <address uri="http://compute-1.amazonaws.com:9767/services/emp_exp_DataService.HTTPEndpoint"/>
                     </endpoint>
                  </send>
               </sequence>
            </target>
         </clone>
      </inSequence>
      <outSequence>
         <aggregate>
            <completeCondition>
               <messageCount/>
            </completeCondition>
            <onComplete xmlns:s12="http://www.w3.org/2003/05/soap-envelope"
                        xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/"
                        expression="/s11:Envelope/s11:Body/child::*[position()=1] | /s12:Envelope/s12:Body/child::*[position()=1]">
               <send/>
            </onComplete>
         </aggregate>
      </outSequence>
   </target>
   <parameter name="enableMTOM">false</parameter>
   <description/>
</proxy>

$1
$1
$1
假的
我得到的答复是

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
   <soapenv:Body>
      <result xmlns="http://ws.wso2.org/dataservice">
         <id>1</id>
         <name>meeran</name>
      </result>
      <result xmlns="http://ws.wso2.org/dataservice">
         <designation>engineer</designation>
         <level>B2</level>
      </result>
      <result xmlns="http://ws.wso2.org/dataservice">
         <age>26</age>
         <exp>3</exp>
      </result>
   </soapenv:Body>
</soapenv:Envelope>

1.
米兰
工程师
地下二层
26
3.
但我的回答是,我正在寻找

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
       <soapenv:Body>
          <result xmlns="http://ws.wso2.org/dataservice">
             <id>1</id>
             <name>meeran</name>          
             <designation>engineer</designation>
             <level>B2</level>          
             <age>26</age>
             <exp>3</exp>
          </result>
       </soapenv:Body>
    </soapenv:Envelope>

1.
米兰
工程师
地下二层
26
3.

如何实现上述响应?在聚合中介之后,我应该使用什么中介。请提供帮助。

在aggregate/onComplete内部,在发送之前,您可以使用xslt中介,在xsl内部,您在结果节点上定义一个模板并复制其所有子节点