0

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

使用骡版本:3.5.1

4

1 回答 1

2

我可以建议您将 a<expression-component doc:name="Expression">app.registry.FileFlow.stop();</expression-component>放在第二个流程的末尾,这样在执行第二个流程后,它将再次使其初始状态“停止”,这样您就可以再次触发第一个流程而无需担心,因为 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>
于 2014-09-13T15:43:40.097 回答