在mule 3.4中进行同步直到成功

在mule 3.4中进行同步直到成功,mule,mule-el,mule-component,Mule,Mule El,Mule Component,下面是我的骡子流程的一部分 <until-successful objectStore-ref="ObjStreuntil" maxRetries="60" secondsBetweenRetries="60" doc:name="Until Successful" failureExpression="# [payload.state == 'Queued' || payload.state == 'InProgress']">

下面是我的骡子流程的一部分

     <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版synchronos成功实现之前,有没有办法在3.4.0版上实现这一点

任何建议都会大有帮助


提前谢谢

这里已经回答了这个问题:

但是,如果只想在批处理完成时执行某些操作,则需要再次检查状态,与failureExpression相反

比如:

<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>

正如另一篇文章所描述的,如果您真的需要返回到主流程,您可以将其与请求-回复一起使用。您可以将until successful放在vm端点后面,并将其用作“请求”阶段,并将上面的when表达式写入应答队列。

最近回答了这个问题: