Администрирование Data Director (репликатор от LS Retail NAV)

Будем считать, что установку DD и настройку репликации мы выполнили. И выполнили правильно. Значит один DD пакеты формирует и отправляет, второй же их получает и обрабатывает. И все до поры до времени хорошо.
Но расслабляться нельзя. Надо периодически это дело проверять. Для этих целей есть специальный инструментарий, расположен он в папке Data Director Administration (которая в разделе LS Retail – Scheduler).
Чтобы инструмент заработал нужно его настроить. Для этого используется окно Administration Setup. В нем создаем строку, где указываем Distribution Location Code получателя, и еще одну строку для отправителя. Флаги в поле Enabled должны быть установлены. Для начала этого будет достаточно.

Dynamics NAV (Navision) Настройка администрирования LS Retail Data Director


Покончив с настройкой, займемся непосредственно контролем на репликациями, для этого откроем окно Administration Card. Смотреть там пока особо не на что, поэтому нажмем кнопку Checks / Check All Location.
При нажатии на кнопку произойдет вызов кодеюнита 99001468 и система начнет опрашивать все DD с флагом Enabled=TRUE, которые мы указали в окне Administration Card. При этом система забирает данные из таблиц 99001599 IncomingMessages и 99001560 OutgoingMessages указанных Distribution Location и переносит их в таблицы 99001602 Remote Inc. Msg. и 99001603 Remote Outg. Msg. текущей базы данных.

Теперь рассмотрим окно Administration Card.
В заголовке указана следующая справочная информация:
Количество настроенных для мониторинга Distribution Location (No. of Locations). В том числе, включенных в мониторинг (Enabled Locations, флаг Enabled=TRUE) и исключенных из мониторинга (Disabled Locations, флаг Enabled = FALSE).
Количество Distribution Location, к которым подключиться не удалось (No. of Connection Errors), а также количество Distribution Location, у которых есть проблемные сообщения (No. of Director Errors).
Также в форму выведено пару flow-фильтров: Date Filter, Time Filter с помощью которых можно сузить контролируемый временной промежуток.

Dynamics NAV (Navision) Администрирование LS Retail Data Director

В первую очередь нас волнуют Distribution Location, к которым подключиться не удалось. Их количество выведено в заголовке формы, а детальный список можно увидеть на закладке Connection Errors. Напротив каждого проблемного Distribution Location будет указан код и описание ошибки возникшей при соединении.

Если проблем с подключением нет (No. of Connection Errors = 0), перейдем к следующей закладке Director Errors. На ней отображаются Distribution Location, у которых есть проблемные сообщения одного из следующих типов:

  • Входящие сообщения с ошибками (статус = Error)
  • Исходящие сообщения с ошибками (статус = Error)
  • Входящие необработанные сообщения (статус = Received)
  • Исходящие необработанные сообщения (статус = Processing|Waiting|To Forward)

На необработанные мы посмотрим, чуть позже, а сейчас все внимание на сообщения со статусом «С ошибкой».
Чтобы разобраться в причинах, нужно провалиться в соответствующую связанную таблицу. В полях «Error» и «ServerMsg» будет указан код ошибки, а также сообщение с пояснением. Если причину, устранить можно - это нужно сделать. А вот если не удастся – то сообщение можно только отменить. Изменим статус на «Отменен». Однако как сообщение в таблице Remote *** Msg. в текущей базе данных в таблицу ***ingMessages исследуемого Distribution Location? С помощью в той же кнопки Checks / Check All Location. Однако не надо спешить и нажимать ее, так как сначала надо выполнить некоторые настройки.
Вернемся в окно Administration Setup и установим флаг в поле Update Location (поле может быть скрыто). Теперь кнопка Checks / Check All Location не только получает данные от Distribution Location, но и обновляет их.

Теперь посмотрим на все это счастье с технической точки зрения.
Distribution Location, которые требуется включить в мониторинг указываются в таблице 99001601 DD Admin Location. На базе этой таблицы и работает форма 99001817 DD Administration. Что необычно – в форме четыре табличных части, три субформы и один настоящий TableBox. Но это не все. В шапке есть реквизиты, касающиеся всех Distribution Location в табличной части, так вот они любопытно реализованы. В каждой записи таблицы DD Admin Location есть вычисляемые поля:

  • No. of Locations – Count(”DD Admin Location”)
  • Enabled Locations – Count(”DD Admin Location” WHERE (Enabled=FILTER(Yes)))
  • Disabled Locations – Count(”DD Admin Location” WHERE (Enabled=FILTER(No)))
  • No. of Connection Errors – Count(”DD Admin Location” WHERE (Connection Error=FILTER(Yes)))
  • No. of Director Errors – Count(”DD Admin Location” WHERE (Show Error=FILTER(Yes)))

Их особенность в том, что они вычисляются на базе самой таблицы DD Admin Location.

По кнопке Checks / Check All Location происходит вызов кодеюнита 99001468 Update Remote Statuses. В кодеюните в цикле происходит обработка всех записей таблицы DD Admin Location с флагом Enadled=TRUE. Для записей с флагом Update Location = FALSE происходит только получение сообщений, для записей с флагом Update Location = TRUE, то дополнительно происходит обновление сообщений в обрабатываемом Distribution Location.

В целом ничего интересного, кроме:
А) простого примера, как организовать обмен между таблицами с помощью DD (без шелухи в виде настраиваемых пользоватем Субзаданий).
Б) информации о том, что этот кодеюнит можно запускать из ShedulerJob и передавать в него дополнительный фильтрационный параметр (поле Текст), тогда таблица DD Admin Location дополнительно (к Enabled = TRUE) отфильтруется по полю Job Filter (строка может быть любой “aaaa”, “<>aaaa”, “aaaa..fffff”, “<>””).

Рассмотрим некоторые поля таблицы DD Admin Location:
Last Inc. Counter и Last Outg. Counter, счетчики полученных сообщений от Distribution Location. Значение счетчика, копируются значения поля Counter последней полученной записи таблицы IncomingMessages или OutgoingMessages. Используются, чтобы получать только новые записи.

Max Counter Interval, если значение = 0, то будут загружены за один прием все новые сообщения из таблиц IncomingMessages или OutgoingMessages.
IncomingMessages.SETFILER(Counter, “>%1”, Last Inc. Counter)

Если же указать какое-то целое значение, то сообщения будут загружаться частями:
IncomingMessages.SETRANGE(Counter, Last Inc. Counter +1, Last Inc. Counter + Max Counter Interval)
ShowError. Поле, значение которого устанавливается Да, если у Distribution Location есть проблемные сообщения, уже разбирали выше, но повторим еще раз:

  • Incoming Errors - Count(”Remote Inc. Msg.” WHERE (…,Status=FILTER(Error),…))
  • Outgoing Errors - Count(”Remote Outg. Msg.” WHERE (…,Status=FILTER(Error),…))
  • Incoming Unprocessed - Count(”Remote Inc. Msg.” WHERE (…,Status=FILTER(Received),…))
  • Outgoing Unprocessed - Count(”Remote Outg. Msg.” WHERE (…,Status=FILTER(Processing|Waiting|To Forward),…))
IF Incoming Errors + Outgoing Errors + Incoming Unprocessed + Outgoing Unprocessed &gt; 0 THEN 
  ShowError :=TRUE; 
ELSE 
  ShowError := FALSE;

Стоит отметить, что данный код выполняется только при нажатии на кнопку Update View, формы DD Administration.

Last Rem.Inc. Msg и Last Rem.Outg. Msg. Чуть выше, мы упоминали про изменение статуса проблемных сообщений. Так вот, когда мы изменяем статус у этих сообщений (вручную или с применением функции Update Multiple Entries), то в у этих сообщений происходит заполнение поля ReplCount. ReplCount – обычное поле, используемое как «Счетчик репликации», про назначение и создание таких полей рассказывано в справочной системе, разделы: Replication with Replication Counters и Adding Replication Counters to Tables.
В полях Last Rem.Inc. Msg и Last Rem.Outg. Msg. хранится значение счетчика последнего обработанного (отправленного) сообщения.

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

Метки:



Комментариев: 4

  1. Plaintive пишет:

    Прикольно написано. Почти за душу берёт, заставляет задуматься над собственным блогом. Хотя не совсем полностью тема развёрнута. Где об этом посмотреть более подробно? С уважением, Plaintive :)
    Зы:Я чесно старался придумать такой комент, который вам понравиться ;)

  2. Ваня пишет:

    Подскажите, пожалуйста, пару-тройку форумов по этой теме. Заранее спасибо!

  3. apanko пишет:

    Борьба с ДатаДиректор на форуме у Mazzy http://forum.mazzy.ru/index.php?showtopic=8812&hl=
    Еще про репликацию можно найти на http://apanko.ru поиск по “[LS Retail]” или “репл*”

  4. ELENA пишет:

    wery!

Оставьте свой отзыв!