Поделиться через


Сведения о конечном автомате репликации

Область применения: Outlook 2013 | Outlook 2016

В этом разделе содержится обзор конечного компьютера для репликации данных Microsoft Outlook 2013 и Microsoft Outlook 2010, русская версия.

Примечание.

Api репликации должен быть полностью реализован в соответствии с инструкциями в этом разделе, чтобы быть полезным или поддерживаемым. API репликации доступен исключительно для репликации изменений Outlook 2013 или Outlook 2010 на сервер и с сервера.

IOSTX и конечный компьютер

Клиент вызывает IOSTX::SyncBeg, IOSTX::SyncEnd, IOSTX::SyncHdrBeg и IOSTX::SyncHdrEnd в последовательности для синхронизации папок и элементов Outlook 2013 или Outlook 2010 между локальным хранилищем и сервером. Фактическая последовательность вызовов зависит от данных, которые необходимо реплицировать (например, иерархии папок Outlook 2013 или Outlook 2010, папки Outlook 2013 или Outlook 2010, почтовых элементов, элементов календаря и т. д.) и направления синхронизации (отправка из локального хранилища на сервер или скачивание с сервера в локальное хранилище). Ниже приведена типичная последовательность вызовов:

  1. Клиент вызывает IOSTX::SyncBeg для начала репликации, указывая идентификатор состояния и указатель на адрес соответствующей структуры данных.

  2. Outlook 2013 или Outlook 2010 выделяет структуру данных и инициализирует структуру данных необходимыми сведениями для клиента.

  3. Клиент выполняет репликацию, обновляя структуру данных, чтобы передать в локальное хранилище все необходимые сведения о репликации.

  4. После выполнения репликации клиент вызывает IOSTX::SetSyncResult и IOSTX::SyncEnd , чтобы уведомить локальное хранилище о завершении конкретной репликации.

Примечание.

Клиент всегда вызывает IOSTX::SyncEnd для завершения репликации, начатой клиентом для определенного состояния. В зависимости от общих данных, которые необходимо синхронизировать клиенту, клиент может вызывать пару вызовов IOSTX::SyncBeg и IOSTX::SyncEnd более одного раза.

Таблица состояний

Примечание.

В следующей таблице перечислены все допустимые состояния на конечном компьютере репликации, а также соответствующие идентификаторы состояний и структуры данных. В столбце Реплицированные данные термин "элементы" включает элементы почты, календаря, контакта, заметки, журнала и задачи. При репликации изменений из локального хранилища на сервер используйте идентификаторы состояния, указывающие "UPLOAD" и структуры данных с префиксом UP (например, LR_SYNC_UPLOAD_HIERARCHY и UPHIER ). При репликации изменений с сервера в локальное хранилище используйте идентификаторы состояний, указывающие "DOWNLOAD" и структуры данных с префиксом "DN" (например, LR_SYNC_DOWNLOAD_HIERARCHY и DNHIER ).

Состояние
Реплицированные данные
Идентификатор состояния
Структура данных
Состояние бездействия
Нет
LR_SYNC_IDLE
Нет
Состояние синхронизации
Папки или элементы
LR_SYNC
СИНХРОНИЗАЦИИ
Состояние иерархии отправки
Folders
LR_SYNC_UPLOAD_HIERARCHY
UPHIER
Состояние папки отправки
Folder
LR_SYNC_UPLOAD_FOLDER
UPFLD
Синхронизация состояния содержимого
Элементы
LR_SYNC_CONTENTS
SYNCCONT
Состояние таблицы отправки
Элементы
LR_SYNC_UPLOAD_TABLE
UPTBL
Состояние отправки сообщения
Элемент
LR_SYNC_UPLOAD_MESSAGE
UPMSG
Состояние состояния чтения отправки
Элементы
LR_SYNC_UPLOAD_MESSAGE_READ
UPREAD
Состояние состояния удаления отправки
Элементы
LR_SYNC_UPLOAD_MESSAGE_DEL
UPDEL
Состояние иерархии скачивания
Folders
LR_SYNC_DOWNLOAD_HIERARCHY
DNHIER
Скачивание состояния таблицы
Элементы
LR_SYNC_DOWNLOAD_TABLE
DNTBL
Состояние заголовка сообщения скачивания
Заголовок сообщения
LR_SYNC_DOWNLOAD_HEADER
HDRSYNC

Пример. Отправка иерархии папок

При отправке иерархии папок выполняется следующая последовательность действий:

Шаг
Действие
Состояние
Связанная структура данных
1. Клиент инициирует отправку иерархии с помощью IOSTX::SyncBeg. LR_SYNC_UPLOAD_HIERARCHY
UPHIER
2. Outlook 2013 или Outlook 2010 заполняет UPHIER сведениями о клиенте. Это включает в себя инициализацию параметров [out]: iEnt имеет значение 0, а cEnt — количество папок в иерархии, для которых требуется отправка. LR_SYNC_UPLOAD_HIERARCHY
UPHIER
3. Клиент выполняет фактическую отправку иерархии. Например, если cEnt равен 10, для каждой из 10 папок клиент вызывает IOSTX::SyncBeg, указывая соответствующий идентификатор состояния и структуру данных для отправки папки. LR_SYNC_UPLOAD_FOLDER
UPFLD
4. Outlook 2013 или Outlook 2010 заполняет UPFLD путем инициализации параметров [out], включая причину отправки папки, указатель на объект папки и идентификатор записи для папки. LR_SYNC_UPLOAD_FOLDER
UPFLD
5. Клиент отправляет указанную папку. LR_SYNC_UPLOAD_FOLDER
UPFLD
6. Клиент уведомляет локальное хранилище о завершении отправки папки. После успешного выполнения клиент задает параметр [in] ulFlags в UPFLD с UPF_OK, а затем вызывает IOSTX::SetSyncResult (S_OK) и IOSTX::SyncEnd. В случае сбоя клиент не будет задавать ulFlags с флагом UPF_OK . Он вызывает IOSTX::SetSyncResult, передавая значение HRESULT и IOSTX::SyncEnd. LR_SYNC_UPLOAD_FOLDER
UPFLD
7. Если задано UPF_OK , Outlook 2013 или Outlook 2010 очистит внутренний запрос на отправку папки. Затем, независимо от состояния ulFlags, он очистит все внутренние сведения о бухгалтерском учете. Хотя в иерархии по-прежнему есть папки для отправки (iEnt по-прежнему меньше , чем cEnt), клиент и Outlook 2013 или Outlook 2010 повторяют шаги 3–7. LR_SYNC_UPLOAD_FOLDER
UPFLD
8. Клиент уведомляет локальное хранилище о завершении отправки иерархии. После успешного выполнения клиент устанавливает флаг [in] в UPHIER с UPH_OK, а затем вызывает IOSTX::SetSyncResult (S_OK) и IOSTX::SyncEnd. В случае сбоя клиент не установит флаг UPH_OK . Он вызывает IOSTX::SetSyncResult, передавая значение HRESULT и IOSTX::SyncEnd. LR_SYNC_UPLOAD_HIERARCHY
UPHIER
9. Если задано UPH_OK , Outlook 2013 или Outlook 2010 очистит внутренний запрос на отправку иерархии. Затем, независимо от состояния ulFlags, он очистит все внутренние сведения о бухгалтерском учете. LR_SYNC_UPLOAD_HIERARCHY
UPHIER

См. также

Сведения об API репликации
��������� MAPI
SYNCSTATE