Project

General

Profile

Маршрут POS-BI-HOS

1. ПРОБЛЕМА: данные из POS не появляются в базе данных BI

Существует несколько возможных причин отсутствия данных в БД:
  1. банально, данные отсутствуют (например, не сделан z-отчёт на АЗС);
  2. на АЗС не работает сервис PosDataExtractor (остановлен, ошибки и т.д.)
  3. данные с АЗС пришли, но ожидают обработки в очереди. В некоторых случаях на это требуется время (при условии работоспособности "Message Router BI");
  4. данные с АЗС пришли, но в процесс обработки прошёл с ошибками и сообщение отправлено в соответствующую очередь .FAILED.;
  5. данные находятся в очереди на отправку на стороне АЗС, но не принимаются серверной стороной. Причин может также быть несколько:
    • физически отсутствует или плохая связь с удалённой станцией;
    • серверная сторона не устанавливает (принудительно обрывает) соединение. Напимер, исчерпан лимит коннектов или "зависший" коннект;

Для более детального анализа, рекоммендуется проделать следующие действия:

Проверить на сервере KMG-BI:

1. Удостовериться, что сервис "Message Router BI" активен.

2. ... и отсутствуют проблемы ([ERROR] или [WARN]) в соответствующем log файле:
C:\Program Files\Mastersoft\MasterETL\MessageRouter\log\BI\{EntityName}\Route.log

NB! надо иметь ввиду, что на сервере KMG-BI кроме основного сервиса Message Router присутствует дополнительный сервис "Message Router BI (bulk)" для массовой загрузки (вручную) пропущенных данных

3. Проверить количество сообщений в состоянии ожидания обработки в очередях ActiveMQ http:// BI_SERVER:8161/admin/queues.jsp
В случае "Number of messages pending" <> 0 смотрим пункт №2 "возможных причин отсутствия данных в БД"
Также, можно кликнуть на соответствующую очередь, чтобы просмотреть её содержимое.

NB! Для доступа к админской панели логин admin и пароль amqadmin.

Проверить на POS:

1. Проверить, что активен сервис "ActiveMQ".

2. Проверить, что активен сервис "POS Data Extractor" и отсутствуют [ERROR] или [WARN] в log файле:
C:\PosDataExtractor\log\PosDataExtractor.log

3. Проверить количество сообщений в состоянии ожидания обработки в очередях ActiveMQ POS http://localhost:8161/admin/queues.jsp
В случае "Number of messages pending" <> 0 удостоверяемся, что АЗС присутствует в списке текущих SSL соединений ActiveMQ BI http:// BI_SERVER:8161/admin/connections.jsp , а её IP адрес соответствует коду станции

4.: При помощи "Manager Console" проверить содержимое очереди "Регистры\ очередь ActiveMQ" и архива "Просмотр ДТЛ\ архив ActiveMQ".
Пустая очередь ActiveMQ означает, что все сообщения POS обработаны и отправлены локальному экземпляру ActiveMQ.
Обработанные сообщения перенесеносятся из очереди ActiveMQ в архив ActiveMQ.
Если данные находятся в архиве ActiveMQ, но на сервере их всё равно нет, то следует проверить поле причина архивирования. Значением поля должно быть 1, в ином случае запись сообщения в очередь произошло с ошибкой...

2. ПРОБЛЕМА: данные за прошлый период так и не пришли (потерялись)

Инициирование передачи данных из POS "руками"

С помощью консольной версии PosDataExtractor (pdecli), можно передать отсутствующие данные из POS на сервер KMG-BI. Запуск производится из папки PosDataExtractor.
Данные возможно передавать как за период времени, так и конкретно по номеру, если он известен. За один раз передаётся только один тип ресурса {Entity}.

Формат записи в случае передачи данных по номеру следующий: pdecli --entity={EntityName} --resource-id={id} --commit

например: pdecli --entity=zreports --resource-id=4 --commit  (передаём Z-отчёт №4)

Формат записи в случае передачи данных за период времени следующий: pdecli --entity={EntityName} --period-begin={Start date-time} --period-end={End date-time} --commit,
где формат даты-времени: гггг-мм-дд Т чч:мм (без пробелов)

например: pdecli --entity=receipts --period-begin=2015-10-11T7:00 --period-end=2015-10-12T20:00 --commit  (передаём чеки за период с 11 октября 2015г. 7:00 до 12 октября 2015г. 20:00)

Наиболее распространённые типы ресурсов {Entity}, передаваемые с АЗС:

  • ZReports - Z-отчёты
  • Receipts - чеки
  • Transactions - транзакции
  • Measurements - уровнемеры
  • GasDeliveries - поставки топлива

NB! Приложение автоматически определяет очередь ActiveMQ, необходимую для конкретного ресурса

Полное описание приложения (с примерами использования) дано в англоязычной документации PosDataExtractor console interface (pdecli).

internal: На основании результатов запроса bi_zreportholes_ex.sql можно сформировать скрипты для автоматической загрузки данных с любой АЗС, которые выполняют массовую загрузку данных за заданный период времени на сервер BI. 
Данные попадут в отдельные соответствующие POS.Bulk.> очереди и будут обрабатываются собственным сервисом "Message Router BI (bulk)".

3. ПРОБЛЕМА: POS/BOS ActiveMQ broker потерял связь с сервером

  • проверить состояние(статус) сервиса ActiveMQ можно либо в списке сервисов Computer\Manage\Services, либо в коммандной строке
    sc query ActiveMQ
    
  • перезапуск сервиса ActiveMQ на POS/BOS; сервису может потребоваться время как для остановки сервиса, так и для его запуска (около 1 минуты)
    sc stop ActiveMQ
    sc start ActiveMQ
    

NB! перед остановом сервиса ActiveMQ также рекоммендуется остановить сервис PosDataExtractor (POS) либо MessageRouterBos (BOS)

  • Если ActiveMQ так и не получилось заставить работать как сервис, но данные срочно нужны, в качестве экстренной меры (до первого перезапуска компьютера) можно запустить исполняемую часть ActiveMQ вручную
    c:
    cd \activemq\bin\
    activemq.bat
    

Определение неправильного кода станции

4. Что делать при смене кода станции

  1. Поменять код станции на кассе (информация о станции - регистрационный номер)
  2. В файле c:\activemq\activemq.xml на кассе и BOS'e неоходимо указать правильное название брокеров ActiveMQ (SAP-код АЗС)
  3. Если данные с неправильными кодами попали в BI, то в таблицах Receipts, ZReports, Events, GasFillings, TigMeasurements, CardTrns необходимо менять содержимое поля ObjectCode.
    Это может быть в некоторых случаях затруднительно, если уже существуют данные для другой/других АЗС с таким же кодом.

В дальнейшем, при смене кода АЗС, достаточно будет поменять код станции на кассе и перезапустить инсталлятор MasterETL, который автоматически сделает необходимые настройки ETL рабочего места.

internal: скрипт bi_codereplace.sql служит для автоматизации процесса замены таблиц.

Also available in: PDF HTML TXT