Загрузить изображение для проекта: 'Citeck Community'
  1. Citeck Community
  2. ECOSCOM-3979

New integration dataSource (FTP)

    XMLWordДля печати

Детали задачи

    • Icon: История История
    • Решение: Won't Do
    • Icon: Medium Medium
    • Wont_do 2021
    • Не заполнено
    • Не заполнено
    • Не заполнено

    Описание

      Цель - добавить возможность настроить синхронизацию для вырузки данных с FTP сервера в alfresco.

      1. Создать новый 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, то курсор должен вычисляться на базе имени файла. Если не задан, то берем дату создания файла.

      Порядок импорта должен определяться отсортированным значением маркера (из имени файла или даты создания).

      Вложенные файлы

        Активность

          Люди

            Не назначен Не назначен
            denis.rulev@citeck.ru Denis Rulev
            Голоса:
            0 Голосовать за эту задачу
            Наблюдатели:
            2 Начать наблюдение за этой задачей

            Даты

              Создано:
              Обновленo:
              Дата решения: