我有一个ServiceFlow和一个FileFlow。一旦ServiceFlow(Flow1)被触发,FileFlow(Flow2)应该获取所有文件并处理它们。
在Flow2中停止初始状态仅在Mule服务器启动时首次工作,即第一次触发执行。一旦流程到达第一个触发器,如果我尝试在file:inbound-endpoint
中保留一些文件,它就会开始处理文件。
但我的方案仅基于每个触发器,因此第二个文件必须选择该文件。请帮我解决如何在Flow2中控制它。
我使用以下代码
<flow name="serviceFlow" doc:name="Flow1">
<http:inbound-endpoint exchange-pattern="request-response"
host="localhost" port="8081" doc:name="HTTP" contentType="text/xml"
mimeType="text/xml" />
<set-payload value="'Started Processing'" doc:name="Set Payload" />
<async doc:name="Async">
<expression-component doc:name="Expression">
app.registry.FileFlow.start();
</expression-component>
</async>
</flow>
<flow name="FileFlow" doc:name="Flow2" initialState="stopped" >
<file:inbound-endpoint responseTimeout="10000" doc:name="File" path="C:\Users\Desktop\IN"/>
<batch:execute name="businessBatch1" doc:name="Batch Execute"/>
</flow>
使用Mule版本:3.5.1
答案 0 :(得分:2)
我可以建议你在第二个流程结束时放置一个<expression-component doc:name="Expression">app.registry.FileFlow.stop();</expression-component>
,这样在第二个流程执行后它将再次使其处于初始状态&#34;停止&#34;这样你就可以在没有恐惧的情况下再次触发第一个流程,因为flow2已停止。
<flow name="serviceFlow" doc:name="Flow1">
<http:inbound-endpoint exchange-pattern="request-response"
host="localhost" port="8081" doc:name="HTTP" contentType="text/xml"
mimeType="text/xml" />
<set-payload value="'Started Processing'" doc:name="Set Payload" />
<async doc:name="Async">
<expression-component doc:name="Expression">
app.registry.FileFlow.start();
</expression-component>
</async>
</flow>
<flow name="FileFlow" doc:name="Flow2" initialState="stopped" >
<file:inbound-endpoint responseTimeout="10000" doc:name="File" path="C:\Users\Desktop\IN"/>
<batch:execute name="businessBatch1" doc:name="Batch Execute"/>
<expression-component doc:name="Expression">
app.registry.FileFlow.stop();
</expression-component>
</flow>