Маршрут 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}, передаваемые с АЗС:

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

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

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

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

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

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

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 служит для автоматизации процесса замены таблиц.