Я создал процессор. Когда происходит сбой PutFile (из-за того, что файл уже существует), я хочу переименовать файл из myfile.JPG в myfile_1.JPG в myfile_2.JPG и так далее, пока PutFile не будет успешным. «myfile» не должен иметь подчеркивания где-либо в имени файла до тех пор, пока не произойдет эта обработка.
![nifi](https://i.imgur.com/hlA0JtZ.png)
Мой поток выглядит так: PutFile -> UpdateAttribute -> PutFile (loopped)
${filename:contains('_'):ifElse(
${filename:substringBeforeLast('_'):append('_'):append(${filename:substringAfterLast('_'):substringBefore('.'):plus(1)}):append('.'):append(${filename:substringAfter('.')})},
${filename:substringBefore('.'):append('_1.'):append(${filename:substringAfter('.')})}
)}
Пример входного имени файла: 2017-06-15-175053.JPG
Пример выходного имени файла: 2017-06-15-175053_1.JPG
Пример имени входного файла:2017-06-15-175053_1.JPG
Пример выходного файла: 2017-06-15-175053_2.JPG
Сначала я проверяю, существует ли "_" в имени файла (ожидается входное имя файлане содержит его до тех пор, пока не будет запущен мой процессор Имени Инкремента)
Если «_» существует, возьмите число между «_» и «.» и увеличьте его, если «_» не существует, добавьте «_».JPG "до конца.
Ожидаемые результаты: немедленное увеличение имени файла до успешного завершения PutFile.
Фактические результаты: через несколько минут после выполнения миллионов задач файл, наконец, переименовывается в"myfile_6.JPG "и я не уверен, почему так много итераций.