Обмен между кассой и кассовым сервером осуществляется в автоматическом режиме. Инициатором обмена, как правило, выступает кассовый сервер, который оповещает кассу о необходимости принять изменения справочников или выгрузить данные о продажах. В отдельных случаях касса может инициировать выгрузку продаж.
Кассовый сервер хранит информацию о справочниках, которые переданы на кассы в магазине. При получении новых данных кассовый сервер вычисляет разницу и передает на кассу только измененную информацию. Сервер запрашивает продажи с кассы в соответствии с расписанием. Для новой кассы, у которой не было продаж, запрашивается информация за последние сутки.
При добавлении новой кассы требуется выгрузить полный справочник, чтобы синхронизировать состояние кассы и кассового сервера. |
Взаимодействие между кассой и сервером осуществляется через механизм очередей. Для осуществления взаимодействия необходимо настроить параметры кассы на сервере и клиентский модуль на кассе. На стороне кассы за взаимодействие отвечает 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-запроса позволит получить более целостное состояние документов продаж, так как КС при получении уведомления запросит данные, начиная со времени последнего чека, имеющегося в БД КС.
| |
filequeueroot | строковый | Путь до корневой директории файл-очереди | По умолчанию | ||
queuechunksize | целочисленный | Количество aif-объектов в одном сообщении файл-очереди | По умолчанию | ||
httphostcs | строковый | Адрес HTTP-сервиса | |||
isdebugdictstatussend | логический |
| Отправлять в КЦ подробные статусы о прогрузке справочников | По умолчанию true | |
isdebugsalestatussend | логический |
| Отправлять в КЦ подробные статусы о выгрузке продаж | По умолчанию true |
[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 |
Настройка логирования сервиса задается:
/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) |
Внесение изменений в конфигурационный файл требуется только для изменения размеров очередей или количества резервных копий, остальные настройки получаются кассой с кассового сервера.
Параметры передаются на кассу при каждом сеансе связи, который инициирует сервер:
При замене параметров конфигурационный файл обновляется.
С сервера передаются параметры, которые предназначены для осуществления обмена и идентифицируют кассу на сервере:
При изменении параметров автоматически изменяется маршрутизация очередей.
Если указана настройка 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
.
Алгоритм обмена в этом случае будет следующий:
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
на МКС.