Как использовать значение #[server.dateTime.weekOfYear] в mule-app.properties или конфигурации xml

Я скачиваю файлы с 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: Как передать File с FTP на класс Java в Mule ESB?

Этот код успешно загружает запрошенный файл. Но мне нужно добавить year а также week значение динамически в шаблоне файла.

Я пробовал следовать шаблонам, но безуспешно;

 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 ответа

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>

Используйте фильтр выражений #[server.dateTime.getWeekOfYear()]. ​​Zip, вы можете использовать это выражение и настроить свой формат времени.

Другие вопросы по тегам