СОГЛАСОВАННОСТЬ КОЛЛЕКТИВНОЙ РАБОТЫ ПО ПЕРЕКРЕСТНЫМ КАНАЛАМ
COORDINATION OF COLLECTIVE WORK ON CROSS CHANNELS

УРОВЕНЬ ТЕХНИКИ
Сетевые системы совместной работы над документами позволяют множеству пользователей одновременно осуществлять доступ и коллективную работу над документом. Несмотря на то, что множеству пользователей позволено коллективно работать над документом, для того, чтобы предотвратить конфликты, система может ограничить области в документе, в которые каждый пользователь может вносить правки. Если связанная с этими ограничениями информация не сообщается другим коллективным пользователям, то шансы на конфликты при изменениях, когда копии документов объединяются, увеличиваются.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Варианты осуществления настоящего изобретения направлены на вычислительное устройство, содержащее блок обработки и системную память с инструкциями, которые при исполнении блоком обработки побуждают блок обработки создавать: модуль обработки документа, который обрабатывает создание и редактирование содержимого документа; и модуль обработки метаданных, который генерирует, контролирует и хранит метаданные для документа на вычислительном устройстве, причем модуль обработки метаданных генерирует метаданные о создании блокировки, которые включают в себя информацию о новой блокировке, которая создается, когда пользователь начинает редактировать часть документа, метаданные об удалении блокировки, которые включают в себя информацию об удалении блокировки, и метаданные о стирании блокировки, которые включают в себя информацию о стирании блокировки, при этом модуль обработки метаданных записывает метаданные о создании блокировки как в канал данных, так и в отдельный канал метаданных, причем канал данных является первым каналом связи между вычислительным устройством и серверным компьютером, по которому передаются содержимое и метаданные блокировки, связанные с документом, а канал метаданных является вторым каналом связи между вычислительным устройством и серверным компьютером, по которому передаются метаданные блокировки, связанные с документом, при этом модуль обработки метаданных записывает метаданные об удалении блокировки в канал данных и записывает метаданные о стирании блокировки в канал метаданных.
Подробности одного или более способов изложены на прилагающихся чертежах и в нижеследующем описании. Другие признаки, цели и преимущества этих способов будут очевидны из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
На Фиг. 1 показана примерная система для согласованности коллективной работы по перекрестным каналам.
На Фиг. 2 показаны примерные модули примерного клиентского компьютера с Фиг. 1, который реализует возможность для согласованности коллективной работы по перекрестным каналам.
На Фиг. 3 показана первая часть блок-схемы способа применения метаданных к документу на клиентском компьютере.
На Фиг. 4 показана вторая часть блок-схемы способа применения метаданных к документу на клиентском компьютере.
На Фиг. 5 показана третья часть блок-схемы способа применения метаданных к документу на клиентском компьютере.
На Фиг. 6 показаны примерные компоненты клиентского компьютера с Фиг. 2.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
Настоящая заявка направлена на системы и способы обеспечения согласованности информации по перекрестным каналам при объединении данных документа в сетевой системе совместной работы над документами. В раскрываемых системах и способах, для примерных блокировок для областей документа, метаданные передаются по каналу метаданных, а содержимое документа и метаданные передаются по каналу данных. Системы и способы раскрывают установленные приоритеты правил, которые указывают, когда метаданные должны надлежащим образом применяться к документу.
На Фиг. 1 показана примерная система 100, которая поддерживает согласованность по перекрестным каналам при применении метаданных к документам. Система 100 содержит клиенты 102, 104, сервер 106 и сеть 108. Может использоваться большее или меньшее количество клиентов или серверов. Здесь и далее термины "клиент" и "клиентский компьютер" используются взаимозаменяемо и термины "сервер" и "серверный компьютер" используются взаимозаменяемо.
Среди множества информации, хранимой на клиентах 102, 104, существует клиентская операционная система ("ОС") и клиентские приложения. Клиентская ОС является программой, которая управляет аппаратным обеспечением и программными ресурсами клиентской системы. Клиентские приложения используют ресурсы клиентов 102, 104 для непосредственного выполнения задач, указанных пользователем. Например, клиенты 102, 104 содержат одно или более программных приложений, таких как программы обработки текста, которые используются для создания и редактирования файлов документов. Одним примером такого приложения является Microsoft Word от корпорации Microsoft из Редмонда, Вашингтон. Также применимы другие примеры таких приложений.
Сервер 106 является файл-сервером, который доступен по сети. Сервер 106 хранит множество файлов. Эти файлы могут содержать и программные приложения, и документы, как дополнительно описано в настоящем документе. Сервер 106 управляет доступом к документам, хранимым сервером 106.
Согласно примерным вариантам осуществления сервер 106 может размещаться внутри организации или может быть частью системы совместной работы над документами. Примерной системой совместной работы над документами являются командные сервисы SHAREPOINT, серверный портал сервисов, предоставленный корпорацией Microsoft. Примерным сервером совместного использования документов является Microsoft Office SharePoint Server 2007, предоставляемый корпорацией Microsoft. Могут использоваться другие конфигурации.
Метаданные представляют собой информацию о данных. Некоторыми примерами обычных метаданных являются имя документа, дата создания или последнего редактирования, редактирующие в данный момент документ авторы, просматривающие в данный момент документ авторы, идентификаторы абзацев и блокировки абзацев. Возможны другие типы метаданных документа. Здесь и далее метаданные содержат блокировки, применяемые к областям документа, чтобы не позволить множеству пользователей одновременно редактировать одну и ту же область документа. Областью документа обычно является абзац, но она может содержать заголовки абзаца, таблицы, предложения и т.д. Метаданные содержат метаданные для создания блокировки, метаданные для удаления блокировки и метаданные для стирания блокировки.
Согласно примерным вариантам осуществления метаданные передаются по каналу 111 метаданных. В примерных вариантах осуществления, для обеспечения согласованности по перекрестным каналам, метаданные также передаются по каналу 113 данных. Канал 113 данных также используется для отправки информации о содержимом документа на и от серверного компьютера 106.
Метаданные для создания блокировки, называемые метаданными о создании блокировки, записываются в канал 111 метаданных, когда коллективный пользователь модифицирует содержимое области документа, например, посредством ввода в абзац или посредством внесения изменений в форматирование. Метаданные о создании блокировки применяют блокировку к абзацу для всех других коллективных пользователей, не позволяя другим коллективным пользователям редактировать ту же область документа. Как дополнительно рассмотрено ниже, для того, чтобы обеспечить согласованность по перекрестным каналам, метаданные о создании блокировки также содержатся в канале 113 данных, когда документ сохранен.
Метаданные для удаления блокировки, называемые метаданными об удалении блокировки, записываются в канал 113 данных, когда коллективный пользователь закончил редактировать область документа, обычно абзац. Метаданные об удалении блокировки записываются в канал 113 данных, чтобы синхронизировать удаление блокировки с обновлением содержимого. Когда коллективный пользователь заканчивает редактирование области документа, коллективный пользователь обычно выполняет операцию сохранения. Во время операции сохранения, содержимое документа записывается в канал 113 данных и отправляется на сервер 106. Запись метаданных об удалении блокировки в канал 113 данных, наряду с содержимом документа, гарантирует, что метаданные для удаления блокировки для отредактированной области документа приняты в то же время, что и содержимое документа. Это предотвращает потенциальную проблему, когда блокировка удаляется до приема обновленного содержимого, потенциально позволяя пользователю редактировать область документа, которая не имеет последнее обновленное содержимое.
Метаданные для стирания блокировки, называемые метаданными о стирании блокировки, записываются в канал 111 метаданных, когда блокировка явно стерта, например, посредством активации кнопки стирания блокировки или посредством истечения лимита времени ожидания(тайм-аута). Блокировка может быть явно стерта по нескольким причинам. Например, пользователь может начать редактировать область документа, создать блокировку для этой области документа и затем отменить без сохранения. Без явного способа стирания блокировки, блокировка будет все еще действовать. В качестве другого примера, пользователь может начать редактировать область документа, создать блокировку для этой области документа и отойти на длительный период времени или отсоединиться от сети 108 на длительный период времени. Для этих случаев, система совместной работы над документами может использовать тайм-аут, который заставляет все блокировки для коллективного пользователя прекратить действие после определенного времени. Для этого примера, тайм-аут заставляет метаданные о стирании блокировки записываться в канал 111 метаданных для областей редактируемого документа.
Каждый блок метаданных блокировки имеет связанный с ним идентификатор. В этом примере, идентификатор содержит число, которое идентифицирует блокировку и которое также идентифицирует раздел документа, для которого указана блокировка, как дополнительно описано ниже. Блокировка может также содержать идентификатор для пользователя, который инициировал создание, удаление или стирание блокировки. Идентификатор присваивается блокировке, когда блокировка создана и используется тот же идентификатор, что и при стирании или удалении блокировки. Таким образом, всегда существует пара создания блокировки, стирания/удаления блокировки, связанная с блокировкой.
Если область документа редактируется, вызывая создание блокировки, и выполнена операция сохранения, заставляя блокировку удалиться, и затем та же область документа редактируется снова, для области документа создается новая блокировка. Новой блокировке присваивается новый идентификатор, даже если редактируется тот же раздел документа. Как разъяснено ниже, идентификатор блокировки используется в качестве дополнительного средства для улучшения согласованности по перекрестным каналам.
Примерная система совместной работы над документами предоставляет историю каждого создания блокировки, стирания блокировки и удаления блокировки. История предоставляется в канале 111 метаданных. Как разъяснено дополнительно ниже, история создания блокировки, стирания блокировки и удаления блокировки используется в качестве дополнительного средства для улучшения согласованности по перекрестным каналам.
На Фиг. 2 показан подробный вид логических модулей клиентского компьютера 102. Клиентский компьютер 102 содержит примерный модуль 202 обработки документов и примерный модуль 204 обработки метаданных.
Примерный модуль 202 обработки документов выполняет операции текстового редактора, такого как Microsoft Word. Примерный модуль 202 обработки документов позволяет создавать и открывать, модифицировать и сохранять документы. Примерный модуль 202 обработки документов использует канал 113 данных для сохранения содержимого документа на сервер 106. Канал 113 данных является относительно медленным каналом, потому что, когда документ сохраняется, содержимое всего документа отправляется на сервер 106.
Согласно примерным вариантам осуществления коллективные пользователи на клиентах 102 и 104 могут редактировать один и тот же документ. Если сначала коллективный пользователь на клиенте 102 открывает документ, примерный модуль 202 обработки документов получает копию документа от сервера 106 и открывает документ на клиенте 102. Когда коллективный пользователь на клиенте 104 открывает документ, примерный модуль 202 обработки документов получает копию документа от сервера 106 и открывает документ на клиенте 104. Если коллективный пользователь на клиенте 102 вносит изменения в документ до того, как коллективный пользователь на клиенте 104 откроет документ, но коллективный пользователь на клиенте 102 не сохраняет изменения, коллективный пользователь на клиенте 104 не видит изменений, когда коллективный пользователь на клиенте 104 открывает документ.
Согласно примерным вариантам осуществления второй коллективный пользователь не видит изменений, которые первый коллективный пользователь вносит в документ, пока и первый, и второй коллективные пользователи не сохранят изменения в документе. Например, когда коллективный пользователь на клиенте 102 сохраняет изменения в открытом на клиенте 102 документе, коллективный пользователь на клиенте 104 не видит изменений, пока коллективный пользователь на клиенте 104 не сохранит изменения в открытом на клиенте 104 документе. Когда коллективный пользователь на клиенте 104 сохраняет изменения в открытом на клиенте 104 документе, после того как коллективный пользователь на клиенте 102 сохранил изменения в документе на клиенте 102, изменения в документе, сделанные на клиенте 102, объединяются с документом, открытым на клиенте 104.
Примерный модуль 204 обработки метаданных обрабатывает метаданные для документов, открытых на примерной системе совместной работы над документами. Когда коллективный пользователь на клиенте 102 открывает документ и модифицирует содержимое в документе, например, посредством ввода в абзац документа, примерный модуль обработки метаданных на клиенте 102 создает блокировку для абзаца. Блокировкой являются метаданные, которые содержат идентификатор абзаца, который идентифицирует заблокированный абзац документа. Метаданные блокировки также содержат идентификатор для коллективного пользователя, редактирующего документ, и метаданные блокировки содержат идентификатор для блокировки.
Дополнительные подробности, рассматривающие блокировки абзацев, могут быть найдены в патентной заявке США № 12/145536, поданной 25 июня 2008 года, которая включена в настоящий документ посредством ссылки в полном объеме.
Согласно примерным вариантам осуществления каждая блокировка имеет идентификатор блокировки, который идентифицирует блокировку. Идентификатор блокировки является случайным числом, сгенерированным примерным модулем 204 обработки метаданных, который создает блокировку. Каждый раз создается новая блокировка, даже если новая блокировка создана для того же абзаца, что и предыдущая блокировка, для блокировки генерируется новый идентификатор блокировки. Идентификатор блокировки используется, чтобы определить, когда блокировка должна быть применена, удалена или стерта из документа.
Когда блокировка создана, блокировка записывается в примерный канал 111 данных и отправляется на серверный компьютер 106. Канал 111 метаданных является быстрым каналом, отдельным от канала 113 данных. Канал 111 метаданных обычно обновляется быстрее, чем канал 113 данных, потому что обычно по каналу 111 метаданных передается меньше информации, так что информация передается на сервер 106 быстрее, чем информация по каналу 113 данных. Может быть полезным использовать канал 111 метаданных для распространения блокировок, чтобы незамедлительно предупредить коллективных пользователей, что другой коллективный пользователь редактирует область документа, и минимизировать возможность редактирования той же области документа другими коллективными пользователями.
Согласно примерным вариантам осуществления первоначальные метаданные сразу же передаются по примерному каналу 111 метаданных на сервер 106, но в дальнейшем дополнительные метаданные отправляются на сервер 106 с периодичными интервалами, например, каждые 5 секунд, 10 секунд, 30 секунд, 45 секунд, 1 минуту, 5 минут или 10 минут. Дополнительные метаданные отправляются на сервер 106 скорее периодически, а не сразу, по причине производительности, например, чтобы снизить нагрузку на сервер 106. Когда коллективный редактор на клиенте 102 начинает редактирование, например в абзаце 1 открытого на клиенте 102 документа, для абзаца 1 создается блокировка и отправляется на сервер 106 по каналу 111 метаданных. Когда блокировка принята на клиенте 104, блокировка не позволяет коллективному пользователю на клиенте 104 редактировать абзац 1 документа.
Если коллективный пользователь на примерном клиенте 102 в данный момент редактирует абзац 8, для абзаца 8 создается блокировка, но блокировка не отправляется на сервер 106 по каналу 111 метаданных пока не закончится периодический временной интервал. Например, если периодический временной интервал составляет 30 секунд, и коллективный пользователь на клиенте 102 вводит в абзац 8 через три секунды после отправки блокировки для абзаца 1 на сервер 106, блокировка для абзаца 8 не отправляется на сервер 106 по каналу 111 метаданных еще 27 секунд. По этому примеру, если коллективный пользователь на клиенте 102 выполняет операцию сохранения до истечения 27 секунд, возможно, что информация о содержании для абзаца 8 поступит на клиент 104 до того, как блокировка для абзаца 8 поступит по каналу 111 метаданных.
По этой причине, когда примерный модуль 204 обработки метаданных создает блокировку для абзаца и записывает блокировку в канал 111 метаданных, примерный модуль 204 обработки метаданных также записывает блокировку в канал 113 данных. Затем, когда коллективный пользователь на клиенте 102 выполняет операцию сохранения для внесенных правок в документ, открытый на клиенте 102, блокировка для абзаца передается на сервер 106 по каналу 113 данных в то же время, в которое по каналу 113 данных передаются изменения содержимого для абзаца на сервер 106.
Предоставление метаданных о создании блокировки и по каналу 111 метаданных, и по каналу 113 данных помогает минимизировать любые проблемы латентности, связанной с периодической природой обновлений по каналу 111 метаданных, описанных выше. Если блокировка поступает по каналу 111 метаданных на клиент 104 до операции сохранения, блокировка не позволит коллективному пользователю на клиенте 104 редактировать абзац. Если операция сохранения выполнена на клиенте 102 и изменения содержимого поступили по каналу 113 данных от операции сохранения на клиент 104 до блокировки из канала 111 метаданных, блокировка из канала 113 метаданных поступает на клиент 104 наряду с изменениями содержимого. Блокировка в канале 113 данных не позволяет коллективному пользователю на клиенте 104 редактировать абзац.
Удаление блокировки происходит посредством канала 113 данных, обычно в результате операции сохранения. В системе совместной работы над документами могут существовать, по меньшей мере, два разных типа операций сохранения. В одном примере операции сохранения, данные содержимого сохраняются на сервере 106, но информация о содержимом не обозначена для совместного использования. По этому примеру, коллективный пользователь сохраняет отредактированное содержимое для того, чтобы сохранить содержимое на сервере 106, но содержимое может быть пока не в том состоянии, при котором коллективный пользователь комфортно чувствует совместное использование содержимого c другими коллективными пользователями. По другому примеру операции сохранения, коллективный пользователь обозначает содержимое для совместного использования. Согласно настоящему изобретению операция сохранения находится в соответствии со вторым примером, что значит, что операция сохранения обозначает сохраненное содержимое для совместного использования с другими коллективными пользователями.
Удаление блокировки происходит посредством канала 113 данных, так как операция сохранения обычно указывает, что коллективный пользователь закончил редактировать абзацы сохраненного документа. Если коллективный пользователь желает продолжить редактировать один или более абзацев, то для каждого абзаца, который редактирует коллективный пользователь, создается новый идентификатор блокировки.
Метаданные об удалении блокировки записываются в канал 113 данных для гарантии того, что метаданные об удалении блокировки приняты на сервере 106 в то же время, в которое изменилось содержимое. Это гарантирует, что когда другой коллективный пользователь, например коллективный пользователь на примерном клиенте 104, принимает метаданные об удалении блокировки, позволяя коллективному пользователю на клиенте 104 редактировать заблокированный абзац, открытый на клиенте 104 документ также обновлен до последнего содержимого. Это гарантирует, что когда удалена блокировка, соответствующая метаданным об удалении блокировки, коллективный пользователь на клиенте 104 редактирует обновленное содержимое.
Когда происходит удаление блокировки, в дополнение к записи метаданных об удалении блокировки в канал 113 данных, метаданные об удалении блокировки также записывается в канал 111 метаданных. Метаданные об удалении блокировки из канала 111 метаданных обычно поступают на сервер 106 до поступления метаданных об удалении блокировки из канала 113 данных на сервер 106. Когда сервер 106 принимает метаданные об удалении блокировки, сервер 106 изменяет тип блокировки заблокированного абзаца для других коллективных пользователей документа. Новый тип блокировки указывает, что заблокированный абзац больше не редактируется. Это информирует пользователя, например коллективного пользователя на клиенте 104, о том, что абзац доступен для редактирования. Однако абзац все еще заблокирован для коллективного пользователя на клиенте 104. Когда коллективный пользователь на клиенте 104 выполняет операцию сохранения, сервер 106 обновляет клиент 104 обновленными изменениями содержимого в абзаце и удаляет блокировку абзаца.
Метаданные о стирании блокировки отправляются на сервер 106 по каналу 111 метаданных. Метаданные о стирании блокировки отличаются от метаданных об удалении блокировки. Метаданные об удалении блокировки генерируются, когда пользователь больше не редактирует область документа. Метаданные о стирании блокировки возникают ввиду явного действия коллективного пользователя или явного действия системы совместной работы над документами. Например, как описано выше, пользователь может начать редактировать один или более абзацев и решить отменить правки без сохранения. Так как метаданные о создании блокировки записаны и в канал 111 метаданных, и в канал 113 данных, когда коллективный пользователь вводит данные в абзац, коллективный пользователь может нажать клавишу стирания, связанную с примерным модулем 202 обработки документов. Нажатие примерной клавиши стирания заставляет метаданные о стирании блокировки записываться в канал 111 метаданных.
Как рассмотрено ниже, метаданные о стирании блокировки имеют более высокий приоритет, чем метаданные о создании блокировки. В результате, когда метаданные из канала 111 метаданных обработаны на клиенте 104, метаданные о стирании блокировки удаляют любые блокировки, имеющие идентификаторы блокировок метаданных о стирании блокировки, из открытого на клиенте 104 документа.
Метаданные о стирании блокировки также явно генерируются системой совместной работы над документами при определенных условиях. Например, если пользователь редактирует один или более абзацев документа, не сохраняет изменения, не закрывает документ и идет на ночь домой, блокировки все еще активны для всех абзацев, которые редактировал пользователь. Эти блокировки не позволяют другим коллективным пользователям редактировать абзацы. Модуль 204 обработки метаданных решает эту ситуацию за счет прекращения действия блокировок после заранее заданного периода времени и генерирования метаданных о стирании блокировки для блокировок.
Когда клиент 104 принимает метаданные, например, сгенерированные клиентом 102, установленные приоритеты правил на клиенте 104 определяют, как метаданные должны применяться к открытому на клиенте 104 документу. Когда коллективный пользователь на клиенте 104 получает документ от сервера 106 и открывает документ на клиенте 104, метаданные получаются для документа по каналу 111 метаданных. Если метаданные содержат одну или более блокировок для одного или более абзацев документа, клиент 104 определяет, содержат ли метаданные одно или более удалений блокировки, имеющей такой же идентификатор блокировки, как одна или более блокировок. Если метаданные содержат удаление блокировки, имеющей такой же идентификатор блокировки, что и блокировка, содержащаяся в метаданных, блокировка не применяется к документу. Причина в том, что удаление блокировки всегда происходит после создания блокировки, так что удаление блокировки является более актуальным. Однако, если метаданные не содержат удаление блокировки, имеющей такой же идентификатор блокировки, что и блокировка, содержащаяся в метаданных, блокировка применяется к абзацу в документе, указанному в метаданных блокировки. Блокировка не позволяет коллективному пользователю на клиенте 104 редактировать документ.
Как только на клиенте 104 открыли документ и первоначальные метаданные применены к документу, как указано выше, согласно примерным вариантам осуществления, к документу применяются дополнительные метаданные с периодическими интервалами, обычно 30 секунд. К тому же, согласно примерным вариантам осуществления, дополнительные обновления содержимого к документу применяются только, когда на клиенте 104 выполнена операция сохранения. Когда наступает следующий периодический временной интервал, метаданные получаются от сервера 106 посредством канала 111 метаданных. Метаданные применяются к документу согласно правилам приоритета. Примерный модуль 204 обработки метаданных на клиенте 104 сначала определяет, содержат ли метаданные какие-либо стирания блокировок. Стирания блокировок в канале 111 метаданных являются метаданными самого высокого приоритета, указывая, что блокировка должна быть явно удалена.
Примерный модуль 204 обработки метаданных на клиенте 104 затем определяет, содержат ли метаданные, полученные от сервера 106, какие-либо создания блокировок. Если метаданные содержат одно или более созданий блокировок, делается определение того, содержали ли метаданные также какие-либо удаления блокировок, которые совпадают с идентификатором блокировки одного или более созданий блокировок. Если создание блокировки не имеет соответствующего удаления блокировки с таким же идентификатором блокировки, блокировка, соответствующая созданию блокировки, применяется к абзацу документа, идентифицированного в создании блокировки. Однако, если создание блокировки имеет соответствующее удаление блокировки с таким же идентификатором блокировки, блокировка, соответствующая созданию блокировки, не применяется к абзацу документа, идентифицированного в создании блокировки. Это потому, что удаление блокировки всегда происходит после создания блокировки, и если удаление блокировки и создание блокировки имеют одни и те же идентификаторы, блокировка отменяется.
Когда коллективный пользователь на клиенте 104 выполняет операцию сохранения, обновленное содержимое для документа получается от сервера 106. Обновленное содержимое отражает любые внесенные другими коллективными пользователями изменения в документ, которые сохраняют их изменения содержимого на сервере 106, с последней операции сохранения на клиенте 104. Обновленное содержимое отправляется с сервера 106 на клиент 104 по каналу 113 данных. Когда клиент 104 принимает обновленное содержимое от сервера 106, клиент 104 определяет, содержат ли последние принятые метаданные какие-либо удаления блокировок. Если последние принятые метаданные от сервера 106 содержат какие-либо удаления блокировок, идентифицированная удалением блокировки блокировка удаляется из абзаца документа, идентифицированного удалением блокировки. Причиной, по которой не происходит удаления блокировки до осуществления обновления содержимого, состоит в том, что когда блокировка удалена и коллективный пользователь начинает редактировать абзац, который был заблокирован, коллективный пользователь редактирует самое последнее на тот момент содержимое для документа, который сохранен на сервере 106.
На Фиг. 3-5 показана примерная блок-схема 300 для способа применения метаданных к документу для обеспечения согласованности информации по перекрестным каналам. При операции 302 документ, обозначенный для коллективной работы, получается от серверного компьютера 106. При операции 304 документ открывается коллективным пользователем на клиенте 104. При операции 306 клиент 104 принимает первое сообщение от серверного компьютера 106, которое содержит первые метаданные для документа. Серверный компьютер 106 отправляет первые метаданные на клиент 104, когда документ открыт на клиенте 104. Первые метаданные отправляются по каналу 111 метаданных. Первые метаданные содержат одну или более блокировок для документа. Блокировка указывает, что один или более коллективных пользователей, например коллективный пользователь на клиенте 102, модифицировали одну или более областей документа.
При операции 308 клиент 104 принимает второе сообщение от серверного компьютера 106, которое содержит вторые метаданные для документа. Вторые метаданные также отправляются по каналу 111 метаданных. При операции 310 делается определение того, содержат ли вторые метаданные одно или более стираний блокировок. Когда определено, что вторые метаданные содержат одно или более стираний блокировок, при операции 312 делается определение того, совпадает ли одно или более стираний блокировок с блокировкой, примененной к документу. Каждое стирание блокировки имеет идентификатор, и каждая блокировка имеет идентификатор. Если сделано определение того, что идентификатор для стирания блокировки совпадает с идентификатором для блокировки документа, при операции 314 блокировка документа стирается.
При операции 316 делается определение того, содержат ли вторые метаданные создания блокировок. Когда определено, что вторые метаданные содержат создания блокировок, при операции 318 делается определение того, содержат ли вторые метаданные удаления блокировок. Когда определено, что вторые метаданные содержат удаления блокировок, при операции 320 делается определение того, совпадает ли идентификатор для удаления блокировки с идентификатором для создания блокировки. Когда определено, что нет удалений блокировок или когда определено, что удаления блокировок есть и ни одно из удалений блокировок не совпадает с созданием блокировки, при операции 322 блокировки, соответствующие созданиям блокировок во вторых метаданных, применяются к документу. Если создание блокировки имеет соответствующее удаление блокировки, блокировка не применяется к документу для создания блокировки. Так как удаление блокировки происходит после создания блокировки, удаление блокировки указывает, что область документа, соответствующая созданию блокировки, больше не нуждается в блокировке.
При операции 324 клиент 104 принимает третье сообщение от серверного компьютера 106, которое содержит содержимое документа и которое содержит также третьи метаданные. Третье сообщение обычно принимается после того, как коллективный пользователь на клиенте 104 выполнит операцию сохранения, чтобы сохранить содержимое для документа, открытого на клиенте 104. Содержащееся в третьем сообщении содержимое документа является обновленным содержимым документа от другого коллективного пользователя, например коллективного пользователя на клиенте 102. Третье сообщение принимается по каналу 113 данных. Третье сообщение принимается по каналу 113 данных для гарантии того, что удаления блокировок приняты в то же время, что и обновленное содержимое документа. Это гарантирует, что если блокировка удалена, область документа, для которой удалена блокировка, имеет самое последнее содержимое.
При операции 326 делается определение того, содержат ли третьи метаданные удаления блокировок. Когда определено, что третьи метаданные содержат одно или более удалений блокировок, при операции 312 делается определение того, совпадает ли одно или более удалений блокировок с блокировкой, примененной к документу. Каждое удаление блокировки имеет идентификатор, и каждая блокировка имеет идентификатор. Если сделано определение того, что идентификатор для удаления блокировки совпадает с идентификатором для блокировки документа, при операции 314 блокировка документа удаляется.
Вышеуказанное рассмотрение согласованности коллективной работы по перекрестным каналам описывает двух коллективных пользователей. Согласно другим вариантам осуществления более чем два коллективных пользователя могут редактировать один и тот же документ. Те же самые операции объединения метаданных применяются для примерных вариантов осуществления, имеющих более двух коллективных пользователей.
На Фиг. 6 показаны примерные компоненты клиента 102. Согласно примерным вариантам осуществления клиент 102 является вычислительным устройством, таким как настольный компьютер, портативный компьютер, карманный компьютер или сотовое устройство. Клиент 102 может содержать устройства ввода/вывода, центральный блок обработки данных (CPU), устройство хранения данных и сетевое устройство.
В базовой конфигурации вычислительное устройство 102 обычно содержит, по меньшей мере, один блок 402 обработки данных и системную память 404. В зависимости от требуемой конфигурации и типа вычислительного устройства системная память 404 может быть энергозависимой (такой как RAM), энергонезависимой (такой как ROM, флэш-память и т.д.) или некоторой комбинацией этих двух. Системная память 404 обычно содержит операционную систему 406, пригодную для управления работой сетевого персонального компьютера, такую как операционные системы WINDOWS от корпорации Microsoft из Редмонда, Вашингтон, или сервер, как например Windows SharePoint Server 2007, также от корпорации Microsoft из Редмонда, Вашингтон. Системная память 404 может также содержать одно или более программных приложений 408 и может содержать программные данные.
Вычислительное устройство 102 может иметь дополнительные признаки или функциональность. Например, вычислительное устройство 102 может также содержать дополнительные устройства хранения данных (сменные или стационарные), такие как, например, магнитные диски, оптические диски или пленка. Такое дополнительное устройство хранения проиллюстрировано на Фиг. 6 в виде сменного устройства 410 хранения и стационарного устройства 412 хранения. Машинные носители информации могут включать в себя энергозависимые и энергонезависимые, сменные и стационарные носители, реализованные любым способом или технологией хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Системная память 404, сменное устройство 410 хранения и стационарное устройство 412 хранения являются примерами машинных носителей информации. Машинные носители информации содержат, но не ограничены этим, RAM, ROM, EEPROM, флэш-память или память другой технологии, CD-ROM, универсальные цифровые диски (DVD) или другое оптическое устройство хранения, магнитные кассеты, магнитную пленку, устройства хранения на магнитных дисках или другие магнитные устройства хранения, или любой другой носитель информации, который может быть использован для хранения требуемой информации и к которому можно получить доступ посредством вычислительного устройства 102. Любые подобные машинные носители информации могут быть частью устройства 102. Вычислительное устройство 102 может также иметь устройство(а) 414 ввода, как например, клавиатура, мышь, перо, устройство голосового ввода, устройство сенсорного ввода и т.д. Также могут содержаться устройство(а) 416 вывода, как например, дисплей, колонки, принтер и т.д. Эти устройства хорошо известны в данной области техники и не нуждаются в подробном рассмотрении в настоящем документе.
Вычислительное устройство 102 может также содержать коммуникационные соединения 418, которые позволяют устройству осуществлять связь с другими вычислительными устройствами 420, как например, по сети в распределенной вычислительной среде, например Интранет или Интернет. Коммуникационное соединение 418 является одним примером коммуникационных сред. Коммуникационные среды обычно могут быть осуществлены посредством машиночитаемых инструкций, структур данных, программных модулей или других данных в модулированном сигнале данных, как например, несущая волна или другой транспортный механизм, и содержат любые среды доставки информации. Термин "модулируемый сигнал данных" означает сигнал, у которого один или более параметров установлены или изменены таким образом, чтобы кодировать информацию в сигнале. В качестве примера, но не ограничения, коммуникационные среды включают в себя проводные среды, как например проводная сеть или прямое проводное соединение, и беспроводные среды, как например акустические, РЧ, инфракрасные и другие беспроводные среды. Термин "машиночитаемые носители информации", использованный в настоящем документе, включает в себя и носители информации и коммуникационные среды.
Различные варианты осуществления, описанные выше, предоставлены только в качестве иллюстрации и не должны толковаться как ограничивающие. Различные модификации и изменения могут быть внесены в вышеописанные варианты осуществления без отступления от истинной сути и границ разглашения.