Creatio development guide
PDF
Документация по разработке
Описание платформы

Описание работы с метаданными для синхронизации

Glossary Item Box

Общее описание

Для синхронизации используется вспомогательная таблица метаданных SysSyncMetaData, которая, по сути, является таблицей развязки между внешним RemoteItem (элемент синхронизации во внешнем хранилище) и LocalItem (элемент синхронизации в bpm'online). Каждая строка таблицы представляется в системе экземпляром класса SysSyncMetaData. Свойства класса SysSyncMetaData представлены в таблице 1.

Табл. 1. — Свойства класса SysSyncMetaData

Параметр Тип Описание
RemoteId String Идентификатор элемента во внешнем хранилище.
SyncSchemaName String Название схемы синхронизируемого элемента.
LocalId Guid Идентификатор элемента в локальном хранилище.
IsLocalDeleted Boolean Указывает, удален ли элемент из локального хранилища со времени последней синхронизации. Параметр актуализируется перед синхронизацией и при применении изменений в локальном хранилище. На основе его значения при выборке измененных элементов из локального хранилища устанавливается состояние SyncEntity. Устарел, оставлен для совместимости. На текущий момент используется LocalState.
IsRemoteDeleted Boolean Указывает, удален ли элемент из внешнего хранилища со времени последней синхронизации. Устарел, оставлен для совместимости. На текущий момент используется RemoteState.
Version Date Дата последнего выполненного изменения элемента (дата модификации).
ModifiedInStoreId Guid Id хранилища, в котором выполнено последнее изменение.
CreatedInStoreId Guid Id хранилища, в котором создан элемент синхронизации.
RemoteStoreId Guid Идентификатор внешнего хранилища, с которым был синхронизирован элемент.
ExtraParameters String Дополнительные параметры для элемента.
LocalState Int Состояние элемента в локальном хранилище (0 — не изменен, 1 — новый, 2 — изменен, 3 — удален).
RemoteState Int Состояние элемента во внешнем хранилище (0 — не изменен, 1 — новый, 2 — изменен, 3 — удален).

В метаданных хранится информация только об уже синхронизированных элементах.

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

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

На текущий момент только один объект из внешнего хранилища преобразуется в несколько объектов bpm’online, как показано на рисунке 1. Вариант, когда допустимо соответствие многие ко многим (несколько внешних объектов соответствуют нескольким локальным объектам, и эта совокупность является одним элементом синхронизации), не поддерживается.

Рис. 1. — Схема преобразования объекта внешнего хранилища в объекты локального

В системе метаданные для одного элемента синхронизации представлены объектом класса ItemMetadata (коллекция элементов SysSyncMetaData). А управление метаданными осуществляется через класс, реализующий интерфейс IReplicaMetadata. Экземпляр класса, реализующий интерфейс IReplicaMetadata, создается через класс-фабрику MetaDataStore для конкретного хранилища.

Класс MetaDataStore

Класс-фабрика создает конкретный экземпляр класса, который реализует интерфейс IReplicaMetadata для хранилища. Методы класса представлены в таблице 2.

Табл. 2. — Методы класса MetaDataStore

Метод Тип возвращаемого значения Описание
GetReplicaMetadata(Guid localStoreId, Guid remoteStoreId) IreplicaMetadata Создает экземпляр класса, реализующий интерфейс IReplicaMetadata для конкретного хранилища.

Класс ItemMetadata

Этот класс является неделимым объектом метаданных синхронизации. Содержит набор метаданных для каждой сущности синхронизации (коллекция элементов SysSyncMetadata). Свойства класса представлены в таблице 3.

Табл. 3. — Свойства класса ItemMetaData

Параметр Тип Описание
RemoteId String Идентификатор элемента во внешнем хранилище.
RemoteItemName String Наименование элемента во внешнем хранилище.

Интерфейс IReplicaMetadata

Класс, реализующий интерфейс IReplicaMetadata, инкапсулирует метаданные синхронизации. Реализует работу с объектами ItemMetadata. Свойства интерфейса представлены в таблице 4, а методы — в таблице 5.

Табл. 4. — Свойства интерфейса IReplicaMetaData

Параметр Тип Описание
RemoteStoreId Guid Идентификатор внешнего хранилища.
LocalStoreId Guid Идентификатор локального хранилища.


Табл. 5. — Методы интерфейса IReplicaMetaData

Метод Тип возвращаемого значения Описание
FindItemStore (string remoteItemId) ItemMetadata Находит и возвращает объект метаданных синхронизации ItemMetadata по идентификатору во внешнем хранилище remoteItemId.
UpdateItemMetadata (ItemMetadata oldItemMetaDatas, IRemoteItem remoteItem, LocalItem localItem, bool changesToBpm) Void Обновляет метаданные после синхронизации.
EnumerateItemsWithChangesInBpm (SyncContext context) IEnumerable<ItemMetadata> Возвращает коллекцию объектов ItemMetadata, измененных после последней синхронизации в bpm'online и не обработанных в процессе текущего сеанса синхронизации.
CollectChangesInSyncedEntities (UserConnection userConnection, string schemaName, DateTime lastSyncVersion) Void Обновляет метаданные для элементов синхронизации, измененных в bpm’online. Если элемент был изменен в приложении после последней синхронизации SysMetadata, колонка Version будет заполнена датой модификации элемента. Для актуализации метаданных используется хранимая процедура ActualizeSysSyncMetaData.
CollectNewDetailsForSyncedEntities (UserConnection userConnection, DetailEntityConfig detailEntityConfig, string remoteItemName) Void Создает новые записи в таблице SysSyncMetaData для деталей элемента синхронизации.
TryResolveRemoteId (Guid localId, out string remoteId) Boolean Возвращает идентификатор элемента во внешнем хранилище remoteId из метаданных по уникальному идентификатору элемента синхронизации в bpm’online localId. Если элемент помечен как удаленный, то remoteId возращен не будет и метод возвратит false.
TryResolveExtraParameters (Guid localId, out string extraParameters) Boolean Возвращает дополнительные параметры extraParameters для элемента синхронизации из метаданных по localId. Если extraParameters не будут найдены, метод вернет false.

 

 

© Terrasoft 2002-2019.

Был ли данный материал полезен?

Как можно улучшить эту статью?