Детали задачи
-
История
-
Решение: Won't Do
-
Medium
-
Не заполнено
-
Не заполнено
-
Не заполнено
Описание
Цель - добавить возможность настроить синхронизацию для вырузки данных с FTP сервера в alfresco.
- Создать новый data source для микросервиса интеграции - передача данных с FTP сервера
Конфиг:
uri: String - адрес ftp сервера credentials: Credentials (логин и пароль для подключения)
2. Добавить новую синхронизацию file-sync
Конфиг:
datasource: Datasource из п.1 sourcePath: String - путь до папки в пределах источника данных fileNameTimePattern: String - regexp для получения таймштампа, по которому будет сортировка файлов commandType: String - тип команды, в которой будут отправлены данные файла commandTarget: String - приложение, в которое нужно отправить команду с файлом pediod: String (cron) - крон, по которому нужно проверять наличие новых файлов errorPolicy: Enum {NONE, STOP, QUEUE} - политика при получения ответа со статусом ERROR NONE - ничего не делаем. Просто пробуем импортировать файл снова и снова STOP - останавливаем импорт QUEUE - направляем проблемный файл в очередь кролика и идем дальше errorQueue: String - очередь, куда нужно отправить ошибочный файл с информацией об ошибке (используется если errorPolicy = QUEUE)
При старте синхронизации запускаем джобу, которая периодически опрашивает ftp сервер, загружает оттуда новые файлы и отправляет в виде команды в целевое приложение. Формат команды:
filename: String, created: Instant, modified: Instant, content: byte[]
Если в ответ на команду приходит {“status“: “OK“}, то файл успешно обработался и мы перемещаем курсор дальше. Курсор нужен чтобы не обрабатывать файлы, которые уже обработаны.
Если пришел ответ {“status”:”ERROR”}, то действуем согласно errorPolicy
Если ничего не пришло или что-то, что не соответствует статусам выше, то считаем что файл не обработан и пробуем его еще раз импортировать в следующей итерации
Если задан параметр fileNameTimePattern, то курсор должен вычисляться на базе имени файла. Если не задан, то берем дату создания файла.
Порядок импорта должен определяться отсортированным значением маркера (из имени файла или даты создания).