Как использовать значение #[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, вы можете использовать это выражение и настроить свой формат времени.