2017-12-15 5 views
0

반복 메시지 + 집계 조정자 의 집계 메시지가 계속되는 동안 계속할 수 있습니까? 결과 메시지를 계속 사용할 수 있습니까?종료 집계 * 후 집계 반복 * (continueParent 없음) - WSO2

또는 집계 중재자 내부에서 모든 처리를 수행하고 continueParent 속성을 사용하여 다른 방식으로 처리를 계속해야합니까?

내가 달성하고자하는 것의 샘플 코드. 반복적 인 순서를 따르는 어떤 것도 실행할 수 없다는 것에 주목하십시오 (그리고 심지어 continueParent = "true"를 사용하더라도, 페이로드 기록 된 벨로우즈는 반복 된 + 집계 된 페이로드가 아니며, 반복 전에 거기에 있었던 페이로드라는 것을 알 수 있습니다) ... : 집계로 반복 처리 + 집계 중재자 후 흐름을 계속

<?xml version="1.0" encoding="UTF-8"?> 
<sequence name="AggregationSequence" trace="disable" xmlns="http://ws.apache.org/ns/synapse"> 
    <aggregate id="ENTRY_ITERATOR"> 
     <completeCondition> 
      <messageCount max="-1" min="-1"/> 
     </completeCondition> 
     <onComplete> 
      <log> 
       <property name="LOG..." value="Aggregation completed"/> 
      </log> 
      <log level="full"/> 
     </onComplete> 
    </aggregate> 
</sequence> 

내 EI 버전은 6.1.1

답변

1

입니다 것이 가능 :

<iterate description="" expression="//n1:Entry" id="ENTRY_ITERATOR" 
xmlns:n1="http://ws.apache.org/ns/synapse"> 
<target> 
    <sequence> 
     <sequence key="myValidationSequence"/> 
     <log> 
      <property expression="$ctx:RESULT" name="Validation Result:"/> 
     </log> 
     <switch source="$ctx:RESULT"> 
      <case regex="S"> 
       <drop/> 
      </case> 
      <case regex="C"> 
       <payloadFactory media-type="xml"> 
        <format> 
         <Entry> 
          <product_code>$1</product_code> 
         </Entry> 
        </format> 
        <!-- this comes from the validationSequence --> 
        <args> 
         <arg evaluator="xml" expression="$ctx:product_code"/> 
        </args> 
       </payloadFactory> 
      </case> 
      <default> 
       <log> 
        <property name="Warning: " value="Could not identify validation code."/> 
       </log> 
      </default> 
     </switch> 
     <log level="full"/> 
     <property name="RESPONSE" value="true"/> 
     <sequence key="AggregationSequence"/></sequence> 
</target> 
</iterate> 
<log> 
    <property name="INFO" value="I can't get here. Why?"/> 
</log> 
<log level="full"/> 

여기에 총 순서입니다 메시지가 표시되므로 결과 메시지를 계속 사용할 수 있습니까? - 그래, 그게 중재자와 가능한 모두를 사용하는 생각이야.

다음과 같은 방법으로 작동됩니다.

<iterate description="" expression="//n1:Entry" id="ENTRY_ITERATOR" 
xmlns:n1="http://ws.apache.org/ns/synapse"> 
<target> 
    <sequence> 
     <sequence key="myValidationSequence"/> 
     <log> 
      <property expression="$ctx:RESULT" name="Validation Result:"/> 
     </log> 
     <switch source="$ctx:RESULT"> 
      <case regex="S"> 
       <drop/> 
      </case> 
      <case regex="C"> 
       <payloadFactory media-type="xml"> 
        <format> 
         <Entry> 
          <product_code>$1</product_code> 
         </Entry> 
        </format> 
        <!-- this comes from the validationSequence --> 
        <args> 
         <arg evaluator="xml" expression="$ctx:product_code"/> 
        </args> 
       </payloadFactory> 
      </case> 
      <default> 
       <log> 
        <property name="Warning: " value="Could not identify validation code."/> 
       </log> 
      </default> 
     </switch> 
     <log level="full"/> 
     <property name="RESPONSE" value="true"/> 
</target> 
</iterate> 

    <aggregate id="ENTRY_ITERATOR"> 
     <completeCondition> 
      <messageCount max="-1" min="-1"/> 
     </completeCondition> 
     <onComplete> 
      <log> 
       <property name="LOG..." value="Aggregation completed"/> 
      </log> 
      <log level="full"/> 
     </onComplete> 
    </aggregate> 

작업 프로세스를 더 잘 이해하려면 반복 조정자와 집계 조정자의 아래 문서를 참조하십시오.

https://docs.wso2.com/display/EI611/Iterate+Mediator https://docs.wso2.com/display/EI611/Aggregate+Mediator