【发布时间】:2017-11-10 15:30:39
【问题描述】:
我让我的一个流程说“流程 A”处于“停止”状态作为初始状态。然后在另一个流程中说“流程 B”,使用 groovy 脚本或 MEL 表达式;我正在启动相同的“流程 A”。在“流程 A”结束时,我以编程方式停止流程。
现在,如果我再次通过“流 B”启动“流 A”,它会失败,说“流 A”已经启动;无法重启。
对此的任何解决方案。
我想随时开始我的流程,将初始状态保持为已停止,最后再次使用脚本停止流程。
代码如下:
<flow name="FlowB">
<poll doc:name="Poll">
<logger level="INFO" doc:name="Logger"/>
</poll>
<logger level="INFO" doc:name="Logger" message="triggered"/>
<scripting:component doc:name="Groovy">
<scripting:script engine="Groovy"><![CDATA[muleContext.registry.lookupFlowConstruct('FlowB').start()]]></scripting:script>
</scripting:component>
<logger level="INFO" doc:name="Logger"/>
<expression-component doc:name="Expression"><![CDATA[app.registry.FlowA.stop();]]></expression-component>
</flow>
<flow name="FlowA" initialState="stopped">
<sqs:receive-messages config-ref="Amazon_SQS__Configuration" doc:name="Amazon SQS (Streaming)"/>
<logger level="INFO" doc:name="Logger"/>
</flow>
我正在使用轮询器来启动流程 A。所以,如果我再次运行流程 B 来启动流程 A;它抛出一个异常。
【问题讨论】: