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

Иллюстрации

Показать все

Изобретение относится к системе связи и предназначено для синхронизации множественных пользовательских ревизий совместно используемого объекта. Технический результат - повышение точности синхронизации. Множество разных пользователей могут одновременно осуществлять доступ к одному и тому же совместно используемому объекту, ревизовать и обновлять его через несколько разных транспортных механизмов. Ревизии совместно используемого объекта автоматически синхронизируются, что позволяет всем пользователям просматривать ревизии совместно используемого объекта. Конфликтующие ревизии согласуются и объединяются в текущую версию совместно используемого объекта. Клиент может запрашивать текущую версию совместно используемого объекта из хранилища, когда текущая версия совместно используемого объекта недоступна из хранилища. Текущая версия совместно используемого объекта синхронизируется с клиентом, когда хранилище принимает текущую версию совместно используемого объекта. 3 н. и 7 з.п. ф-лы, 10 ил.

Реферат

Уровень техники

Приложения совместного использования файлов позволяют нескольким разным пользователям совместно использовать информацию. Многие пользователи могут одновременно обращаться к одному и тому же файлу. Все пользователи могут просматривать файл, но только пользователь, первый получивший доступ к файлу, имеет привилегии редактирования. Пользователям, которые получили доступ к файлу позднее, запрещено редактировать файл. Предоставление версии файла с возможностью только чтения всем пользователям, кроме одного, неудобно для больших совместно используемых файлов. Это особенно неприемлемо, если пользователи хотят работать над совместно используемым файлом в автономном режиме. Например, другим пользователям может быть запрещено обращаться к файлу в течение долгого времени, если пользователь, первым получивший доступ к файлу, уехал в командировку.

Раскрытие изобретения

Настоящее изобретение относится к способу и системе для синхронизации множественных пользовательских ревизий совместно используемого объекта. Объект может быть любой сущностью, которую можно совместно использовать, например файлом. Множество разных пользователей могут одновременно осуществлять доступ к одному и тому же совместно используемому объекту, ревизовать и обновлять его через несколько разных транспортных механизмов. Пользователям не запрещено осуществлять доступ к совместно используемому объекту и ревизовать его, когда другой пользователь имеет доступ к совместно используемому объекту. Любые уполномоченные пользователи могут одновременно ревизовать совместно используемый объект. Пользователям не требуется подключаться к совместно используемому объекту при производстве ревизий. Ревизии можно производить в автономном режиме над локально кэшированной версией объекта. Затем ревизии синхронизируются с ревизиями других пользователей, когда совместно используемый объект доступен. Ревизии совместно используемого объекта автоматически синхронизируются таким образом, что все пользователи могут просматривать ревизии совместно используемого объекта. Разные пользователи могут ревизовать совместно используемый объект в разное время, поэтому могут одновременно существовать множественные версии совместно используемого объекта. Самая поздняя версия совместно используемого объекта - это версия, которая включает в себя самые последние синхронизированные ревизии, доступные другим уполномоченным пользователям.

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

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

Краткое описание чертежей

Фиг.1 - вычислительное устройство, которое можно использовать согласно иллюстративному варианту осуществления настоящего изобретения.

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

Фиг.3 - иерархический граф, состоящий из связанных узлов, обозначающих разные части совместно используемого объекта, согласно настоящему изобретению.

Фиг.4 - исходная страница совместно используемого объекта и соответствующая конфликтная страница согласно настоящему изобретению.

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

Фиг.6 - логическая блок-схема процесса синхронизации множественных пользовательских ревизий совместно используемого объекта согласно настоящему изобретению.

Фиг.7 - логическая блок-схема процесса согласования и слияния конфликтующих ревизий множественных пользователей в совместно используемом объекте согласно настоящему изобретению.

Фиг.8 - логическая блок-схема процесса синхронизации множественных пользовательских ревизий совместно используемого объекта согласно настоящему изобретению.

Фиг.9 - логическая блок-схема процесса плавного перехода от асинхронного режима связи к синхронному согласно настоящему изобретению.

Фиг.10 - логическая блок-схема процесса плавного перехода от синхронного режима связи к асинхронному согласно настоящему изобретению.

Осуществление изобретения

Настоящее изобретение относится к способу и системе для синхронизации множественных пользовательских ревизий совместно используемого объекта. Объект может быть любой сущностью, которую можно совместно использовать, например файлом. Множество разных пользователей могут одновременно осуществлять доступ к одному и тому же совместно используемому объекту, ревизовать и обновлять его через несколько разных транспортных механизмов. Пользователям не запрещено осуществлять доступ к совместно используемому объекту и ревизовать его, когда другой пользователь имеет доступ к совместно используемому объекту. Любые уполномоченные пользователи могут одновременно ревизовать совместно используемый объект. Пользователям не требуется подключаться к совместно используемому объекту при производстве ревизий. Ревизии можно производить в автономном режиме над локально кэшированной версией объекта. Затем ревизии синхронизируются с ревизиями других пользователей, когда совместно используемый объект доступен. Ревизии совместно используемого файла автоматически синхронизируются таким образом, что все пользователи могут просматривать ревизии совместно используемого объекта. Разные пользователи могут ревизовать совместно используемый объект в разное время, поэтому могут одновременно существовать множественные версии совместно используемого объекта. Самая поздняя версия совместно используемого объекта - это версия, которая включает в себя самые последние синхронизированные ревизии, доступные другим уполномоченным пользователям.

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

Иллюстративная рабочая среда

Согласно фиг.1 одна иллюстративная система для реализации изобретения включает в себя вычислительное устройство, например вычислительное устройство 100. Вычислительное устройство 100 может быть сконфигурировано как клиент, сервер, мобильное устройство или любое другое вычислительное устройство, которое взаимодействует с данными в сети на основе системы сотрудничества. В очень обобщенной конфигурации вычислительное устройство 100 обычно включает в себя, по меньшей мере, один процессор 102 и системную память 104. В зависимости от конкретной конфигурации и типа вычислительного устройства системная память 104 может быть энергозависимой (например, ОЗУ), энергонезависимой (например, ПЗУ, флэш-память и т.д.) или некоторой их комбинацией. Системная память 104 обычно включает в себя операционную систему 105, одно или несколько приложений 106 и может включать в себя программные данные 107. В приложениях 106 может быть реализован модуль 108 синхронизации ревизий, подробно описанный ниже.

Вычислительное устройство 100 может иметь дополнительные приспособления или функциональные особенности. Например, вычислительное устройство 100 может также включать в себя дополнительные устройства хранения данных (сменные и/или стационарные), например магнитные диски, оптические диски или ленту. Такое дополнительное хранилище представлено на фиг.1 сменным хранилищем 109 и стационарным хранилищем 110. Компьютерные среды хранения могут включать в себя энергозависимые и энергонезависимые, сменные и стационарные среды, реализованные любым методом или технологией хранения информации, например, компьютерно-считываемых команд, структур данных, программных модулей или других данных. Системная память 104, сменное хранилище 109 и стационарное хранилище 110 являются примерами компьютерных сред хранения. Компьютерные среды хранения включают в себя, но без ограничения, ОЗУ, ПЗУ, ЭСППЗУ, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD), или другое оптическое хранилище, или другие магнитные запоминающие устройства, или любую другую среду, которую можно использовать для хранения полезной информации и к которой может осуществлять доступ вычислительное устройство 100. Любые такие компьютерные среды хранения могут составлять часть устройства 100. Вычислительное устройство 100 может также иметь устройство(а) 112 ввода, например клавиатуру, мышь, перо, устройство речевого ввода, устройство тактильного ввода и т.д. Также в его состав могут входить устройства 114 вывода, например дисплей, громкоговорители, принтер и т.д.

Вычислительное устройство 100 также содержит средства связи 116, которые позволяют устройству осуществлять связь с другими вычислительными устройствами 118, например, по сети. Сети включают в себя локальные сети и глобальные сети, а также другие крупномасштабные сети, включая, но без ограничения, интранеты и экстранеты. Средство связи 116 является одним примером сред связи. Среды связи обычно реализуются компьютерно-считываемыми командами, структурами данных, программными модулями или другими данными в сигнале, модулированном данными, например несущей волне или другом транспортном механизме, и включают в себя любые среды переноса информации. Термин «сигнал, модулированный данными» означает сигнал, одна или несколько характеристик которого изменяется таким образом, чтобы кодировать информацию в сигнале. В порядке примера, но не ограничения, среда передачи данных включает в себя проводные среды, например проводную сеть или прямое проводное соединение, и беспроводные среды, например акустические, РЧ, инфракрасные и другие беспроводные среды. Используемый здесь термин «компьютерно-считываемые среды» включает в себя среды хранения и среды связи.

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

На фиг.2 показана блок-схема системы для синхронизации множественных пользовательских ревизий совместно используемого объекта. Объект может быть любой сущностью, которую можно совместно использовать, например файлом. Система включает в себя клиенты 200, 210, 220, 230, почтовый сервер с возможностью хранения файлов, например коммутационный сервер 240, а также веб-сервер 250, одноранговую сеть 260 и вложение 270 электронной почты. Клиенты 210, 220 подключены к веб-серверу 250. Клиенты 210, 220 подключены друг к другу через одноранговую сеть 260. Вложение 270 электронной почты предназначено для переноса веб-сервером 250 к и от клиента 230. Клиенты 210, 220 связаны с одним и тем же пользователем (Пользователем 1). Например, Пользователь 1 осуществляет доступ к клиенту 200 дома, а к клиенту 210 - на работе. Клиенты 220, 230 связаны с разными пользователями (Пользователем 2 и Пользователем 3 соответственно). Каждый из клиентов 200, 210, 220, 230 включает в себя кэш 202, 212, 222, 232 для локального хранения совместно используемого объекта. Одноранговая сеть 260 включает в себя виртуальный сервер 262 для переноса совместно используемого объекта между клиентами 210, 220. Файл 242 ревизии и совместно используемые объекты 252, 264, 272 хранятся в коммутационном сервере 240, веб-сервере 250, виртуальном сервере 262 и вложении 270 электронной почты соответственно. Файл 242 ревизии и совместно используемые объекты 252, 264, 272 могут быть связаны с идентификатором одноранговой группы. Идентификатор одноранговой группы идентифицирует пользователей, уполномоченных осуществлять доступ к конкретному совместно используемому объекту (т.е. одноранговой группе) и ревизовать его. Согласно одному варианту осуществления идентификатор одноранговой группы является унифицированным указателем ресурса (URL) одноранговой группы, который может разрешаться любым веб-клиентом. Совместно используемые объекты 252, 264 связаны с файлами 254, 266 декларации соответственно.

Многие разные пользователи могут одновременно осуществлять доступ к одному и тому же совместно используемому объекту, редактировать и обновлять его с использованием нескольких разных транспортных механизмов. Например, Пользователь 1 на клиенте 210 и Пользователь 2 на клиенте 220 могут осуществлять доступ к совместно используемому объекту 252 из веб-сервера 250. Совместно используемый объект хранится локально в соответствующем кэше 212, 222. Пользователь 1 и Пользователь 2 могут ревизовать совместно используемый объект 252. Ревизии синхронизируются с совместно используемым объектом 252 на веб-сервере 250, так что Пользователь 1 может видеть ревизии, произведенные Пользователем 2, и Пользователь 2 может видеть ревизии, произведенные Пользователем 1.

В другом примере Пользователь 3 может осуществлять доступ к совместно используемому объекту 272 совместно с Пользователем 2 через вложение 270 электронной почты. Пользователь 2 может ревизовать локально хранящийся совместно используемый объект и посылать сообщение электронной почты Пользователю 3, присоединив к нему весь совместно используемый объект или только ревизии совместно используемого объекта. Ревизии, произведенные Пользователем 2, синхронизируются с совместно используемым объектом 252 на веб-сервере 250. Когда электронная почта поступает на клиента 230, ревизии, произведенные Пользователем 2, автоматически синхронизируются с локальным совместно используемым объектом, хранящемся в кэше 232. Пользователь 3 может делать дальнейшие ревизии совместно используемого объекта 272 и отсылать обратно Пользователю 2 весь совместно используемый объект или только ревизии совместно используемого объекта в виде вложения 270 электронной почты. Ревизии, произведенные Пользователем 3, синхронизируются с совместно используемый объектом 252 на веб-сервере 250. Совместно используемый объект на клиенте 220 также обновляется на предмет включения ревизий, произведенных Пользователем 3.

В другом примере Пользователь 1 может осуществлять доступ к совместно используемому объекту либо дома, на клиенте 200, либо на работе, на клиенте 210, через коммутационный сервер 240. Коммутационные серверы часто используются, когда доступ к внешнему серверу не разрешен или отсутствует. Файл 242 ревизии включает в себя ревизии совместно используемого объекта. Файл 242 ревизии можно переносить между клиентами 200, 210 через интерфейс универсальной последовательной шины (USB), приложение электронной почты или какой-либо другой механизм, позволяющий переносить ревизии в любом направлении. Ревизии поступают на клиенты 200, 210, что позволяет обновлять локальный совместно используемый объект, хранящийся в кэшах 202, 212.

Коммутационный сервер 240 может иметь ограничения по размеру файлов, которые он может обрабатывать (например, максимум 2 мегабайта). Пользователь 1 может выгрузить файл 242 ревизии, который включает в себя любые ревизии совместно используемого объекта, с клиента 200 на коммутационный сервер 240. Файл 242 ревизии можно переносить от клиента 200 на клиент 210 подразделами, когда файл 242 ревизии превышает ограничения по размеру, действующие на коммутационном сервере 240. Файловый протокол допускает процесс запроса/выполнения для переноса подразделов. Согласно одному варианту осуществления коммутационный сервер 240 связан с приложением электронной почты. Ревизии, произведенные другим пользователем (Пользователем 2), можно переносить с клиента 220 на клиента 210 через веб-сервер 250 или одноранговую сеть 260, а затем переносить на клиента 200 через учетную запись электронной почты, созданную для Пользователя 1. Согласно другому варианту осуществления клиент 200 периодически опрашивает коммутационный сервер 240 на предмет текущего файла ревизии.

В другом примере между клиентами 210, 220 может быть создана одноранговая сеть 260 в случае потери соединения от клиентов 210, 220 к веб-серверу 250 или когда Пользователь 1 и Пользователь 2 предпочитают осуществлять связь напрямую и синхронно в реальном времени. Пользователь 1 и Пользователь 2 могут предпочитать осуществлять связь через одноранговую сеть 260, потому что совместное использование объекта через веб-сервер 250 может приводить к возникновению разницы по времени, когда ревизии производятся на клиенте 210 и когда ревизии становятся доступны на клиенте 220. Разница по времени может приводить к увеличению нагрузки на сервер. Одноранговая сеть 260 позволяет переносить ревизии совместно используемого объекта напрямую между клиентами 210, 220, а не через веб-сервер 250. Согласно одному варианту осуществления одноранговая сеть 260 является прямой сетью протокола управления передачей/интернет-протокола (TCP/IP). Прямая сеть TCP/IP позволяет быстро сохранять и извлекать ревизии.

Каждый из клиентов 210, 220 может иметь копию совместно используемого объекта 252, хранящуюся в кэше 212, 222, на случай разрыва соединения с веб-сервером 250. Идентификатор одноранговой группы, связанный с совместно используемым объектом 252, указывает, что Пользователь 1 и Пользователь 2 одновременно осуществляют доступ к совместно используемому объекту. Пользователи узнают друг о друге, когда они оба осуществляют доступ к созданной одноранговой сети (например, когда оба пользователя работают на портативных компьютерах в одном и том же самолете). Одноранговая сеть 260 позволяет Пользователю 1 и Пользователю 2 одновременно осуществлять доступ к ревизиям совместно используемого объекта 264 на виртуальном сервере 262 и реализовать дополнительные ревизии. Ревизии мгновенно дублируются на клиентах 210, 220, что позволяет Пользователю 1 и Пользователю 2 активно сотрудничать в отношении совместно используемого объекта 264. Одноранговая сеть 260 может быть заблокирована, когда Пользователь 1 и Пользователь 2 уже не находятся столь близко друг от друга (например, когда пользователи расходятся по своим офисам) или когда Пользователь 1 и Пользователь 2 больше не желают осуществлять связь в реальном времени. Тогда доступ к совместно используемому объекту 252 можно осуществлять через веб-сервер 250. Переход между осуществлением доступа к ревизиям совместно используемого объекта посредством одноранговой сети 260 и посредством веб-сервера 250 осуществляется автоматически и плавно.

Клиенты 210, 220 могут принимать текущие ревизии как от веб-сервера 250, так и из одноранговой сети 260. С каждой ревизией, сделанной в совместно используемом объекте, связывают глобально-уникальный идентификатор (GUID) и метку времени. Метка времени указывает время производства ревизии. Клиент 210 может изменять совместно используемый объект 252 на веб-сервере 250. Клиент 220 определяет, является ли локальная версия совместно используемого объекта в кэше 222 текущей, сравнивая GUID и метку времени, связанные с кэшированным объектом, с GUID и меткой времени, связанными с совместно используемым объектом 252 на веб-сервере 250. Если текущая версия не сохранена локально, то самые последние ревизии, которые не были реализованы в кэшированном объекте, загружаются с веб-сервера 250 на клиент 220 и синхронизируются с локальным файлом. Таким образом, совместно используемый объект не требуется целиком загружать на клиент 220 всякий раз при обновлении локальной версии совместно используемого объекта.

Согласно одному варианту осуществления клиент 220 может определить из GUID и метки времени, связанных с ревизией, что те же модификации доступны из одноранговой сети 260. Однако в результате не происходит никаких действий, поскольку клиент 220 уже реализовал модификации. Согласно другому варианту осуществления клиент 220 может определить из GUID и метки времени, связанных с ревизией, что те же модификации не доступны из одноранговой сети 260. Таким образом, клиент 220 подает ревизии в одноранговую сеть 260, что позволяет другим пользователям, подключенным к одноранговой сети 260, синхронизироваться с текущей версией совместно используемого объекта.

Клиент 220 может принять другую ревизию из одноранговой сети 260. Совместно используемый объект в кэше 222 обновляется. Клиент 220 определяет, доступно ли текущее состояние совместно используемого объекта также на веб-сервере 250, используя GUID и метку времени, связанные с ревизией. Если совместно используемый объект 252 на веб-сервере 250 не синхронизирован с текущим состоянием совместно используемого документа, то клиент 220 подает на веб-сервер 250 самую последнюю ревизию, что позволяет обновить совместно используемый объект 252.

Асинхронная связь может иметь место, когда клиент принимает совместно используемый объект, будучи подключенным к системе через физический сервер. Ограничения сервера могут стать причиной задержки синхронизаций совместно используемого объекта от времени реализации ревизий пользователем. Согласно одному варианту осуществления клиент может ревизовать локально-кэшированную версию совместно используемого объекта, не будучи подключенным к системе. Любые ревизии, произведенные клиентом, можно синхронизировать с совместно используемым объектом, когда клиент повторно подключается к системе через сервер. Клиент может плавно совершать переходы между локальным доступом, синхронной и асинхронной связью, так что пользователь не узнает об изменении режима связи. Пользователь может менять положение, и любые доступные транспортные механизмы совместного использования данных (например, одноранговые сети, серверы) автоматически идентифицируются. Таким образом, пользователь может осуществлять доступ к совместно используемому объекту и сотрудничать с другими уполномоченными пользователями посредством различных механизмов.

С каждым совместно используемым объектом связывают файл декларации. Файл декларации указывает места в системе, где хранятся другие версии и экземпляры совместно используемого объекта. Согласно одному варианту осуществления файл декларации является файлом расширяемого языка разметки (XML). Согласно другому варианту осуществления файл декларации указывает множественные совместно используемые объекты. Согласно другому варианту осуществления файл декларации может быть связан с любым объектом, которым могут совместно пользоваться клиенты. Например, файл декларации может быть связан со всем совместно используемым объектом или любой частью совместно используемого объекта (например, контейнером контента, разделом, страницей, схемой и т.д.).

Файл декларации может храниться в любом месте системы. Как показано на фигуре, файл 254 декларации связан с совместно используемым объектом 252. Совместно используемый объект 252 и файл 254 декларации хранятся на веб-сервере 250. Согласно другому варианту осуществления файл декларации хранится в совместно используемом объекте. Согласно еще одному варианту осуществления файл декларации хранится в активной директории. Согласно еще одному варианту осуществления файл декларации хранится во многих местах в системе. Файл декларации хранится в месте, указанном уникальным идентификатором положения. Уникальный идентификатор положения может указывать файловый сервер, совместно используемую область сервера, веб-сервер или одноранговую группу.

Доступ к совместно используемому объекту можно осуществлять локально из кэша, через сервер или через одноранговую сеть. Клиент извлекает файл декларации из места, указанного уникальным идентификатором положения в соответствующем совместно используемом объекте. Согласно одному варианту осуществления клиент может хранить файл декларации локально для последующей ссылки. Файл декларации указывает положение любых других версий и экземпляров совместно используемого объекта в системе (например, в подхранилище или одноранговой группе). Если в одноранговой группе хранится другая/ой версия/экземпляр совместно используемого объекта, то файл декларации может включать в себя соответствующий идентификатор одноранговой группы.

Согласно одному варианту осуществления клиент 220 осуществляет доступ к совместно используемому объекту 252 на веб-сервере 250. Клиент 220 автоматически соединяется с другими клиентами, которые также осуществляют доступ к совместно используемому объекту 252 (например, одноранговая группа). Клиент 220 извлекает файл 254 декларации, связанный с совместно используемым объектом 252. Файл 254 декларации указывает положения разных версий и экземпляров совместно используемого объекта 252. Таким образом, клиент 220 может создавать одноранговую сеть с любым другим клиентом в одноранговой группе, когда любой клиент в одноранговой группе осуществляет доступ к версии/экземпляру совместно используемого объекта 252, указанной/му файлом 254 декларации. Клиент 220 может отключиться от веб-сервера 250 и продолжать осуществлять доступ к совместно используемому объекту 252 в одноранговой сети.

Согласно другому варианту осуществления клиент 210 может осуществлять доступ к совместно используемому объекту 264 из одноранговой сети 260. Клиент 210 извлекает файл 266 декларации, связанный с совместно используемы объектом 264. Клиент 210 может подключиться к серверу и определить, какие клиенты также подключены к серверу. В отсутствие одноранговой сети 260 доступ к подключенным клиентам можно осуществлять через сервер. Совместно используемый объект 264 (или 252) и связанный с ним файл 264 (или 254) декларации позволяют клиенту 210 (или клиенту 220) автоматически и плавно переходить между асинхронным и синхронным режимами связи.

Пользователям не запрещается осуществлять доступ к совместно используемому объекту и ревизовать его, когда другой пользователь имеет доступ к совместно используемому объекту. Любые уполномоченные пользователи могут одновременно ревизовать совместно используемый объект. Согласно одному варианту осуществления можно осуществлять кратковременную блокировку, чтобы гарантировать целостность транзакции ревизии. Например, пользователь может производить обширную ревизию совместно используемого документа, будучи отключенным от сервера. Когда пользователь повторно подключается к серверу, другим клиентам на короткое время может быть запрещено обращаться к совместно используемому объекту, пока вся ревизия пользователя не будет реализована в совместно используемом объекте.

На фиг.3 показан иерархический граф из связанных узлов, обозначающих различные части совместно используемого объекта. Согласно одному варианту осуществления совместно используемый объект представляет собой блокнот, совместно используемый несколькими пользователями. Узел 300 блокнота обозначает весь совместно используемый объект. Узел 310 папки включен в узел 300 блокнота. Узел 320 раздела включен в узел 310 папки. Узлы 330, 335 страницы включены в узел 310 раздела. Узел 340 таблицы, узел 342 рукописного ввода, узел 344 схемы и узел 346 изображения включены в узел 330 страницы. Узел 350 элемента схемы включен в узел 344 схемы. Узел 360 текста включен в узел 350 элемента схемы. Различные узлы могут быть сгруппированы в контейнер контента. Например, узел 344 схемы, узел 350 элемента схемы и узел 360 текста могут быть сгруппированы в контейнер контента R0. Контейнеру контента R0 присвоен GUID (например, GUID-0). GUID уникально идентифицирует контейнер контента R0.

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

Совместно используемый объект сохраняет исходную версию графа. Затем над отдельными контейнерами контента можно проводить конкретные операции. Например, пользователь может ревизовать данные контейнера контента. Ревизию совместно используемого объекта можно идентифицировать как состояние контейнера контента. Совместно используемый объект сохраняет ревизованные контейнеры контента графа. Текущее состояние контейнера контента сравнивают с предыдущим состоянием с использованием GUID и меток времени, что позволяет определить, был ли ревизован контейнер контента.

Например, два разных пользователя могут осуществлять доступ к совместно используемому документу и изменять контейнер контента R0. Один пользователь может ревизовать контейнер контента R0, удалив узел 360 текста (что показано в ревизии R1). Ревизия R1 сохраняется в совместно используемом объекте. Ревизии R1 присваиваются GUID (например, GUID-1), чтобы уникально идентифицировать ревизованный контейнер, и метка времени, которая идентифицирует время и дату, когда ревизия R1 записана в совместно используемый объект. Другой пользователь может ревизовать контейнер контента R0, добавив узел 380 текста к узлу 350 элемента схемы (что показано в ревизии R2). Ревизия R2 сохраняется в совместно используемом объекте. Ревизии R2 присваивается метка времени и GUID (например, GUID-2), чтобы уникально идентифицировать ревизованный контейнер контента.

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

Например, пользователь может ревизовать контейнер контента совместно используемого объекта, который идентифицирован как ревизия R1 путем добавления узла 370 элемента схемы к узлу 344 схемы (что показано как ревизия R3). Ревизия R3 сохраняется в совместно используемом объекте. Ревизии R3 также присваивается метка времени и GUID (например, GUID-3), чтобы уникально идентифицировать ревизованный контейнер контента. Ревизия R3 является продолжением ревизии R1. Таким образом, ревизия R1 является самой поздней версией совместно используемого объекта, о которой знает пользователь (например, локально сохраненной версией). Совместно используемый объект проверяют, чтобы определить, по-прежнему ли самой поздней версией совместно используемого объекта является ревизия R1. Согласно одному варианту осуществления самую позднюю версию совместно используемого объекта можно определить, сравнив метки времени и GUID разных контейнеров контента. Если самая поздняя версия совместно используемого объекта связана с более новой меткой времени, чем ревизия R1, значит, другой пользователь (например, пользователь, создавший ревизию R2) позднее изменил тот же самый контейнер контента.

Если другой пользователь изменил тот же самый контейнер контента после того, как ревизия R1 была синхронизирована с совместно используемым объектом, то никакие ревизии, являющиеся продолжением ревизии R1 (например, ревизия R3), не могут быть синхронизированы с совместно используемым объектом, пока все последующие ревизии не будут синхронизированы с совместно используемым объектом и пока не будут разрешены и объединены все конфликтующие ревизии. Например, ревизия R2 синхронизируется с совместно используемым объектом после ревизии R1. Таким образом, самая поздняя версия совместно используемого объекта включает в себя ревизию R2. Прежде чем синхронизировать ревизию R3 с совместно используемым объектом, ревизию R3 сравнивают с ревизией R2, чтобы определить, имеется ли конфликт ревизий. Сравнение необходимо, поскольку ревизия R3 является продолжением ревизии R1, которая уже не связана с самой поздней версией совместно используемого объекта. Определяют, что ревизия R3 не конфликтует с ревизией R2, поскольку узел 370 элемента схемы можно добавить к узлу 344 схемы, не нарушая ревизию R2.

Согласно одному варианту осуществления совместно используемый объект ревизуют, перемещая контейнер контента из одного места в другое в совместно используемом объекте. Например, узел 340 таблицы можно переместить из узла 330 страницы в узел 335 страницы. Производят определение, что узел 340 таблицы перемещен в новое место, но не могут определить, в какое. В исходном положении узла 340 таблицы создают узел посредника. Узел посредника реализуют в новом положении узла 340 таблицы, когда определено новое положение узла 340 таблицы. Если узел таблицы 340 удаляют до того, как определено новое положение, то узел посредника отбрасывают.

Разные пользователи могут одновременно редактировать совместно используемый объект. Обычно пользователи ревизуют разные контейнеры контента совместно используемого объекта. Таким образом, ревизии каждого пользователя можно синхронизировать с совместно используемым объектом без дополнительной обработки. Конфликт может возникнуть, когда два пользователя редактируют один и тот же контейнер контента совместно используемого объекта (например, одни и те же табличные значения, одно и то же предложение). Конфликт между ревизиями разных пользователей может сказываться асинхронно. Например, пользователь может ревизовать локально-кэшированную версию совместно используемого объекта, не будучи подключенным к серверу. Ревизии синхронизируются с совместно используемым объектом, когда пользователь повторно подключается к серверу. Однако ревизии могут конфликтовать с другими ревизиями, которые уже были синхронизированы с совместно используемым объектом.

Например, ревизия R4 является продолжением ревизии R3. Ревизия R4 удаляет узел 350 элемента схемы из узла 344 схемы. Определено, что самая поздняя версия совместно используемого объекта включает в себя ревизию R2. Сравнение между ревизией R2 и ревизией R4 выявляет конфликт, поскольку узел 350 элемента схемы присутствует в ревизии R2, но удален в ревизии R4.

Для разрешения конфликтов осуществляется трехстороннее согласование между ис