Как отслеживать изменения для пользователей и общих дисков

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

Google Диск ведет историю изменений для каждого пользователя и общего диска. У каждого из них есть своя запись об изменениях в интересующих их элементах.

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

Включить записи об изменениях

Запись об изменении представляет состояние файла или общего диска в определенный момент времени. Изменение не показывает разницу между версиями. Приложения, которым необходимо знать, какие свойства изменились, должны сохранять ранее известное состояние объекта и сравнивать его с текущим.

Поскольку изменения отражают текущее состояние объекта, отдельные записи об изменениях могут быть признаны недействительными и заменены более новой записью об изменении для соответствующего объекта.

Маркеры удаления данных

Записи об изменениях для объектов, которые больше недоступны пользователю, помечаются как deleted. В записи об изменении доступен только идентификатор объекта.

Отслеживание общих дисков

У каждого общего диска есть собственная история изменений. Даже если пользователь является участником общего диска, некоторые изменения отражаются только в истории изменений общего диска и никогда – в истории изменений пользователя. Если файл принадлежит общему диску, даже если он в какой-то момент времени появился в истории изменений пользователя, воспроизведение только истории изменений пользователя не приведет к правильному обновлению статуса файла. Вместо этого вам нужно воспроизвести историю изменений общего диска, чтобы зафиксировать все изменения.

Что входит в историю изменений пользователя

Журнал изменений пользователя включает изменения на общих дисках, участником которых он является, а также изменения в файлах в корпусе пользователя. Подробнее об изменениях и версиях…

В истории изменений пользователя появляются следующие изменения общего диска:

  • Пользователь становится участником общего диска.
  • Пользователь больше не является участником общего диска.
  • Произошло изменение, непосредственно связанное с общим диском, участником которого является пользователь, например:
    • Уровень доступа пользователя к этому общему диску изменился.
    • Общий диск будет переименован.

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

Участники общего диска могут видеть события изменения объектов на общем диске в зависимости от того, как они его используют. Однако приложения не должны полагаться на эти события, если пользователь является участником общего диска. Вместо этого используйте историю изменений общего диска.

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

Изменения, которые появляются в журнале изменений общего диска

Участники общего диска могут просматривать его журнал изменений, в котором содержится следующая информация:

  • Любые изменения на общем диске, например добавление или удаление участника.
  • Прямые изменения объектов, хранящихся на общем диске.

Синхронизация разрешений и возможностей

Когда разрешения меняются на общем диске или для объекта на нем, Диск проходит по иерархии папок, чтобы обновить действующие разрешения для всех прямых и косвенных дочерних объектов, которые наследуют изменения. В истории изменений создается отдельная запись для измененного объекта и для каждого затронутого потомка. Клиентские приложения получают отдельные записи журнала изменений от changes.list, и им не нужно вручную распространять возможности или повторно получать дочерние элементы.