2017-04-24 7 views
0

私がしたいことは、1つのシーケンス内で集約を使用して並列実行で反復を実装することです(コール/メディアを使用しません)。1つのシーケンス内で集約を使用して並列実行で反復を実装するWSO2 ESB5

アウトシーケンスで集約を実装すると、以下のように正しく動作します。

<inSequence> 
    <property name="it_count" scope="operation" type="STRING" value="0"/> 
    <iterate expression="//symbols/symbol"> 
     <target> 
      <sequence> 
       <log level="custom"> 
        <property name="ITERATING..." expression="$body"/> 
       </log> 
       <enrich> 
        <source type="inline"> 
         <out xmlns="">TEST</out> 
        </source> 
        <target xpath="//symbol"/> 
       </enrich> 
       <log level="custom"> 
        <property name="ITERATING..." expression="$body"/> 
       </log> 
       <loopback/> 
      </sequence> 
     </target> 
    </iterate> 
</inSequence> 

<outSequence> 
    <property name="response" scope="default"> 
     <response xmlns=""/> 
    </property> 
    <aggregate> 
     <completeCondition> 
      <messageCount max="-1" min="-1"/> 
     </completeCondition> 
     <onComplete enclosingElementProperty="response" expression="//out"> 
      <log level="custom"> 
       <property name="AGGREGATING..." expression="$body"/> 
      </log> 
     </onComplete> 
    </aggregate> 
    <send/> 
</outSequence> 

しかし、私は以下のように同じ順序でそれを行うのが難しいです。それはAggegateのログにも来ていません。私は様々な方法を試みましたが、まだ直面していました。

<inSequence> 
    <property name="it_count" scope="operation" type="STRING" value="0"/> 
    <iterate expression="//symbols/symbol"> 
     <target> 
      <sequence> 
       <log level="custom"> 
        <property name="ITERATING..." expression="$body"/> 
       </log> 
       <enrich> 
        <source type="inline"> 
         <out xmlns="">TEST</out> 
        </source> 
        <target xpath="//symbol"/> 
       </enrich> 
       <log level="custom"> 
        <property name="ITERATING..." expression="$body"/> 
       </log> 
       <loopback/> 
      </sequence> 
     </target> 
    </iterate> 
    <property name="response" scope="default"> 
     <response xmlns=""/> 
    </property> 
    <aggregate> 
     <completeCondition> 
      <messageCount max="-1" min="-1"/> 
     </completeCondition> 
     <onComplete enclosingElementProperty="response" expression="//symbol"> 
      <log level="custom"> 
       <property name="AGGREGATING..." expression="$body"/> 
      </log> 
     </onComplete> 
    </aggregate> 
    <respond/> 
</inSequence> 
<outSequence/> 

Iterate内でコール/メディエータを使用すると、私はこれを1つのシーケンスで行うことができます。しかし、私の場合、私はそこに1つを使用しません。 誰でもこれの手がかりを与えることができます。第二の場合

答えて

1

、反復仲介者に属性continueParent="true"を追加します(あなたはこの調停が反復伝達物質の後に停止する必要はありません)とループバックメディエーターを削除(アウトシーケンスには何も送信しない)

+0

くそー!私は逃しました。 Jean-Michelありがとうございました。 – namalfernandolk

関連する問題