Обмен между кассой и кассовым сервером осуществляется в автоматическом режиме. Инициатором обмена, как правило, выступает кассовый сервер, который оповещает кассу о необходимости принять изменения справочников или выгрузить данные о продажах. В отдельных случаях касса может инициировать выгрузку продаж.
Кассовый сервер хранит информацию о справочниках, которые переданы на кассы в магазине. При получении новых данных кассовый сервер вычисляет разницу и передает на кассу только измененную информацию. Сервер запрашивает продажи с кассы в соответствии с расписанием. Для новой кассы, у которой не было продаж, запрашивается информация за последние сутки.
Взаимодействие между кассой и сервером осуществляется через механизм очередей. Для осуществления взаимодействия необходимо настроить параметры кассы на сервере и клиентский модуль на кассе. На стороне кассы за взаимодействие отвечает Sync-agent
.
artix-syncagent
.Настройка сервиса
Параметры работы сервиса на кассе задаются в конфигурационной файле /linuxcash/cash/sync/properties/cash.ini
в секции [
Properties]
(настройки в cash.ini
передаются с кассового сервера).
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
dept.broker.ip | строковый | IP-адрес кассового сервера | ||
dept.broker.port | целочисленный | Порт кассового сервера | ||
brokerconnectionheartbeat | целочисленный | Частота проверки доступности соединения до сервера во время подключения и забора сообщений из очереди КС | Значение параметра указывается в секундах. Если соединение потеряно, то подключение закроется и заблокированное (обрабатываемое) сообщение освободится и станет доступно для повторного считывания из очереди КС. | |
cash.code | строковый | ID кассового узла | Получается с кассового сервера при первичной стыковке. Используется в качестве значения идентификатора терминала при работе с модулями "Артикс:Бонус" и "Подарочные сертификаты" | |
storeid | строковый | ID магазина на кассовом сервере | Получается с кассового сервера при первичной стыковке | |
mode | строковый |
| Режим работы сервиса Sync-agent | По умолчанию cash |
unloadscript | строковый | Скрипт для выгрузки продаж | По умолчанию /linuxcash/cash/exchangesystems/exchangers/src/unload/service/cash/startReader.py | |
usequeueinupload | логический |
| Использовать очередь при загрузке справочников | По умолчанию
|
uploadscript | строковый | Скрипт для загрузки справочников напрямую в БД | По умолчанию Используется при прямой загрузке на КС, если | |
maxcountbackupfiles | целочисленный | Количество хранимых файлов бэкапов | По умолчанию сохраняются последние 30 файлов | |
actualcountdaysforbackupfiles | целочисленный | Количество дней, в течение которых файлы бэкапов остаются актуальными | По умолчанию | |
cashserverrestport | целочисленный | Порт кассового сервера | По умолчанию | |
dicturlhostcs | строковый | Адрес сервера для загрузки файла справочников | По умолчанию | |
dicturlportcs | целочисленный | Порт сервера для загрузки файла справочников | По умолчанию 80 | |
grpchostcs | строковый | Адрес сервиса GRPC | ||
grpcportcs | целочисленный | Порт сервиса GRPC | ||
grpccacertpath | строковый | Путь до корневого сертификата для отправки продаж по GRPC с использованием SSL. Сертификат GRPC сервиса должен быть подписан этим корневым сертификатом | ||
protocolversion | целочисленный |
| Версия протокола обмена с кассой | По умолчанию используется Версия протокола обмена с кассой указывается в веб-интерфейсе кассового сервера |
unloadsalesrequestthroughcs | логический |
| Отправка запроса на КС для выгрузки продаж | По умолчанию Значение настройки указывается в кассовом сервере в конфигурационном файле
Отправка кассой уведомления в виде REST-запроса позволит получить более целостное состояние документов продаж, так как КС при получении уведомления запросит данные, начиная со времени последнего чека, имеющегося в БД КС. Пример
На кассе в БД имеется 10 чеков. Настроена почековая выгрузка продаж, но по какой-то причине на КС доставлено не 10 чеков, а только 1, 2 . В том случае, если настройка имеет значение true КС запросит полные данные со времени последнего чека, т.е. со 2-го.
|
filequeueroot | строковый | Путь до корневой директории файл-очереди | По умолчанию | |
queuechunksize | целочисленный | Количество aif-объектов в одном сообщении файл-очереди | По умолчанию | |
httphostcs | строковый | Адрес HTTP-сервиса | ||
isdebugdictstatussend | логический |
| Отправлять в КЦ подробные статусы о прогрузке справочников | По умолчанию true |
isdebugsalestatussend
| логический |
| Отправлять в КЦ подробные статусы о выгрузке продаж | По умолчанию true |
errorsFilePath | строковый | Путь до файла-флага с количеством ошибок сервиса | По умолчанию не задано. Файл-флаг представляет собой json-объект вида: {"errorsCount": <количество_ошибок>} Если возникают новые ошибки в сервисе, то значение параметра |
[Properties] dept.broker.ip = 127.0.0.1 dept.broker.port = 5672 brokerconnectionheartbeat = 0 cash.code = _cash_8_99dec44a storeid = _shop_8_dac059e6 mode = cash unloadscript = /linuxcash/cash/exchangesystems/exchangers/src/unload/service/cash/startReader.py usequeueinupload = True uploadscript = /linuxcash/cash/exchangesystems/exchangers/src/upload/converter/aif.py maxcountbackupfiles = 30 actualcountdaysforbackupfiles = 30 cashserverrestport = 8080 dicturlhostcs = 127.0.0.1 dicturlportcs = 8080 grpchostcs = 127.0.0.1 grpcportcs = 10001 grpccacertpath = protocolversion = 5 unloadsalesrequestthroughcs = True filequeueroot = /linuxcash/cash/data/queues queuechunksize = 25000 httphostcs = 127.0.0.1 isdebugdictstatussend = True isdebugsalestatussend = True errorsFilePath =""
Настройка логирования сервиса задается:
- на кассе в конфигурационной файле
/linuxcash/cash/sync/properties/logging.conf
- на МКС в конфигурационном файле
/opt/sync/properties/logging.conf
Секция | Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|---|
[logger_sync] | level |
| Уровень логирования | По умолчанию INFO | |
[handler_fileHandler] | level |
| Уровень логирования | По умолчанию INFO | |
[handler_fileHandler] | args | Путь до хранения файлов-логов |
Самый детальный уровень логирования - DEBUG
, самый строгий - ERROR
. В зависимости от выбранного уровня в лог записывается информация, которая соответствует уровню, или строже.
Уровень логирования | Описание |
---|---|
ERROR | ошибка в приложении, приложение может работать дальше без возникновения проблем, причина проблемы может состоять в неправильных входных данных или доступе к внешним сервисам |
WARN | некритичная ошибка, приложение может работать дальше без возникновения проблем, вероятно одна из функций приложения дала сбой, который может быть исправлен |
INFO | важная информация о работе приложения, например, запуск/остановка приложения, использование конфигурационных файлов или аутентификация пользователя в системе |
DEBUG | отладочная информация работы приложения, например, технические данные, полученные при работе с внешними системами, или информация о вызове методов объектов, включая список параметров |
[loggers] keys=root,sync [handlers] keys=fileHandler [formatters] keys=loggerSyncFormatter [logger_root] level=INFO handlers=fileHandler [logger_sync] level=INFO handlers=fileHandler qualname=sync propagate=0 [handler_fileHandler] class=logging.handlers.WatchedFileHandler delay=False formatter=loggerSyncFormatter level=INFO args=('%(sync)s',) [formatter_loggerSyncFormatter] format=%(asctime)s %(thread)d %(levelname)-8s %(message)s %(module)5s(%(lineno)s)
Получение настроек с сервера
Внесение изменений в конфигурационный файл требуется только для изменения размеров очередей или количества резервных копий, остальные настройки получаются кассой с кассового сервера.
Параметры передаются на кассу при каждом сеансе связи, который инициирует сервер:
- при запросе продаж с кассового сервера,
- при выгрузке справочников с кассового сервера.
При замене параметров конфигурационный файл обновляется.
С сервера передаются параметры, которые предназначены для осуществления обмена и идентифицируют кассу на сервере:
- идентификаторы магазина и кассы,
- хост и порт для обращения к серверу по gRPC,
- хост и порт для обращения к серверу по HTTP.
При изменении параметров автоматически изменяется маршрутизация очередей.
grpcCaCertPath
, то настройка grpcHostCS
на кассе настраивается только вручную и при запросах с КС настройка grpcHostCS
не будет изменяться. Если настройка grpcCaCertPath
не указана, то поведение остается старым при запросах с КС автоматически изменится настройка grpcHostCS
, если она не соответствует IP-адресу КС.Обмен данными
Обмен между кассовым сервером и кассой
Обмен данными между кассовым сервером и кассой представляет собой процессы передачи справочников и данных продаж.
Загрузка справочников может осуществляться двумя способами:
- с использованием очереди при загрузке справочников,
- без использования очереди, напрямую в БД кассы.
Справочники из БД кассового сервера прогружаются на кассу по расписанию либо по требованию пользователя.
Загрузка справочников с использованием очереди на кассе
Для обмена данными с использованием очереди настройка useQueueInUpload
в конфигурационном файле /linuxcash/cash/sync/properties/cash.ini
должна принимать значение true
.
Для загрузки справочников необходимо, чтобы были запущены службы Sync-agent
, БД кассы.
При загрузке справочников с КС на кассу можно параллельно настраивать обмен АСТУ-касса.
Алгоритм обмена между кассовым сервером и кассой в случае использования очереди на кассе следующий:
- Направление запросов на выгрузку справочников осуществляется кассовым сервером.
- Справочники из БД кассового сервера помещаются в файловую систему и ставятся в очередь на выгрузку.
- Как только справочники появились в очереди, сервису
Sync-agent
с кассового сервера передаются ссылки на скачивание файлов-справочников. - После передачи на сервис
Sync-agent
ссылок файлы-справочники скачиваются и помещаются в очередьFile-Queue
на кассе. - Сервис
Nes
производит мониторинг файловой очереди на кассе, при появлении в ней справочников происходит их передача в БД кассы.
Загрузка справочников напрямую в БД кассы
Прямая загрузка в БД кассы позволяет загружать справочники большого объема, не ограничиваясь размерами очереди. В этом случае службы exchangers-upload
и nes
не используются напрямую и могут быть отключены, что позволяет экономить используемую оперативную память.
Обмен без использования очереди задается настройкой useQueueInUpload
в конфигурационном файле /linuxcash/cash/sync/properties/cash.ini
, которая в этом случае должна принимать значение false
. Скрипт загрузки справочников указывается в параметре uploadScript
.
Алгоритм обмена в этом случае будет следующий:
- Направление запросов на выгрузку справочников осуществляется кассовым сервером.
- Cправочники из БД КС помещаются в файловую систему и ставятся в очередь на выгрузку. Также отправляется сигнал на получение данных в
Sync-agent
на кассе. Sync-agent
, используя код службexchangers-upload
иnes
, загружает справочники в БД кассы.
Выгрузка продаж
Выгрузка продаж из БД кассы в БД кассового сервера происходит по закрытию смены, либо по запросу КС. Выгрузка продаж выполняется по скрипту unloadScript
в конфигурационном файле /linuxcash/cash/sync/properties/cash.ini
. В этом случае служба exchangers-unload
не используется напрямую и может быть отключена, что позволяет экономить используемую оперативную память.
Алгоритм обмена между кассой и кассовым сервером следующий:
- Направление запросов на выгрузку продаж осуществляется со стороны кассового сервера.
Sync-agent
, используяexchangers
, выполняет выгрузку и формирует файл продаж.- Далее
exchanger
преобразует файл и передает егоSync-agent
, который направляет объекты в сервисSales-loader
. - Сервис
Sales-loader
помещает полученные объекты в файловую систему. Кассовый сервер периодически проверяет файловую систему на наличие новых объектов и загружает их в БД КС.
Обмен между ЦКС и МКС
Обмен данными между ЦКС и МКС представляет собой процессы передачи справочников и данных продаж.
Справочники из БД ЦКС прогружаются в БД All на МКС по расписанию либо по требованию пользователя. В БД магазина на МКС справочники могут быть загружены посредством REST и SOAP сервисов.
Загрузка справочников с использованием очереди на МКС
Алгоритм обмена между ЦКС и МКС следующий:
- Из АСТУ в БД МКС загрузка справочников осуществляется через сервис
Exchanger
. - Сгенерированные справочники помещаются в очередь для последующей загрузки в БД МКС.
- ЦКС отправляет сигнал на получение данных в
Sync-agent
МКС. Sync-agent
получает справочники и отправляет их в очередьFile-Queue
на МКС.- Сервис
Nes
мониторит состояние очереди на МКС и при появлении в ней справочников загружает их в БДAll
на МКС.
Выгрузка продаж МКС-ЦКС
Выгрузка продаж из БД МКС в БД ЦКС происходит по расписанию или запросу ЦКС.
Алгоритм обмена между МКС и ЦКС по протоколу 3 (thrift) следующий:
- ЦКС посылает сигнал на выгрузку продаж в
Sync-agent
. Sync-agent
используяexchangers
выполняет выгрузку и формирует файл продаж.Sync-agent
направляет полученные объекты в сервисSales-loader
на ЦКС.- Данные из очереди на ЦКС загружаются в БД ЦКС.
Подробнее о выгрузке продаж с МКС на ЦКС по протоколу 4 (grpc) можно прочитать в разделе "Особенности загрузки продаж по протоколу GRPC".
Выгрузка продаж касса - МКС - ЦКС
Выгрузка продаж с кассы на ЦКС инициируется каждый раз, когда продажи запрашиваются магазинным или центральным кассовым сервером у кассовой программы по расписанию либо по запросу пользователя. Выгрузка продаж может выполняться в БД МКС или одновременно в БД ЦКС и БД МКС.
Алгоритм обмена между кассой, МКС и ЦКС по протоколу 3 (thrift) следующий:
- Сигнал на выгрузку продаж в
Sync-agent
посылается с МКС вручную или по расписанию. Sync-agent
на кассе, используя сервисExchangers
, выполняет выгрузку и формирует файл продаж.Sync-agent
направляет полученные объекты в сервисSales-loader
на МКС.- Данные из
Sales-loader
загружаются в БД МКС и отправляются в сервисSales-loader
на ЦКС.
Подробнее о выгрузке продаж с МКС на ЦКС по протоколу 4 (grpc) можно прочитать в разделе "Особенности загрузки продаж по протоколу GRPC".
Логирование и резервные копии
Журнал обращений к Sync-agent
сохраняется в файл:
/linuxcash/logs/current/sync.log
на кассе,/opt/sync/logs/sync.log
на МКС.
Информация, которая передается во время сеанса обмена, архивируется и сохранятся в директории:
/linuxcash/cash/sync/backup
на кассе,/opt/sync/backup
на МКС.
Количество резервных копий и период хранения задается в конфигурационном файле:
/linuxcash/cash/sync/properties/cash.ini
на кассе,/opt/sync/properties/cash.ini
на МКС.