如何在一个代理服务中使用迭代中介和聚合中介

时间:2015-07-08 17:40:34

标签: xml xslt wso2 xslt-2.0 wso2esb

输入XML

<Haer>
  <Hello>mani</Hello>
  <Hello>kishore</Hello>
</Haer>

ProxyService

<inSequence>
   <iterate expression="//Haer/Hello" attachPath="//Haer" preservePayload="true" sequential="true" continueParent="false">
       <target>
       .
       . 
       .
       .
       </target>
   </iterate>
</inSequence>
<outSequence>
   <property name="ROOT">
       <Haer></Haer>
   </property>
   <aggregate id="mm">
    <completeCondition timeout="">
    <messageCount min="-1" max="-1"/>
    </completeCondition>
    <onComplete expression="//Haer/Hello" enclosingElementProperty="ROOT">
    <send/>
    </onComplete>
   </aggregate>
</outSequence>

MyRequirement:

Upto Iterate mediator它工作正常。我根据输入XML得到两个分裂的消息。 1)

  <Haer>
     <Hello>mani</Hello>
  </Haer>

2)

  <Haer>
    <Hello>kishore</Hello>
  </Haer>

但我想要的是获取与最终响应相同的SameInput XML。消息将被发送到'Iterate Mediator'的目标,但之后我无法将这些拆分的XML消息作为输入传递给'AggregateMediator'。所以,请建议我一种方法,无论是通过添加额外的代理服务或序列来使这些分裂的msgs作为输入传递给outSequence的'Aggregate Mediator'并获得所需的响应。 如果目前代码中有任何错误,请告诉我

如果需要进一步说明,请发表评论。谢谢。

1 个答案:

答案 0 :(得分:0)

在迭代的目标内,添加:

<header name="To" action="remove"/>
<property name="RESPONSE" value="true"/>
<property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
<sequence key="AggSequence"/>

将outSequence的内容移动到名为“AggSequence”

的序列中