要在mule 3.4中成功同步

时间:2014-08-07 10:05:19

标签: 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']">
       <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上实现这一点

任何建议都会有很大的帮助

提前谢谢

1 个答案:

答案 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表达式写入回复队列。