Алгоритм синхронизации

<< Click to Display Table of Contents >>

Navigation:  Механизм обмена данными >

Алгоритм синхронизации

Синхронизация данных строится на обмене XML-файлами, содержащими сообщения об изменениях синхронизируемых справочников и журналов документов. XML-файл имеет следующую структуру:

 

<Сообщение>

 <ЗаголовокСообщения>

   <ПланОбмена>…</ПланОбмена>
   <Получатель>…</Получатель>

   <Отправитель>…</Отправитель>

   <НомерСообщения>…</НомерСообщения>
   <ПолученноеСообщение>…</ПолученноеСообщение>

 </ЗаголовокСообщения>

 <ТелоСообщения>

   <Элемент1>…</Элемент1>

   <Элемент2…</Элемент2>

   …

 </ТелоСообщения>

</Сообщение>

 

Заголовок сообщения содержит следующие значения:

имя плана обмена (например, «Бухгалтерия_ВендАналитика»);

наименования системы-отправителя (например, «ВендАналитика»);

наименования системы-получателя (например, «1С»);

номер данного сообщения, являющийся положительным целым числом. Номер каждого последующего сообщения должен быть больше номера предыдущего сообщения;

номер последнего полученного и успешно загруженного узлом-отправителем сообщения.

 

Тело сообщения состоит из узлов двух типов:

описывающих добавленные или измененные элементы справочников или документы;

описывающих удаленные элементы справочников или документы.

 

Алгоритм работы каждой из синхронизируемых систем выглядит следующим образом:

выполняется регистрация изменений элементов, информация о которых выгружается данной системой;

при формировании сообщения для каждого выгружаемого элемента фиксируется номер сообщения, в котором изменение отправляется в первый раз;

при загрузке сообщения анализируется содержимое узла <ПолученноеСообщение>. Удаляется  регистрация изменений, впервые отправленных в сообщениях с номером <ПолученноеСообщение> или более ранних.

 

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