Администрирование DICS. Владельцы метаданных.

11 0

Для того чтобы передать какой-либо объект в удаленную систему средствами DICS администратору необходимо настроить правила преобразования объекта и метаданные.

Метаданные – это структурированное описание данных, которые нужно передавать в удаленную систему. Метаданные представляют собой набор атрибутов. Каждый атрибут характеризуется именем и типом. Метаданные идентифицируются по уникальному идентификатору и версии.

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

Кто же такой этот владелец метаданных и как он влияет на передачу объектов между системами? 

Владелец метаданных - это система объединения, в которой данные справочника, передаваемые с помощью метаданных, имеют приоритет над данными справочников других систем, передаваемых с помощью тех же метаданных. Если запись справочника была создана в системе-владельце или была один раз принята в эту систему, то во всех других системах будут приниматься данные из системы-владельца. Принять изменения из других систем нельзя. Другими словами если создать запись справочника в системе 1, которая является владельцем метаданных, отправить в систему 2, внести какие либо изменения и отправить обратно, в системе 1 эти изменения приняты не будут.

Ниже приведу таблицу зависимости внесения изменений в систему от владельца метаданных для разных объектов.

Электронные документы

Моя система является владельцем

Документ прислан из системы-владельца

Импортировать карточку с изменением своих локальных данных

+

+

+

+

+

Записи справочников

Моя система является владельцем

Запись прислана из системы-владельца

В моей системе такая запись есть

Импортировать запись с изменением своих локальных данных

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

 

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

Если владельца метаданных не указывать, информация о том, кто является владельцем объекта при импорте берется из:

  1. Параметра «RecordCreatedInSenderSystem» Структурированного пакета.
  2. Поля «IsOwner» таблицы «SCGlobalIDCorrespondence».

Изучив представленные выше таблицы можно сделать вывод, что для того чтобы объекты беспрепятственно передавались между всеми системами объединения нам необходимо:

  1. Отправлять объекты из системы владельца
  2. Принимать объекты в систему, не являющуюся владельцем

Реализовать подобный функционал довольно просто, для этого необходимо в правилах экспорта объекта в каждой системе прописать переопределения владельца, в событиях «До применения правила» назначать текущую систему владельцем:

  GUID = Copy(ObjectGlobalID;2;Length(ObjectGlobalID)-2)

  SQL(Format("UPDATE SCGlobalIDCorrespondence set isOwner = 1 where GlobalID = '%S'"; GUID))

В событиях «После применения правила» указать, что система владельцем не является:

  GUID = Copy(ObjectGlobalID;2;Length(ObjectGlobalID)-2)

  SQL(Format("UPDATE SCGlobalIDCorrespondence set isOwner = 0 where GlobalID = '%S'"; GUID))

После внесения изменений в события объекты всех систем будут передаваться независимо от того, где объект был создан.

 
Отредактировал Михаил Повышев, 19.06.2013 в 12:07
Отредактировал Елена Питомцева, 20.06.2013 в 11:32
Отредактировал Елена Питомцева, 20.06.2013 в 14:07
Пока комментариев нет.

Авторизуйтесь, чтобы написать комментарий