Загрузка справочников на кассовый сервер производится в несколько этапов:

  1. Передача справочников из АСТУ в исходную директорию на КС.
  2. Перенесение справочников из исходной директории в рабочую директорию.
  3. Конвертирование справочников из исходного формата в AIF.
  4. Помещение объектов в очередь.
  5. Загрузка объектов из очереди в базу данных кассового сервера.

Исходная директория для загрузки справочников на КС задается через веб-интерфейс кассового сервера индивидуально для каждого формата обмена.  

Загрузка справочников в рабочую директорию кассового сервера осуществляется посредством Exchanger. Для выполнения загрузки справочников на КС должен быть запущен сервис /etc/default/exchangers-upload. Сервис устанавливается и запускается автоматически вместе с кассовым сервером.

Сервис Exchanger конвертирует полученные файлы в формат AIF, передает сервису Sync-agent, который отправляет полученные файлы сервису Sales-loader. Сервис Sales-loader помещает файлы в файловую систему. Кассовый сервер извлекает справочники из файловой системы и загружает их в БД. 

Настройка обмена через файловую систему

Настройка сервиса обмена через файловую систему осуществляется в конфигурационном файле /opt/exchangers/config/cs/exchangers.ini в секции [UPLOAD].

НаименованиеТип данныхВозможные значенияОписаниеПримечания

poolProcessSize

целочисленныйцелое положительное число

Количество процессов


timeoutFlagFind

целочисленныйцелое положительное число

Период сканирования данных, в секундах


nodeGetter

строковый
  • cs20
  • cs22
  • cs23
  • cs30

Модуль для получения нод. Ноды представляет собой совокупность узлов дерева магазинов и групп

  • Значение cs20 используется с версией КС CashServer2.0
  • Значение cs22 совместимо с КС CashServer2.0 сборки 383 и выше
  • Значение cs23 используется с версией КС CashServer2.3
  • Значение cs30 совместимо с КС CashServer3.0

timeoutNodeReread

целочисленныйцелое положительное число

Интервал перечитывания нод, по истечении которого будут обновляться все ноды, в секундах

При перечитывании нод получается дерево групп и магазинов

maxCountBackupFiles

целочисленныйцелое положительное числоМаксимальное количество архивов запросов для одного магазина в бэкап директорииУстаревшие архивы удаляются. При значении 0 настройка не учитывается

actualCountDaysForBackupFiles



Максимальное количество дней актуальности архивов в директории резервного копированияУстаревшие архивы удаляются. При значении 0 настройка не учитывается

stopConvertIfBadDict

логический
  • true
  • false

Останавливать конвертирование для магазина, у которого произошла ошибка при конвертировании справочника:

  • при значении true справочники с ошибками сохраняются в рабочей директории до удаления,
  • при значении false справочники с ошибками перемещаются в директорию, заданную в параметре badDictsDirectory.

badDictsDirectory



Директория для сохранения справочников, при обработке которых произошли ошибки


Пример настройки
[UPLOAD]
; Количество процессов
poolProcessSize = 2

; Период сканирования данных. Задается в секундах
timeoutFlagFind = 20

; Модуль для получения нод
nodeGetter = cs30

; Период перечитывания нод. Задается в секундах
timeoutNodeReread = 300

; Максимальное количество архивов для одного магазина в бэкап директории (устаревшие архивы будут удаляться)
; Если указать значение 0, то данная настройка учитываться не будет
maxCountBackupFiles = 30

; Количество дней актуальности архивов для одного магазина в бэкап директории (устаревшие архивы будут удаляться)
; Если указать значение 0, то данная настройка учитываться не будет
actualCountDaysForBackupFiles = 30

; Останавливать конвертирование для магазина, у которого произошла ошибка при конвертировании справочника
stopConvertIfBadDict = True

; Директория для сохранения справочников, при обработке которых произошли ошибки. 
; Справочники с ошибками будут перемещаться в указанную директорию только если установлено stopConvertIfBadDict = false.
; Если установлено stopConvertIfBadDict = true, то справочники с ошибками будут оставаться в рабочей директории, пока их не удалят
badDictsDirectory = /opt/exchangers/badDicts

Передача в АСТУ статусов загрузки справочников

Для оповещения АСТУ о ходе загрузки через файловую систему реализована возможность передачи в АСТУ статусов загрузки справочников. Для этого необходимо:

  1. Добавить скрытые настройки в конфигурационный файл opt/artixcs-rest/application.properties.

    1. Для параметра core.exchange.dictstatus.send.external.notifies установить значение true.
    2. Для параметра core.exchange.dictstatus.host указать хост.

    3. Для параметра core.exchange.dictstatus.port указать порт.

    НаименованиеТип данныхВозможные значенияОписаниеЗначение по умолчанию
    core.exchange.dictstatus.send.external.notifiesлогический
    • true
    • false
    Включение отправки статусов прогрузки справочников во внешний сервис (из exchangers-rest-service)false
    core.exchange.dictstatus.hostстроковый
    Хост для подключения к внешнему сервису, принимающему статусы прогрузки справочниковlocalhost
    core.exchange.dictstatus.portцелочисленный
    Порт для подключения к внешнему сервису, принимающему статусы прогрузки справочников8998
    Пример настройки
    core.exchange.dictstatus.send.external.notifies = true
    core.exchange.dictstatus.host = 111.111.11.111
    core.exchange.dictstatus.port = 8998
  2. Настроить сервис exchangers-rest-service.
    Сервис exchangers-rest-service предназначен для формирования файла с обновляемой информацией о статусах загрузки справочника.

    Файл с информацией о статусах создается в директории, указанной в настройках веб-интерфейса кассового сервера "Директория для сохранения информации о прогрузке справочников" в разделе "Форматы файлового обмена". Для каждого формата обмена директория задается индивидуально.

    Для начала работы с сервисом exchangers-rest-service необходимо вручную создать пустой файл /etc/default/exchangers-rest-service:

    touch /etc/default/exchangers-rest-service

    Для запуска сервиса необходимо выполнить команду:

    systemctl start exchangers-rest-service

    Для проверки статуса сервиса необходимо выполнить команду:

    systemctl status exchangers-rest-service
  • No labels