在骡子流中间拾取特定文件

时间:2017-04-11 19:24:03

标签: mule

我有一个用例,我需要在流程中间从目录中获取特定文件。  我尝试使用下面的代码,但它没有成功。

        

我正在考虑的解决方法是检索所有文件,循环并匹配要拾取的文件。

还有其他办法吗?

谢谢, 拉吉

5 个答案:

答案 0 :(得分:0)

您可以使用骡子请求者来获取文件

答案 1 :(得分:0)

感谢Alex回复。我正在使用Mule Requester来获取文件。我的问题是拿起一个特定的文件。

例如 FILE1.TXT FILE2.TXT file3.txt file4.txt

在流程中间的运行时期间,例如我想选择file2.txt。使用regex-filter-patter,我得到了文件列表。只需通过在flowVars中设置特定文件并将其传递给Mule Requester或任何其他连接器来检查特定文件。

谢谢, 拉吉

答案 2 :(得分:0)

您可以通过多种方式在流程中读取文件 例如,使用Groovy脚本: -

<set-variable variableName="fileName" value="D:/temp/test2.txt" doc:name="Variable"/>
<scripting:component doc:name="GetFile">                                        
   <scripting:script engine="Groovy"><![CDATA[new File(flowVars.fileName).getText('UTF-8')]]></scripting:script>
</scripting:component>

或者使用Spring bean: -

<spring:bean id="myResource" class="org.apache.commons.io.IOUtils" factory-method="toString">
    <spring:constructor-arg value="file:///D:/temp/file2.txt" type="java.io.InputStream"/>
</spring:bean>

然后在流程中间阅读:

<set-payload value="#[app.registry.myResource]" doc:name="Set Payload"/>

第三种方式:您还可以使用以下内容读取中间文件: -

<set-variable variableName="fileName" value="file:///D:/temp/file2.txt" doc:name="Variable"/>
  <scripting:component doc:name="Script">
   <scripting:script engine="groovy"><![CDATA[
      muleContext.client.request(flowVars.fileName, eventContext.timeout)
        ]]></scripting:script>
 </scripting:component>

选择权在你自己:)

答案 3 :(得分:0)

您可以使用骡子请求者在流程中间选择文件。

答案 4 :(得分:0)

您可以通过将文件连接器流分离到另一个流并从父流引用它来解决此问题。分离文件连接器流时,请记住放置

file connector

作为入站端点。因此,只要您的父流(可能是HTTP入站端点)收到请求,您也可以访问它。此外,如果您希望HTTP端点提供文件路径,则可以定义流变量并将文件路径存储在其中。