Skip to content

Latest commit

 

History

History
104 lines (72 loc) · 6.23 KB

01-intro.md

File metadata and controls

104 lines (72 loc) · 6.23 KB

Введение

Принадлежность данных

Все данные, с которыми работает Клиент, разделены по принадлежности на следующие Контексты:

Поскольку Личные данные и Командные данные недоступны без аутентификации, API синхронизации работает лишь для текущего авторизованного Пользователя.

Поскольку разные Пользователи могут обладать разными привилегиями в одной и той же Команде, они могут видеть (или не видеть) одни и те же сущности этой Команды по-разному. Поэтому Командные данные для Клиента представлены лишь с точки зрения текущего пользователя.

См. подробнее Контексты.

Зависимость Контекстов

  1. Данные глобального контекста должны синхронизироваться в первую очередь, поскольку и личные данные, и командные данные могут ссылаться на глобальные данные.

  2. Личные данные должны синхронизироваться раньше командных, т.к. факт участие (наличие доступа) текущего пользователя в тех или иных командах (иными словами список доступных команд) отражается в первую очередь именно в персональных данных. Создание новых команд также осуществляется в контексте личных данных.

  3. В последнюю очередь должны синхронизироваться данные конкретных команд отдельно друг от друга по мере необходимости в произвольном порядке.

Обмен данными

Обмен данными по каждому Контексту осуществляется отдельно. Например, если пользователь является участником n команд, то при синхронизации потребуется n+2 отдельных сеансов синхронизации: 1 для публичных данных, 1 для личных данных пользователя и n по 1 для каждой из команд.

API синхронизации работает с целым Контекстом данных сразу. Данные всего Контекста целиком имеют UUID и порядковый номер версии.

См. также Сценарии сеансов синхронизации

Первоначальное получение данных от сервера (запрос снапшота)

Клиент может запросить у Сервера актуальные данные целиком. Это делается, например, когда в начале работы Клиенту ничего не известно о данных.

В ответных данных приходит актуальный снапшот. Информации об удалениях объектов нет.

Получение изменений с сервера (запрос разницы)

Клиент может запросить у сервера изменения в данном контексте, указав UUID базовой версии, полученной ранее.

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

Отправка изменений на сервер

Отправка изменений на сервер не подразумевает ответное получение результирующих данных ни в виде снапшота, ни в виде относительных изменений.

Чтобы получить результирующие данные, нужно запросить их отдельно любым из способов выше.

Фоновая обработка данных

Сборка ответных данных при запросе снапшота или разницы может выполняться в фоновом режиме, когда в кеше на сервере нет уже собранных актуальных данных по указанному запросу.

Применение изменений всегда выполняется в фоновом режиме.

Когда обработка запроса уходит в фоновый режим, ответ на этот запрос имеет статус 202, а в теле ответа содержится объект тикета. После такого ответа необходимо сначала дождаться окончания обработки тикета, а затем отдельным API запросом получить результат работы (собранные данные при запросе данных).

Подробнее см. далее Ход сеанса синхронизации.