Mule ESB:无法控制从flow1到flow2的流量

时间:2014-09-13 13:56:52

标签: mule mule-studio mule-el mule-component

我有一个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

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>