聚合后退出迭代中介*使用聚合消息*(没有 continueParent)-WSO2
Exit Iterate mediator after aggregation *with the Aggregated Message* (without continueParent) - WSO2
是否可以在迭代+聚合中介 之后继续使用 聚合消息,以便我可以继续使用生成的消息?
或者我是否必须在聚合中介内部进行所有处理并使用 continueParent 属性 以其他方式继续处理?
我正在努力实现的示例代码。请注意,我无法执行迭代序列以下的任何内容(即使我使用 continueParent="true",下面记录的有效载荷也不是迭代+聚合的有效载荷,事实证明它是在迭代)...:
<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></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"/>
这是聚合序列:
<?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
是否可以在使用聚合消息的迭代+聚合中介之后继续流程,以便我可以继续使用生成的消息? - 是的,这就是同时使用调解器的想法及其可能性。
下面的方法应该可行。
<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></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
是否可以在迭代+聚合中介 之后继续使用 聚合消息,以便我可以继续使用生成的消息?
或者我是否必须在聚合中介内部进行所有处理并使用 continueParent 属性 以其他方式继续处理?
我正在努力实现的示例代码。请注意,我无法执行迭代序列以下的任何内容(即使我使用 continueParent="true",下面记录的有效载荷也不是迭代+聚合的有效载荷,事实证明它是在迭代)...:
<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></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"/>
这是聚合序列:
<?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
是否可以在使用聚合消息的迭代+聚合中介之后继续流程,以便我可以继续使用生成的消息? - 是的,这就是同时使用调解器的想法及其可能性。
下面的方法应该可行。
<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></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