Сведения о конечном автомате репликации
Область применения: 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, почтовых элементов, элементов календаря и т. д.) и направления синхронизации (отправка из локального хранилища на сервер или скачивание с сервера в локальное хранилище). Ниже приведена типичная последовательность вызовов:
Клиент вызывает IOSTX::SyncBeg для начала репликации, указывая идентификатор состояния и указатель на адрес соответствующей структуры данных.
Outlook 2013 или Outlook 2010 выделяет структуру данных и инициализирует структуру данных необходимыми сведениями для клиента.
Клиент выполняет репликацию, обновляя структуру данных, чтобы передать в локальное хранилище все необходимые сведения о репликации.
После выполнения репликации клиент вызывает 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 |