以下是我的骡子流的一部分
<until-successful objectStore-ref="ObjStreuntil" maxRetries="60"
secondsBetweenRetries="60" doc:name="Until Successful" failureExpression="# [payload.state == 'Queued' || payload.state == 'InProgress']">
<processor-chain doc:name="Processor Chain">
<sfdc:batch-info config-ref="Salesforce" doc:name="Salesforce">
<sfdc:batch-info ref="#[payload]"/>
</sfdc:batch-info>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
</processor-chain>
</until-successful>
我希望我的流程等到我的批处理完成后再继续下一个处理器。我相信使用处理链会得到结果。
但这种流程并不奏效。我知道直到成功完成3.5中的同步是否有任何方法可以在3.4.0上实现这一点
任何建议都会有很大的帮助
提前谢谢
答案 0 :(得分:1)
这已在这里得到解答:to make until successful synchronous in mule 3.4
但是,如果您只想在批处理完成后执行某些操作,则需要再次检查状态,与failExpression相反。
类似的东西:
<flow name="main">
<until-successful objectStore-ref="ObjStreuntil"
maxRetries="60" secondsBetweenRetries="60" doc:name="Until Successful"
failureExpression="#[payload.state == 'Queued' || payload.state == 'InProgress']">
<flow-ref name="checkBatch" />
</until-successful>
</flow>
<sub-flow name="checkBatch">
<sfdc:batch-info config-ref="Salesforce" doc:name="Salesforce">
<sfdc:batch-info ref="#[payload]" />
</sfdc:batch-info>
<choice>
<when expression="#[payload.state == 'Completed'">
<!-- Do what needs to be done next -->
</when>
<otherwise>
<!-- Do nothing so the until-successful retries -->
</otherwise>
</choice>
</sub-flow>
正如另一篇文章所描述的那样,如果你真的需要返回主流,你可以使用它与请求 - 回复。您可以将该成功置于vm端点后面,并将其用作“请求”阶段,并将上面的when表达式写入回复队列。