Синхронизация встреч с MS Exchange
Glossary Item Box
Общая информация
На базе механизма синхронизации Sync Engine в конфигурации реализована интеграция с различными сущностями Exchange по протоколу EWS (Exchange Web Services). В данной статье описана синхронизация встреч bpm'online со встречами MS Exchange.
Синхронизация встреч bpm'online происходит только для новых активностей или при изменении полей Title, Location, StartDate, DueDate, Priority, Notes. По этим полям формируется хэш, который хранится в дополнительных параметрах метаданных (в поле ExtraParameters). Если встреча была изменена в bpm'online, и хэш из ExtraParameters не совпадает с новым хэшем, то эта встреча должна быть синхронизирована.
Алгоритм синхронизации встреч не отличается от описанного в статье "Синхронизация bpm'online с внешними хранилищами данных", и происходит в три этапа:
- Получение изменений из MS Exchange, их применение;
- Получение изменений из bpm'online, их применение;
- Создание новых встреч из bpm'online в MS Exchange.
Классы, реализующие интеграцию
Как описано в статье "Синхронизация bpm'online с внешними хранилищами данных", для того чтобы реализовать интеграцию с использованием данного механизма, необходим класс, реализующий логику работы с внешним хранилищем, — наследник RemoteProvider (Рис. 1), и класс, реализующий интерфейс IRemoteItem (Рис. 2), который представляет один экземпляр элемента синхронизации (в даном случае — встречу MS Exchange).
Рис. 1. — Схема иерархии RemoteProvider
Класс ExchangeAppointmentSyncProvider является провайдером для работы с внешним хранилищем Exchange. В нем реализована логика по выбору данных и сохранению изменений в bpm'online и Exchange.
Класс ExchangeAppointment реализует интерфейс IRemoteItem, и в нем реализована логика заполнения данных в соответствующих системах.
Рис. 2. — Схема иерархии RemoteItem
Синхронизируемые данные
Соответствие объектов bpm'online и полей класса ExchangeAppointment отображено в таблице 1.
Табл. 1. — Соответствие объектов bpm'online и полей класса ExchangeAppointment
Объект bpm'online | Поле объекта | Соответствующее поле MS Exchange Appointment |
---|---|---|
Activity | Title | Subject |
Location | Location | |
StartDate | StartDate | |
DueDate | CompleteDate или DueDate в зависимости от того, завершена встреча или нет. | |
Priority | Importance | |
Status |
Заполняется по алгоритму: Если статус не указан и дата окончания больше, чем текущая, — статус в bpm'online устанавливается как "Новая встреча". Если дата окончания меньше, чем текущая дата, — статус устанавливается как закрытая встреча со статусом "Информация получена". |
|
RemindToOwner | IsReminderSet | |
RemindToOwnerDate | ReminderDueBy | |
Notes | Body.Text | |
ActivityParticipant | InviteResponse | Если в MS Exchange установлен признак, что встреча принята или пользователь является организатором встречи, то в bpm'online устанавливается признак "Встреча подтверждена". В противном случае устанавливается признак того, что встреча отменена. |
Логика выбора данных для синхронизации
Для выбора изменений в списке встреч из отобранных для синхронизации папок MS Exchange используется следующий набор фильтров: выбираются встречи MS Exchange, которые были изменены после даты последней синхронизации встреч, или встречи MS Exchange, которые не были отмечены, как ранее синхронизированные. Для встреч, которые были изменены, находятся соответствующие активности в bpm'online. Самые актуальные изменения применяются в соответствующей системе.
При выборе измененных активностей bpm'online выбираются активности:
- которые имеют запись в метаданных синхронизации как встречи MS Exchange по RemoteId (определяется уникальным идентификатором встречи в календаре ICalId);
- дата последнего изменения которых больше, чем дата последней синхронизации;
- одна встреча в bpm'online соответствует нескольким встречам в MS Exchange для каждого участника.
При выборе новых активностей bpm'online устанавливается набор общих фильтров и фильтры, настраиваемые пользователем. Основными фильтрами являются:
- Тип активности не равен "Email".
- У активности установлен признак [Отображать в расписании].
Пользователь может указать группы активностей, которые будут экспортироваться из bpm'online.
Логика выбора участников встречи
При синхронизации активности из MS Exchange в bpm'online на деталь [Участники] добавляются те контакты, у которых на детали [Средства связи] есть email из списка учасников встречи в MS Exchange.
При синхронизации активностей из bpm'online в MS Exchange участники встречи для MS Exchange заполняются основными email-адресами контактов.