如何从mule';拆分器';组件?
我知道拆分器是mule中的异步循环 我想用一些条件来打破它。有办法吗 或 可以对每个组件使用如何从mule';拆分器';组件?,mule,Mule,我知道拆分器是mule中的异步循环 我想用一些条件来打破它。有办法吗 或 可以对每个组件使用?我应该拖动哪个组件来打破循环 我正在使用xpath拆分xml以进行循环。拆分器为您指定的集合中的每个项创建单独的消息。如果要阻止处理其中一些项目,请在拆分器后使用 或者,您可以创建更复杂的xpath,以仅返回要处理的项。例如,/order/item[position()
?我应该拖动哪个组件来打破循环
我正在使用xpath
拆分xml以进行循环。拆分器为您指定的集合中的每个项创建单独的消息。如果要阻止处理其中一些项目,请在拆分器后使用
或者,您可以创建更复杂的xpath,以仅返回要处理的项。例如,/order/item[position()<4]
只返回文档中的前三个item节点
如果您确实希望“中断”并确保集合中不再处理其他项,则可以在集合的主体中生成异常。您的流的异常策略将立即被调用,不再处理任何项目。我也有同样的问题。当条件为真时,我想要打破的每个循环都有一个循环(流程相当复杂,但用几句话来说…)
我认为生成异常不是一个好主意。我所达到的最佳方法是在循环开始时对每个和过滤器表达式进行过滤
例如:
<flow name="break-foreach" processingStrategy="Queued_Asynchronous_Processing_Strategy">
<http:listener config-ref="HTTP_Sat" path="/loop " allowedMethods="GET" doc:name="HTTP"/>
<set-payload value="#[[0,1,2,3,4]]" doc:name="Set Payload"/>
<foreach collection="payload" doc:name="For Each">
<logger message="Iteration before filter: #[payload]" level="INFO" doc:name="Logger"/>
<expression-filter expression="#[payload<3]" doc:name="Expression"/>
<logger message="Iteration after filter: #[payload]" level="INFO" doc:name="Logger"/>
</foreach>
</flow>
当然,这不是中断,因为for-each一直在处理
Iteration before filter: 0
Iteration after filter: 0
Iteration before filter: 1
Iteration after filter: 1
Iteration before filter: 2
Iteration after filter: 2
Iteration before filter: 3
Iteration before filter: 4