如何在mule-app.properties或配置xml中使用#[server.dateTime.weekOfYear]的值

时间:2013-12-20 13:34:34

标签: regex mule mule-studio mule-el mule-module-jpa

我正在从FTP下载文件。我能够下载具有已定义模式或已定义名称的文件,然后通过Java处理这些文件。

我面临的问题是我需要每周下载一个新文件。文件名与"constant-prefix-2013-W51.zip"类似。我目前的XML就是这样;

<ftp:inbound-endpoint 
    host="${ftp.host}" 
    port="${ftp.port}" 
    path="${ftp.pathInbound}" 
    user="${ftp.user}" 
    password="${ftp.password}" 
    responseTimeout="10000" 
    doc:name="KBB_FTP" >

    <file:filename-wildcard-filter pattern="MyFile-2013-W51.zip"/>

</ftp:inbound-endpoint>
  

流程参考:Mule: How to pass File from FTP to Java class in Mule ESB?

此代码成功下载所请求的文件。但我需要在文件模式中动态添加yearweek值。

我尝试过以下模式,但没有成功;

 1. pattern="MyFile-2013-W#[server.dateTime.weekOfYear].zip" 

 2. pattern="MyFile-2013-W${server.dateTime.weekOfYear}.zip"

我知道第二种模式完全错误,因为它不是.properties文件中定义的属性。我还在mule-app.properties中添加了一个像这样的属性

 calendar.weekOfYear=#[server.dateTime.weekOfYear]

并使用以下模式;

 3. pattern="MyFile-2013-W${calendar.weekOfYear}.zip"

这种方式都不起作用,我希望动态添加像2013这样的年份值和像51这样的周值,这在任何情况下都不会发生。追加到fileName的值仅在字符串模式之上,而不是任何数字..

2 个答案:

答案 0 :(得分:1)

file:filename-wildcard-filter不支持MEL表达式。请改用expression-filter,如下所示:

<message-filter throwOnUnaccepted="false">
    <expression-filter
        expression="#[message.outboundProperties.originalFilename == 'MyFile-2013-W'+server.dateTime.weekOfYear+'.zip']" />
</message-filter>

答案 1 :(得分:0)

使用表达式过滤器#[server.dateTime.getWeekOfYear()]。zip 您可以使用此表达式并自定义时间格式。