СОВМЕСТНАЯ АВТОРСКАЯ ПОДГОТОВКА ДОКУМЕНТА
DOCUMENT CO-AUTHORING

Область техники, к которой относится изобретение
Настоящее изобретение относится, в общем, к компьютерной технике и, более конкретно, к компьютерно-реализуемой совместной авторской подготовке документов.
Предшествующий уровень техники
Традиционное совместное редактирование обычно выполняется последовательно. Пользователи поочередно осуществляют доступ к документу, редактируют документ и сохраняют свои корректировки. Осуществляющий доступ пользователь может установить блокировку на файл, чтобы запрещать другим пользователям редактирование документа, когда осуществляющий доступ пользователь редактирует документ. Итерационный процесс редактирования может вызывать задержки, поскольку каждый пользователь может ожидать в очереди на редактирование документа. Кроме того, итерационным процессом редактирования может быть трудно управлять. Например, каждому пользователю может быть необходимо сохранять отслеживание того, кто какие части документа редактирует, какая версия документа является самой последней и когда пользователь дождется своей очереди.
В других типах традиционного совместного редактирования каждый пользователь может редактировать отличающуюся копию документа. Впоследствии все отредактированные копии могут быть объединены в один документ. Это большое по масштабу слияние также может вызывать задержки, приводить к многочисленным конфликтам редактирования и/или им трудно управлять. Например, может потребоваться пользователь, ответственный за слияние документов, чтобы отслеживать взаимосвязь между документами. Пользователь также может быть ответственен за разрешение конфликтов между двумя или более отредактированными копиями.
Относительно этих и других соображений настоящее изобретение было реализовано.
Сущность изобретения
Это краткое изложение сущности изобретения предоставлено для того, чтобы представить выбор концепций в упрощенной форме, которые дополнительно описаны ниже в подробном описании. Это краткое изложение сущности изобретения не предназначено, ни чтобы идентифицировать ключевые признаки или неотъемлемые признаки заявленного предмета изучения, ни чтобы использоваться как помощь в определении объема заявленного изучения.
Приложение совместной авторской подготовки предоставляет среду авторской подготовки, в которой два или более пользователей могут редактировать документ одновременно. Каждый пользователь редактирует копию документа, периодически отправляет обновления в мастер-копию документа и периодически принимает обновления из мастер-копии документа. Среда авторской подготовки, как правило, запрещает пользователям предоставлять конфликтующие инструкции редактирования в мастер-копию документа. В других вариантах осуществления среда авторской подготовки может запрещать конфликты редактирования, если пользователи редактируют документ в различные моменты времени.
Согласно аспектам изобретения, каждый подготавливаемый документ может быть поделен на один или более блоков данных. Каждый пользователь может формировать блокировку содержимого относительно одного или более блоков данных. Формирование блокировки содержимого относительно блока данных запрещает другим пользователям редактировать заблокированный блок данных. В одном варианте осуществления блокировки содержимого могут расширяться и/или сокращаться автоматически, когда пользователь редактирует документ.
Согласно другим аспектам изобретения, среда авторской подготовки синхронизирует как содержимое, так и метаданные между пользовательскими копиями и мастер-копией документа. В целом, среда авторской подготовки синхронизирует метаданные автоматически и синхронизирует содержимое только по запросу одного из пользователей. В одном варианте осуществления метаданные включают в себя блокировки содержимого.
Эти и другие признаки и преимущества станут понятны из прочтения следующего подробного описания и просмотра ассоциированных чертежей. Нужно понимать, что и предшествующее общее описание, и последующее подробное описание являются только примерными, а не ограничивающими заявленные аспекты изобретения.
Краткое описание чертежей
Фиг.1 - схематическая блок-схема, иллюстрирующая примерную систему авторской подготовки, имеющую признаки, которые являются примерами изобретательских аспектов раскрытия;
Фиг.2 - схематическая блок-схема, иллюстрирующая систему авторской подготовки по фиг.1, в которой документ, сохраненный в первом вычислительном устройстве, может включать в себя содержимое и метаданные в соответствии с принципами настоящего раскрытия;
Фиг.3 - блок-схема, иллюстрирующая примерный процесс синхронизации, посредством которого система авторской подготовки может синхронизировать копию документа, сохраненного в пользовательском вычислительном устройстве, с мастер-копией документа в соответствии с принципами настоящего раскрытия;
Фиг.4 - схематическая блок-схема документа, имеющего пять блоков данных, из которых второй блок заблокирован, в соответствии с принципами настоящего раскрытия;
Фиг.5 - схематическая блок-схема документа по фиг.4, в котором блокировка содержимого была добавлена к третьему блоку данных в соответствии с принципами настоящего раскрытия;
Фиг.6 - схематическая блок-схема документа по фиг.4, в котором блокировки содержимого второго и третьего блоков данных были сняты и новая блокировка содержимого была добавлена к пятому блоку данных в соответствии с принципами настоящего раскрытия;
Фиг.7 - схематическая блок-схема таблицы блокировок в соответствии с принципами настоящего раскрытия;
Фиг.8 - логическая блок-схема, иллюстрирующая примерные процессы синхронизации, реализуемые приложением авторской подготовки, чтобы совместно использовать обновления, выполненные пользователем приложения авторской подготовки, с другими пользователями в соответствии с принципами настоящего раскрытия;
Фиг.9 - логическая блок-схема, иллюстрирующая другой примерный процесс синхронизации, реализуемый приложением авторской подготовки, чтобы реализовывать обновления, выполненные другими пользователями в документе, редактируемом с помощью приложения авторской подготовки, в соответствии с принципами настоящего раскрытия;
Фиг.10 - схематическая блок-схема среды авторской подготовки, включающей в себя первое вычислительное устройство, в котором мастер-копия документа, который должен быть подготовлен, должна храниться в соответствии с принципами настоящего раскрытия;
Фиг.11 - схематическая блок-схема пользовательской вычислительной системы, выполненной с возможностью реализовывать среду авторской подготовки в соответствии с принципами настоящего раскрытия;
Фиг.12 - схематическая блок-схема системы авторской подготовки, иллюстрирующая цикл синхронизации, реализуемый приложением авторской подготовки в пользовательском вычислительном устройстве в соответствии с принципами настоящего раскрытия;
Фиг.13 - логическая блок-схема, иллюстрирующая последовательность операций другого примерного процесса синхронизации, посредством которого пользовательская вычислительная система может отправлять и принимать обновления во время редактирования документа в соответствии с принципами настоящего раскрытия;
Фиг.14-26 - схематические блок-схемы кэшей, сохраненных в первом вычислительном устройстве, первом пользовательском вычислительном устройстве и втором пользовательском вычислительном устройстве в различные моменты времени в течение сеанса совместной авторской подготовки, в котором первый пользователь и второй пользователь первого и второго пользовательских вычислительных устройств редактируют документ одновременно в соответствии с принципами настоящего раскрытия; и
Фиг.27-31 иллюстрируют изменения в примерном пользовательском интерфейсе первого приложения авторской подготовки, когда первый пользователь и второй пользователь совместно подготавливают документ в соответствии с принципами настоящего раскрытия.
Подробное описание
В последующем подробном описании сделаны ссылки на сопровождающие чертежи, которые формируют часть данного документа и на которых показаны посредством иллюстраций конкретные варианты осуществления или примеры. В то время как раскрытие дается в общем контексте программных модулей, которые исполняются в связи с прикладной программой, которая работает в операционной системе в компьютерной системе, специалисты в данной области техники признают, что раскрытие также может быть реализовано в комбинации с другими программными модулями. Варианты осуществления, описанные в данном документе, могут быть объединены, и другие варианты осуществления могут использоваться без отступления от духа или объема настоящего раскрытия. Последующее подробное описание поэтому не должно восприниматься в ограничивающем смысле, и объем изобретения определяется приложенной формулой изобретения и ее эквивалентами.
Варианты осуществления настоящего раскрытия предоставляют среду, в которой множество пользователей могут совместно подготавливать документ. Фиг.1 иллюстрирует примерную среду 100 авторской подготовки, имеющую признаки, которые являются примерами новых аспектов изобретения. Система 100 авторской подготовки включает в себя устройство 120 хранения, хранящее мастер-копию документа 150. В одном варианте осуществления устройство 120 хранения может включать в себя вычислительное устройство. В другом варианте осуществления устройство 120 хранения может включать в себя одно или более устройств хранения (например, сеть вычислительных устройств).
Система 100 авторской подготовки также включает в себя, по меньшей мере, одно пользовательское вычислительное устройство 110, которое соединено с возможностью связи с устройством 120 хранения. Каждое из пользовательских вычислительных устройств 110 может редактировать документ 150, создавая пользовательскую копию 155 документа 150 и редактируя пользовательскую копию 155. Пользовательские копии 155 документа 150 синхронизируются, когда пользовательские вычислительные устройства 110 периодически отправляют устройству 120 хранения обновления, которые должны совместно использоваться с другими пользовательскими вычислительными устройствами, и периодически получают от устройства 120 хранения обновления от других пользовательских вычислительных устройств.
Когда это выражение используется в данном документе, пользовательское вычислительное устройство 110 включает в себя любое вычислительное устройство, которое получает пользовательскую копию документа, который должен быть подготовлен, из мастер-копии документа. Пользовательское вычислительное устройство 110 может отличаться от устройства 120 хранения или может включать в себя другую учетную запись пользователя, реализованную в устройстве 120 хранения. В одном варианте осуществления вычислительное устройство, которое действует в качестве устройства 120 хранения для одного документа, может действовать как пользовательское вычислительное устройство 110 для другого документа и наоборот.
В показанном примере четыре пользовательских вычислительных устройства 110A, 110B, 110C и 110D соединены с возможностью связи с устройством 120 хранения. В других вариантах осуществления, однако, любое число вычислительных устройств 110 может быть соединено с устройством 120 хранения. В показанном примере каждое пользовательское вычислительное устройство 110A, 110B, 110C, 110D может отправлять устройству 120 хранения обновления, сформированные пользователем пользовательского вычислительного устройства, и может запрашивать у устройства 120 хранения обновления, сформированные пользователями других пользовательских вычислительных устройств. В одном варианте осуществления устройство 120 хранения может быть серверным вычислительным устройством, а пользовательские вычислительные устройства 110A, 110B, 110C, 110D могут быть клиентскими вычислительными устройствами.
Как показано на фиг.2, документ 150, сохраненный в устройстве 120 хранения, может включать в себя содержимое 152 и метаданные 154. Приложения 130 авторской подготовки в пользовательских вычислительных устройствах 110 обрабатывают и управляют содержимым и метаданными пользовательских копий 155 документа 150. В некоторых вариантах осуществления метаданные 154 могут быть сохранены отдельно от содержимого 152. Например, содержимое 152 может быть сохранено в документе 150, а метаданные могут быть сохранены в таблице (см. фиг.7) отдельно от документа 150. В других вариантах осуществления, однако, метаданные 154 могут быть сохранены в документе 150.
Вообще, пользовательские вычислительные устройства 110 могут синхронизировать обновления в содержимом 152 отдельно от обновлений в метаданных 154. Как правило, обновления 154 метаданных автоматически синхронизируются между устройством 120 хранения и пользовательскими вычислительными устройствами 110, тогда как обновления 152 содержимого из каждого пользовательского вычислительного устройства 110 синхронизируются по запросу соответствующего пользователя.
Фиг.3 - логическая блок-схема, иллюстрирующая примерный процесс 300 синхронизации, посредством которого система 100 авторской подготовки может синхронизировать копию 155 документа, сохраненного в пользовательском вычислительном устройстве 110, с мастер-копией 150 документа, сохраненного в устройстве 120 хранения. Процесс 300 синхронизации инициализируется и начинается в стартовом модуле 302 и переходит к первой операции 304 обновления.
Первая операция 304 обновления синхронизирует метаданные копии 155 с метаданными документа 150 без необходимости какого-либо взаимодействия с пользователем. Например, первая операция 304 обновления может предусматривать обмен метаданными между устройством 120 хранения и пользовательским вычислительным устройством 110 с периодическими временными интервалами. В одном варианте осуществления первая операция 304 обновления предусматривает обмен метаданными каждые пять секунд. В других вариантах осуществления, однако, первая операция 304 обновления может предусматривать обмен метаданными с более короткими или более длинными временными интервалами.
Модуль 306 запроса определяет, был ли принят запрос синхронизации содержимого. Например, модуль 306 запроса может определять, запросил ли пользователь одного из пользовательских вычислительных устройств 110 совместное использование изменений содержимого с другими пользователями. В другом варианте осуществления модуль 306 запроса может определять, запросил ли пользователь одного из пользовательских вычислительных устройств 110 просмотр изменений содержимого, выполненных другими пользователями.
Если модуль 306 запроса определяет, что запрос синхронизации содержимого не был сделан, тогда процесс 300 синхронизации циклически возвращается к первой операции 304 обновления и начинается снова. Однако, если модуль 306 запроса, определяет, что запрос синхронизации содержимого был принят, тогда процесс 300 синхронизации переходит ко второй операции 308 обновления, которая предусматривает обмен содержимым между устройством 120 хранения и пользовательским вычислительным устройством 110. Процесс 300 синхронизации завершается и прекращается в модуле 310 остановки.
Когда этот термин используется в данном документе, обновления 152 содержимого ссылаются на любое добавление, удаление и/или исправление, выполненное в существующем содержимом документа. Например, обновления содержимого для документа с обработкой текста могут включать в себя добавленные параграфы (т.е. или их части), удаленные параграфы (т.е. или их части) и/или исправленные параграфы (т.е., или их части). В другом варианте осуществления, обновления содержимого для документа-презентации могут включать в себя добавленные, удаленные и/или исправленные изображения, текст, анимации, звуки и другие такие объекты данных.
Когда этот термин используется в данном документе, обновления 154 метаданных ссылается на любое добавление, удаление и/или исправление, выполненное в метаданных документа. Неограничивающие примеры метаданных документа включают в себя блокировки содержимого, информацию о присутствии и другие такие данные. Как будет обсуждено в данном документе, блокировки содержимого запрещают редактирование содержимого в пределах блокировки пользователями, которые не владеют блокировкой. Информация о присутствии указывает, какие пользователи указали намерение редактировать документ, как будет обсуждено более подробно в данном документе.
Обращаясь к фиг.4-9, блокировки содержимого препятствуют конфликтам редактирования, указывая, какие части документа были затребованы другим пользователем. В некоторых вариантах осуществления блокировки содержимого могут не допускать (т.е. мешать) редактирование пользователем части документа, которая была затребована другим пользователем. В других вариантах осуществления, однако, пользователь может выбирать вариант нарушения блокировки содержимого и редактировать часть документа. В таких случаях блокировка может предупреждать пользователя, что могут возникать конфликты при редактировании заблокированной секции.
Например, фиг.4 - это схематическая блок-схема документа 400, имеющего пять блоков данных 410, 420, 430, 440, 450. В одном варианте осуществления документ 400 является документом с обработкой текста, а блоки данных 410-450 являются параграфами текста. В другом варианте осуществления документ 400 является документом-презентацией, и первый блок данных 410 - это заголовок или предметный указатель, второй блок данных 420 - это изображение или другой объект данных, а оставшиеся блоки данных 430, 440, 450 - это блоки текста.
Первый пользователь может сформировать блокировку у одного или более блоков данных 410-450 документа 400. В примере, показанном на фиг.4, второй блок данных 420 был заблокирован первым пользователем, как указано перекрестной штриховкой. Формируя блокировку содержимого, первый пользователь указал, что первый пользователь намеревается редактировать блок данных 420. Например, пользователь может сформировать блокировку, когда пользователь активно редактирует блок данных 420. В другом варианте осуществления пользователь может сформировать блокировку и затем редактировать блок данных 420 в более позднее время. Как отмечено выше, приложение авторской подготовки, управляющее документом 400, может препятствовать редактированию заблокированного блока 420 данных пользователем, отличным от первого пользователя.
В целом, блокировка содержимого, сформированная первым пользователем, отображается всем другим пользователям, которые осуществляют доступ к документу в течение срока блокировки. В одном варианте осуществления первый пользователь также может видеть блокировку содержимого. Блокировки могут отображаться с помощью разных типов указателей. Например, в одном варианте осуществления фон заблокированного блока данных может быть окрашен, затенен или украшен узором (например, см. блок 420 данных на фиг.4). В другом варианте осуществления содержимое (например, текст, изображение, форма или другой объект данных) заблокированного блока может быть окрашено, затенено или украшено узором. Еще в одном варианте осуществления прямоугольник, скоба или символ могут отображаться рядом с заблокированным блоком данных, чтобы указывать блокировку.
Блокировка содержимого может быть сформирована относительно одного или более блоков данных в документе. В некоторых вариантах осуществления блокировка содержимого может быть сформирована неявно без специальной инструкции от пользователя. Например, приложение авторской подготовки может формировать блокировку содержимого относительно блока данных, когда пользователь позиционирует курсор на нем, выделяет или иным образом выбирает блок данных. В другом варианте осуществления приложение авторской подготовки может формировать блокировку содержимого относительно блока данных, когда пользователь начинает редактировать блок данных. В другом варианте осуществления приложение авторской подготовки может формировать блокировку содержимого относительно блока данных, когда пользователь сохраняет корректировки, выполненные в блоке данных. В некоторых вариантах осуществления приложение авторской подготовки может формировать блокировки содержимого относительно множества взаимозависимых блоков данных в документе, даже если только один из блоков данных затребован пользователем. В других вариантах осуществления пользователь может явно определять блокировку содержимого относительно одного или более блоков данных.
В некоторых вариантах осуществления блокировка содержимого может расширяться, чтобы включать в себя дополнительные блоки данных в документе, и/или сокращаться, чтобы освобождать один или более блоков данных в документе. В одном варианте осуществления блокировка содержимого может расширяться, чтобы включать в себя только смежные блоки данных. Например, как показано на фиг.5, блокировка содержимого (например, см. перекрестную штриховку) относительно второго блока 420 данных может расширяться, чтобы включать в себя третий блок 430 данных, если пользователь выбирает или редактирует третий блок 430 данных. Блокировка содержимого или ее часть, как правило, может быть снята по усмотрению пользователя, который сформировал блокировку содержимого. В некоторых вариантах осуществления пользователь, который сформировал блокировку содержимого, снимает блокировку содержимого посредством выбора или редактирования другого блока данных.
В одном варианте осуществления пользователь должен указывать, что пользователь завершил редактирование блока данных, до того как приложение авторской подготовки снимет блокировку. Например, приложение авторской подготовки может снимать блокировку только после того, как пользователь предоставил инструкции, чтобы сохранить документ. В другом варианте осуществления приложение авторской подготовки может снимать блокировку после того, как пользователь выбирает или начинает редактировать отдаленный блок данных, такой как пятый блок 450 данных на фиг.6. В другом варианте осуществления приложение авторской подготовки снимает блокировку только после обоих действий перемещения к несмежному блоку и завершения (например, инструкций, чтобы сохранить документ). В других вариантах осуществления блокировка содержимого может сниматься явно администратором или другим пользователем.
Обращаясь к фиг.7, метаданные блокировки могут храниться во множестве различных форматов. Например, метаданные блокировки на фиг.7 хранятся в формате 500 таблицы. Таблица 500 блокировок на фиг.7 включает в себя список пользователей, каждый из которых идентифицирован с помощью идентификатора пользователя (например, идентификационного номера), который уникально назначен пользователю. Блоки данных, которые должны быть заблокированы, идентифицированы с помощью идентификаторов блоков (например, идентификационных номеров), которые уникально назначены каждому блоку данных в документе. Таблица 500 блокировок связывает идентификаторы блоков одного или более блоков данных, которые должны быть заблокированы, с идентификаторами пользователей, которые владеют блокировками.
Например, в таблице 500 блокировок блоки 512 и 514 данных ассоциированы с первым пользователем 510. Другим пользователям, следовательно, запрещено редактирование блоков 512 и 514 данных. Блок 522 данных ассоциирован с пользователем 520. Другим пользователям, включая первого пользователя 510, следовательно, запрещено редактировать блок 510 данных. Четвертый пользователь 540 не заблокировал какую-либо часть документа и, таким образом, не связан с какими-либо идентификаторами блоков. В других вариантах осуществления, однако, метаданные блокировок могут храниться в другом формате или в документе. Например, таблица 500 блокировок может быть упорядочена по идентификатору блока вместо идентификатора пользователя.
Метаданные о присутствии также могут храниться во множестве форматов. Например, метаданные о присутствии могут храниться в таблице 500 блокировок на фиг.7. В другом варианте осуществления, однако, метаданные о присутствии могут храниться в отдельной таблице или в другом формате. Метаданные о присутствии включают в себя идентификатор каждого пользователя, который в настоящее время осуществляет доступ к документу или который заявил требование (например, сформировал блокировку содержимого) на блок данных документа. Например, таблица метаданных, такая как таблица 500 блокировок, может хранить идентификатор каждого пользователя, имеющего запрос, по меньшей мере, к одному блоку данных документа. Подобно метаданным блокировок метаданные о присутствии могут быть синхронизированы автоматически.
Фиг.8 и 9 - это логические блок-схемы, иллюстрирующие примерные процессы 600, 700 синхронизации, посредством которых содержимое и блокировки могут быть синхронизированы между множеством вычислительных устройств. Первый процесс 600 синхронизации осуществляется приложением авторской подготовки, чтобы совместно использовать с другими пользователями обновления, выполненные первым пользователем с помощью приложения авторской подготовки. Второй процесс 700 синхронизации осуществляется приложением авторской подготовки, чтобы реализовывать обновления, выполненные другими пользователями, в документе, редактируемом с помощью приложения авторской подготовки.
Процесс 600 синхронизации по фиг.8 инициализируется и начинается в начальном модуле 602 и переходит к операции 604 приема. Операция 604 приема принимает инструкцию от первого пользователя, чтобы выполнять операцию редактирования в одном или более блоках данных в документе. Неограничивающие примеры операций редактирования включают в себя добавление, редактирование и/или удаление блоков данных (например, текста, графических материалов, изображений, форм, заголовков и т.д.) или их частей, добавление и/или удаление форматирования блоков данных, переупорядочивание блоков данных и другие такие операции.
Первый модуль 606 определения проверяет, заблокирован ли блок данных, по которому должна выполняться операция редактирования. Например, первый модуль 606 определения может обращаться к таблице блокировок, такой как таблица 500 блокировок на фиг.7, чтобы определять, действительно ли идентификатор блока, назначенный блоку данных, ассоциирован с каким-либо пользователем. В другом варианте осуществления первый модуль 606 определения может иначе определять, заблокирован ли блок данных.
Если первый модуль 606 определения определяет, что блок данных не заблокирован, тогда операция 608 формирования формирует блокировку содержимого в блоке данных. Например, в одном варианте осуществления операция 608 формирования может добавлять запись в таблицу 500 блокировок на фиг.7, ассоциирующую идентификатор блока данных с идентификатором первого пользователя. Операция 610 передачи отправляет метаданные блокировок, указывающие существование вновь сформированной блокировки, устройству, хранящему мастер-копию документа. Например, операция 610 передачи может отправлять метаданные о блокировках из пользовательского вычислительного устройства, такого как вычислительное устройство 110A на фиг.1, устройству хранения, такому как устройство 120 хранения. В одном варианте осуществления метаданные о блокировках включают в себя инструкции, которые описывают инкрементные корректировки (например, дельта-состояния) в метаданных блокировок. Операция 614 осуществления выполняет операцию редактирования в отношении блока данных.
Альтернативно, если первый модуль 606 определения определяет, что блок данных заблокирован, тогда второй модуль 612 определения получает информацию о владении блокировкой. В одном варианте осуществления, если второй модуль 612 определения определяет, что блокировкой владеет другой пользователь, тогда процесс 600 синхронизации завершается и прекращается в модуле 620 остановки без выполнения операции редактирования. В другом варианте осуществления (не показан) процесс 600 синхронизации может позволять первому пользователю выбирать прерывание блокировки и затем переходит к операции 608 формирования. Однако, если второй модуль 612 определения определяет, что блокировкой владеет первый пользователь, тогда процесс 600 синхронизации переходит к операции 614 осуществления, обсужденной выше. В другом варианте осуществления (не показан) процесс 600 синхронизации может определять, должна ли быть снята блокировка каких-либо блоков данных.
Третья операция 616 определения определяет, предоставил ли первый пользователь инструкцию (либо явно, либо неявно), чтобы совместно использовать изменения в блоке данных, получающиеся в результате осуществления операции редактирования. Например, третья операция 616 определения может определять, предоставил ли первый пользователь инструкцию сохранения документа. В другом варианте осуществления третья операция 616 определения может определять, выбрал ли первый пользователь кнопку "совместное использование изменений" или другие подобные указатели. В другом варианте осуществления третья операция 616 определения может определять, что признак автоматического сохранения был реализован приложением. Если третья операция 616 определения определяет, что инструкции для совместного использования не были предоставлены, тогда процесс 600 синхронизации циклически возвращается к операции 604 приема и начинается снова.
Однако если операция 616 определения определяет, что инструкции для совместного использования были предоставлены, тогда процесс 600 синхронизации переходит к операции 618 передачи, которая отправляет обновления содержимого устройству, хранящему мастер-копию документа. Обновления содержимого указывают изменения, выполненные в содержимом документа посредством операции редактирования. Например, операция 618 передачи может отправлять обновления содержимого из пользовательского вычислительного устройства 110A на фиг.1 устройству 120 хранения. В одном варианте осуществления обновления содержимого включают в себя вновь сформированную версию документа. В другом варианте осуществления обновления содержимого указывают инкрементные корректировки (например, дельта-состояния) в содержимом между текущей пользовательской копией документа и мастер-копией документа. Процесс 600 синхронизации завершается и заканчивается в модуле 620 остановки, как обсуждалось выше.
Второй процесс 700 синхронизации на фиг.9 инициализируется и начинается в начальном модуле 702 и переходит к операции 704 приема. Операция 704 приема принимает обновление, основанное на изменениях, выполненных в документе другими пользователями. Обновление может включать в себя изменения в содержимом и/или метаданных документа. В одном варианте осуществления операция 704 приема может опрашивать устройство, хранящее мастер-копию документа, и запрашивать обновления. В другом варианте осуществления устройство, хранящее мастер-копию, может принудительно отправлять изменения приложению авторской подготовки.
Первый модуль 706 определения определяет, включает ли в себя обновление какие-либо изменения в метаданных документа. Например, первый модуль 706 определения может определять, установил ли какой-либо другой пользователь новую блокировку или снял блокировку на блоке данных. В другом варианте осуществления модуль 706 определения может определять, осуществляет ли другой пользователь доступ к документу.
Если первый модуль 706 определения определяет, что обновление метаданных было принято, тогда операция 708 осуществления автоматически реализует принятые обновления метаданных. Например, операция 708 осуществления может заставлять приложение авторской подготовки обновлять таблицу блокировок, такую как таблица 500 блокировок на фиг.7, на основе обновления метаданных. Однако, если первый модуль 706 определения определяет, что обновление метаданных не было принято, тогда второй процесс 700 синхронизации переходит ко второму модулю 710 определения.
Второй модуль 710 определения определяет, включает ли в себя обновление какие-либо изменения в содержимом документа. Например, второй модуль 710 определения может определять, действительно ли какие-либо блоки данных были добавлены, удалены, исправлены или перемещены. Если второй модуль 710 определения определяет, что обновление содержимого не было принято, тогда второй процесс 700 синхронизации циклически возвращается к операции 704 приема, чтобы начаться снова. Однако, если второй модуль 710 определения определяет, что обновление содержимого было принято, тогда второй процесс 700 синхронизации переходит к операции 712 указания.
Операция 712 указания оповещает первого пользователя о том, что обновление содержимого доступно для просмотра. Например, операция 712 указания может отображать графику, текстовое окно, цифровые указатели или другое сообщение, указывающее доступность обновления содержимого. В одном варианте осуществления операция 712 указания предоставляет информацию пользователю, указывающую, сколько обновлений доступно. Другая информация об обновлениях (например, пользователь, который сделал обновления, отметка времени и т.д.) также может быть указана.
Третий модуль 714 определения определяет, приняло ли приложение авторской подготовки инструкции от первого пользователя (либо явно, либо неявно), чтобы просматривать и/или реализовывать обновления содержимого. Например, третий модуль 714 определения может определять, выбрал ли пользователь вариант просмотра (например, через кнопку, меню или другое инструментальное средство интерфейса) приложения авторской подготовки. В другом варианте осуществления третий модуль 714 определения может определять, что пользователь выбрал вариант автоматической реализации. Если третий модуль 714 определения определяет, что приложение авторской подготовки не приняло такие инструкции от первого пользователя, тогда второй процесс 700 синхронизации циклически возвращается к операции 704 приема и начинается снова.
Если третий модуль 714 определения определяет, что приложение авторской подготовки приняло инструкции от первого пользователя, тогда операция 716 реализации отображает обновления содержимого первому пользователю. Например, в одном варианте осуществления операция 716 реализации может объединять доступные обновления содержимого в копию первого пользователя документа. В другом варианте осуществления операция 716 создания экземпляра может аннотировать копию первого пользователя документа, чтобы указывать, какое содержимое изменено. Дополнительные аннотации могут указывать, какие пользователи какие изменения внесли. В одном варианте осуществления операция 716 реализации выполняет разрешение конфликтов между пользовательской копией и обновлениями. Второй процесс 700 синхронизации завершается и прекращается в модуле 718 остановки.
Фиг.10-12 предоставляют больше деталей того, как синхронизация между пользовательской копией и мастер-копией документа реализуется пользовательским вычислительным устройством. Фиг.10 - это схематическая блок-схема системы 800 авторской подготовки, включающей в себя устройство 820 хранения, на котором должна храниться мастер-копия документа, который должен быть подготовлен. Система 800 авторской подготовки также включает в себя, по меньшей мере, одно пользовательское вычислительное устройство 810, соединенное с возможностью связи с устройством 820 хранения.
Пользовательское вычислительное устройство 810 включает в себя приложение 812 авторской подготовки, сконфигурированное, чтобы предоставлять среду авторской подготовки, в которой пользователь может создавать и/или манипулировать документом, который должен быть подготовлен. Пользовательское вычислительное устройство 810 также включает в себя кэш 814, сопрягающий объект (объект-прослойку) ("LO") 816 и средство 818 управления синхронизацией ("менеджер синхронизации"). Кэш 814 хранит пользовательскую копию документа, который должен быть подготовлен. Кэш 814 также хранит метаданные, включающие в себя метаданные о блокировках и присутствии, ассоциированные с документом. Обновления в содержимом и метаданных документа также могут храниться в кэше 814.
Сопрягающий объект 816 предоставляет интерфейс между приложением 812 авторской подготовки и кэшем 814. Сопрягающий объект 816 также предоставляет интерфейс между приложением 812 авторской подготовки и менеджером 818 синхронизации. Менеджер 818 синхронизации связывается с устройством 820 хранения и обеспечивает интерфейс между устройством 820 хранения и кэшем 814. Например, менеджер 818 синхронизации может отправлять обновления и получать обновления от устройства 820 хранения и кэша 814.
Как правило, среда авторской подготовки, имеющая признаки, которые являются примерами изобретательских аспектов в соответствии с принципами раскрытия, может быть осуществлена на пользовательском вычислительном устройстве (например, персональном компьютере, серверном компьютере, ноутбуке, PDA, смартфоне или любом другом таком вычислительном устройстве). Неограничивающий вариант осуществления пользовательской вычислительной системы 900, выполненной с возможностью реализовывать среду авторской подготовки, описан в данном документе со ссылкой на фиг.11.
На фиг.11 примерная вычислительная система 900 для реализации принципов раскрытия включает в себя пользовательское вычислительное устройство, такое как пользовательское вычислительное устройство 910. В основной конфигурации пользовательское вычислительное устройство 910 типично включает в себя, по меньшей мере, один процессор 915 для исполнения приложений и программ, сохраненных в системной памяти 920. В зависимости от точной конфигурации и типа вычислительного устройства 910 системная память 920 может включать в себя, но не только, RAM, ROM, EEPROM, флеш-память, CD-ROM, цифровые универсальные диски (DVD) или другие оптические устройства хранения, магнитные кассеты, магнитную ленту, накопитель на магнитном диске или другие магнитные устройства хранения или другую технологию памяти.
Системная память 920 типично включает в себя операционную систему 922, такую как операционные системы семейства WINDOWS от корпорации MICROSOFT Редмонд, штат Вашингтон, подходящие для управления работой вычислительного устройства 910. Системная память 920 также может включать в себя кэш 926 документа, в котором может храниться пользовательская копия 927 документа. Метаданные 929 документа также могут храниться в пользовательском кэше 926.
Системная память 920 также может хранить одно или более приложений системы программного обеспечения, такие как приложения 924 авторской подготовки для создания и редактирования документов. Одним неограничивающим примером приложения 924 авторской подготовки, подходящего для авторской подготовки документов в соответствии с принципами настоящего раскрытия, является программное обеспечение авторской подготовки MICROSOFT OFFICE WORD от корпорации MICROSOFT Рэдмонд, штат Вашингтон. Другие неограничивающие примеры приложений авторской подготовки включают в себя программное обеспечение для презентаций POWERPOINT и программное обеспечение для черчения и составления диаграмм VISIO, оба продукта также от корпорации MICROSOFT Рэдмонд, штат Вашингтон.
Вычислительное устройство 910 также может иметь устройство(а) 930 ввода, такое как клавиатура, мышь, перо, устройство речевого ввода, устройство сенсорного ввода и т.д., для ввода и управления данными. Устройство(а) 935 вывода, такое как экран дисплея, динамики, принтер и т.д., также могут быть включены в состав. Эти устройства 935 вывода хорошо известны в области техники и нет необходимости подробно обсуждать их в данном документе.
Вычислительное устройство 910 также может содержать соединения 940 связи, которые позволяют устройству 910 связываться с другими вычислительными устройствами, например устройством 820 хранения на фиг.10, по сети в распределенном вычислительном окружении (например, интрасети или Интернете). В качестве примера, а не ограничения среда 940 связи включает в себя проводную среду, такую как проводная сеть или прямое проводное соединение, и беспроводную среду, такую как акустическая среда, RF, инфракрасное излучение и другая беспроводная среда.
Фиг.12 - это схематическая блок-схема системы 1000 авторской подготовки, включающей в себя цикл синхронизации, осуществляемый приложением авторской подготовки на пользовательском вычислительном устройстве. Система 1000 авторской подготовки включает в себя устройство 1020 хранения, в котором должен храниться документ, который должен быть подготовлен, и пользовательское вычислительное устройство 1010. Пользовательское вычислительное устройство 1010 включает в себя приложение 1012 авторской подготовки, кэш 1014, сопрягающий объект 1016 и менеджер 1018 синхронизации. Кэш 1014 пользовательского вычислительного устройства 1010 выполнен с возможностью хранить базовую копию 1013 документа, который должен быть подготовлен, рабочую копию 1015, выгружаемую копию 1017 и загружаемую копию 1019. Кэш 1014 также выполнен с возможностью хранить метаданные 1011 документа.
Фиг.13 - это логическая блок-схема, иллюстрирующая последовательность операций для примерного процесса 1100 синхронизации, посредством которого пользовательская вычислительная система, такая как пользовательское вычислительное устройство 1010, может отправлять и принимать обновления во время авторской подготовки документа. Процесс 1100 синхронизации инициализируется и начинается в начальном модуле 1102 и переходит к операции 1104 получения. Операция 1104 получения инструктирует менеджеру 1018 синхронизации пользовательского вычислительного устройства 1010 получать из устройства 1020 хранения загружаемую копию 1017 документа, который должен быть подготовлен. Загружаемая копия 1017 документа отражает состояние мастер-копии документа в момент времени, когда документ получен от устройства 1020 хранения. Например, операция 1104 получения может заставлять менеджер 1018 синхронизации извлекать из устройства 1020 хранения копию самой последней версии мастер-копии документа.
Операция 1106 формирования создает базовую копию 1013 и рабочую копию 1015 документа на основе загружаемой копии 1017. Рабочей копией 1015 документа можно манипулировать посредством приложения 1012 авторской подготовки, чтобы позволять пользователю редактировать документ. Соответственно, рабочая копия 1015 отражает текущее состояние документа, который редактируется пользователем приложения 1012 авторской подготовки. Базовая копия 1013 отражает состояние документа в момент времени непосредственно перед тем, как пользователь начинает редактировать документ. В одном варианте осуществления сопрягающий объект 1016 формирует базовую копию 1013 документа и рабочую копию 1015 и предоставляет рабочую копию 1015 приложению 1012 авторской подготовки.
Чтобы получить обновления содержимого, сформированные другими пользователями, операция 1108 опроса инструктирует менеджеру 1018 синхронизации связываться с устройством 1020 хранения периодически, чтобы получать обновленную загружаемую копию 1017 подготавливаемого документа. Загружаемая копия 1017 отражает состояние мастер-копии документа в момент загрузки. Мастер-копия хранится в устройстве 1020 хранения и может включать в себя изменения, выполненные другими пользователями с тех пор, как базовая копия 1013 была сформирована. Менеджер 1018 синхронизации сохраняет любую обновленную загружаемую копию 1017 документа в кэше 1014.
Операция 1110 редактирования принимает любые инструкции, предоставленные пользователем приложению 1012 авторской подготовки, чтобы выполнять операцию редактирования документа. Приложение 1012 делает корректировки в рабочей копии документа 1015. Приложение 1012 авторской подготовки также создает изменения метаданных, когда уместно, при осуществлении операций редактирования.
В первом модуле 1112 определения сопрягающий объект 1016 проверяет кэш 1014, чтобы определить, были ли приняты какие-либо обновления во время операции 1108 опроса (т.е. доступна ли обновленная загружаемая копия 1017 в кэше 1014). В одном варианте осуществления первый модуль 1112 определения выполняется с периодическими интервалами, невзирая на то, редактировал ли пользователь рабочую копию документа. В других вариантах осуществления первый модуль 1112 определения может выполняться, например, каждые пять секунд, миллисекунд или минут.
Если сопрягающий объект 1016 определяет, что новая загружаемая копия 1017 недоступна, тогда процесс 1100 синхронизации переходит ко второму модулю 1116 определения, который будет обсуждаться более подробно ниже. Однако, если сопрягающий объект 1016 определяет, что новая загружаемая копия 1017 доступна, тогда процесс 1100 синхронизации переходит к операции 1114 синхронизации. В одном варианте осуществления операция 1114 синхронизации автоматически реализует любые обновления метаданных, найденные в загружаемой копии 1017, без необходимости какого-либо взаимодействия с пользователем приложения 1012 авторской подготовки. Например, сопрягающий объект 1016 может автоматически реализовывать любые метаданные о блокировках, отраженные в загружаемой копии 1017, в рабочей копии 1015 документа.
В некоторых вариантах осуществления операция 1114 синхронизации автоматически не реализует какие-либо обновления содержимого из загружаемой копии 1017 в рабочей копии 1015. Скорее, операция 114 синхронизации только реализует обновления содержимого, когда пользователь приложения 1012 авторской подготовки предоставляет инструкции, чтобы объединять обновления содержимого. В других вариантах осуществления, однако, операция 1114 синхронизации автоматически реализует обновления содержимого. В одном варианте осуществления операция 1114 синхронизации инструктирует сопрягающему объекту 1016 объединять обновленную загружаемую копию 1017 с рабочей копией, когда предоставлены инструкции объединения. В одном варианте осуществления операция 1114 синхронизации является такой же, как и второй процесс 700 синхронизации, показанный на фиг.9. В других вариантах осуществления, однако, другие процессы синхронизации могут использоваться, чтобы объединять обновления с рабочей копией 1015 документа. Процесс 1100 синхронизации переходит от операции 1114 синхронизации ко второму модулю 1116 определения.
Второй модуль 1116 определения определяет, внес ли пользователь какие-либо изменения в рабочей копии 1015 документа или в метаданных 1011 документа во время операции 1110 редактирования. Если второй модуль 1116 определения определяет, что корректировки (т.е. ни в содержимом, ни в метаданных) не были внесены, тогда процесс 1100 синхронизации циклически возвращается к операции 1108 опроса и начинается снова. Однако, если второй модуль 1116 определения определяет, что пользователь внес корректировки содержимого (т.е. исправление блока данных документа) и/или корректировки метаданных (например, блокировку блока данных документа), тогда операция 1118 совместного использования синхронизирует корректировки с устройством 1020 хранения.
Операция 1118 синхронизации инструктирует менеджеру 1018 синхронизации пользовательского вычислительного устройства 1010 автоматически отправлять устройству 1020 хранения любые изменения в метаданных документа без необходимости какого-либо взаимодействия с пользователем приложения 1012 авторской подготовки. В одном варианте осуществления операция 1118 совместного использования не инструктирует менеджеру 1018 синхронизации отправлять обновления содержимого устройству 1020 хранения автоматически. Вместо этого, менеджер 1018 синхронизации отправляет обновления содержимого устройству 1020 хранения только тогда, когда получает инструкцию выполнять это посредством сопрягающего объекта 1016. Автоматическая принудительная отправка только метаданных может улучшать восприятие пользователем, увеличивая эффективность обновления, уменьшая использование полосы пропускания сети и обеспечивая запрет конфликтов без необходимости автоматической синхронизации содержимого. В других вариантах осуществления, однако, операция 1118 совместного использования автоматически принудительно отправляет содержимое, так же как и метаданные. В одном варианте осуществления операция 1118 совместного использования является такой же, что и первый процесс 600 синхронизации на фиг.8. В других вариантах осуществления, однако, могут быть использованы другие процессы синхронизации.
Например, когда пользователь желает совместно использовать исправления содержимого, выполненные пользователем, пользователь будет инструктировать приложению 1012 авторской подготовки предъявлять исправления устройству 1020 хранения для объединения с мастер-копией документа. В одном варианте осуществления приложение 1012 авторской подготовки будет инструктировать сопрягающий объект 1016 формировать выгружаемую копию 1019 документа. Как правило, сопрягающий объект 1016 формирует выгружаемую копию 1019 на основе рабочей копии 1015. Менеджер 1018 синхронизации пытается принудительно отправить выгружаемую копию 1019 в устройство 1020 хранения. Процесс 1100 синхронизации завершается и прекращается в модуле 1120 остановки.
В некоторых вариантах осуществления операция 1118 совместного использования не может отправлять обновления содержимого устройству 1020 хранения до тех пор, пока все предыдущие обновления содержимого, принятые от устройства 1020 хранения, не будут реализованы в рабочей копии 1015 документа. В таких вариантах осуществления выгружаемая копия 1019 может быть сформирована слиянием рабочей копии 1015 документа с самой последней полученной загружаемой копией 1017. В одном варианте осуществления менеджер 1018 синхронизации опрашивает устройство 1020 хранения на предмет обновленной загружаемой копии 1017, когда сопрягающий объект 1016 пытается формировать выгружаемую копию 1019.
Если менеджеру 1018 синхронизации не удается принудительно отправить выгружаемую копию 1019 устройству 1020 хранения (например, если выгружаемая копия 1019 не отражает самые последние изменения, реализованные в мастер-копии), тогда менеджер 1018 синхронизации делает повторную попытку с исправленным обновленным документом 1019. Например, менеджер 1018 синхронизации может получать новую загружаемую копию 1017 от устройства 1020 хранения, и сопрягающий объект 1016 может формировать новую выгружаемую копию из рабочей копии и новой загружаемой копии 1017. В одном варианте осуществления менеджер 1018 синхронизации будет продолжать исправлять и принудительно отправлять выгружаемую копию 1019 устройству 1020 хранения до успешного завершения.
Обращаясь к фиг.14-31, принципы настоящего раскрытия могут быть лучше поняты посредством прохождения по некоторым примерным применениям. Фиг.14-26 представляют изменения, выполненные в кэше устройства хранения, кэше 1214 первого пользовательского вычислительного устройства и кэше 1234 второго пользовательского вычислительного устройства во время сеанса совместной авторской подготовки, в котором первый пользователь и второй пользователь редактируют документ одновременно. В других вариантах осуществления, однако, первый и второй пользователи могут редактировать документ в разные моменты времени с помощью тех же процессов.
На фиг.14, первый пользователь создал документ и сохранил первоначальный проект документа в устройстве хранения в качестве мастер-копии 1250. Альтернативно, первый пользователь может иметь доступ к мастер-копии 1250 существующего документа. Второй пользователь еще не имеет доступа к документу.
Мастер-копия 1250 документа имеет соответствующую мастер-таблицу блокировок. Ради удобства в примере, показанном на фиг.14-26, мастер-таблица блокировок отображается как часть мастер-копии 1250. В других вариантах осуществления, однако, мастер-таблица блокировок может храниться отдельно от мастер-копии 1250 документа. Подобным образом для легкости понимания блокировки, ассоциированные с каждой копией документа (например, базовой копией, рабочей копией, загружаемой копией и выгружаемой копией), сохранены в пользовательском кэше 1214, 1234, показанном на фиг.14-26 как часть копии. В других вариантах осуществления, однако, метаданные могут отдельно храниться для каждой копии документа или для каждого пользователя.
Мастер-копия 1250 документа включает в себя первый блок данных, содержащий текст "Привет, мир" и блокировку E1 на первом блоке данных. Блокировкой E1 владеет (т.е. она назначена) первый пользователь. Содержимое и метаданные мастер-копии 1250 отражены в базовой копии и загружаемой копии, сохраненных в кэше 1214 первого пользователя. Поскольку первый пользователь отправил первоначальный проект документа в устройство хранения, выгружаемая копия, сохраненная в кэше 1214, также отражает содержимое и метаданные мастер-копии 1250.
После отправки первоначального проекта в устройство хранения первый пользователь отредактировал рабочую копию документа, чтобы включить в него второй блок данных, содержащий текст "Тестирование". Вторая блокировка E2 была добавлена относительно второго блока данных. В одном варианте осуществления вторая блокировка E2 является новой блокировкой, назначенной пользователю. В другом варианте осуществления вторая блокировка E2 является расширением первой блокировки E1. Например, новый идентификатор блока может быть назначен первому пользователю в таблице метаданных, сохраненной в кэше 1214 первого пользователя. В одном варианте осуществления первый пользователь создает вторую блокировку E2, перемещая курсор в начало нового блока данных (например, параграф) и набирая "Тестирование". Первая блокировка E1 еще не снята, поскольку первый пользователь еще не указал, что редактирование в первом блоке данных завершено (например, посредством сохранения после перемещения курсора).
На фиг.15, второй пользователь осуществляет доступ к мастер-копии 1250 документа, сохраненной в устройстве хранения. Второй пользователь получает загружаемую копию документа и сохраняет загружаемую копию в кэш 1234 второго пользователя. Загружаемая копия включает в себя содержимое и метаданные мастер-копии 1250. Загружаемая копия не включает в себя самое последнее содержимое и метаданные, содержащиеся в рабочей копии первого пользователя. Сопрягающий объект второго пользователя формирует базовую копию и рабочую копию документа на основе загружаемой копии. Приложение авторской подготовки, используемое вторым пользователем, отображает содержимое и любые блокировки рабочей копии второму пользователю.
В некоторых вариантах осуществления второй пользователь может редактировать документ даже прежде, чем сеанс совместной работы над документом был полностью установлен (т.е. прежде, чем первое и второе пользовательские вычислительные устройства узнали о присутствии друг друга). Например, второму пользователю разрешено редактировать вторую рабочую копию документа, в то время как первое и второе вычислительные устройства обмениваются приветствиями (т.е. рукопожатием). Типично, метаданные не обмениваются автоматически прежде, чем первое и второе вычислительные устройства узнают о существовании друг друга).
На фиг.16 первое и второе вычислительные устройства, каждое, обнаружили существование другого. Соответственно, каждое из первого и второго вычислительных устройств начали передавать обновления метаданных автоматически друг другу. Как показано на фиг.16, первое приложение авторской подготовки предоставляет обновленные метаданные о блокировках (например, вторую блокировку) из таблицы блокировок первого пользователя устройству 1220 хранения (например, через сопрягающий объект и менеджер синхронизации). Однако приложение авторской подготовки не предоставляет обновленную информацию о содержимом устройству 1220 хранения, поскольку инструкции о совместном использовании обновлений содержимого не были приняты от первого пользователя.
На фиг.17, устройство хранения объединило обновленные метаданные о блокировках (например, вторую блокировку E2) в мастер-таблицу метаданных мастер-копии 1250. Метаданные о блокировках еще не были получены вторым пользовательским вычислительным устройством. На фиг.18, второе пользовательское вычислительное устройство опросило устройство хранения и получило новую загружаемую копию мастер-копии 1250. Новая загружаемая копия также была сформирована (например, через сопрягающий объект) в первом кэше 1214 на основе выгружаемой копии. В другом варианте осуществления первое пользовательское вычислительное устройство также могло опросить устройство хранения и получить новую загружаемую копию мастер-копии 1250. Обе новые загружаемые копии отражают обновленную информацию о блокировках (например, блокировку E2) из рабочей копии первого пользователя.
На фиг.19, второе вычислительное устройство формирует (например, через сопрягающий объект) новую рабочую копию на основе новой загружаемой копии. Соответственно, новая рабочая копия второго вычислительного устройства содержит вторую блокировку E2 на втором блоке данных. Тем не менее, новая рабочая копия не включает в себя сам второй блок данных. В одном варианте осуществления рабочая копия второго пользовательского вычислительного устройства отображает чистый/пустой блок данных и указывает, что чистый/пустой блок данных заблокирован. В другом варианте осуществления рабочая копия не отображает второй блок данных вовсе, и блокировка E2 не указывается второму пользователю до тех пор, пока второй блок данных не станет видим второму пользователю.
На фиг.20, второй пользователь добавляет третий блок данных в документ и третью блокировку E3 около третьего блока данных (например, в памяти приложения авторской подготовки). Третий блок данных содержит текст "До свиданья, мир". Второе приложение авторской подготовки формирует (например, через сопрягающий объект) рабочую копию документа, включающую в себя третий блок данных и третью блокировку E3. Второе приложение авторской подготовки также автоматически предоставляет (например, через менеджер синхронизации) третью блокировку E3 устройству хранения. Однако второе приложение авторской подготовки не предоставляет третий блок данных устройству хранения.
Также на фиг.20, первый пользователь снимает первую блокировку E1 после того, как первый пользователь указывает, что первый пользователь завершил редактирование первого блока данных. Например, первый пользователь может предоставлять инструкции, чтобы сохранять документ, когда курсор первого пользователя расположен во втором блоке данных. В одном варианте осуществления второй блок данных может быть расположен удаленно от первого блока данных. В показанном примере указание завершения, предоставленное первым пользователем, не указывает, что первый пользователь желает совместно использовать изменения содержимого, выполненные первым пользователем. Соответственно, первое приложение авторской подготовки не формирует (например, через сопрягающий объект) выгружаемую копию, содержащую изменения содержимого, для распространения в устройство хранения.
На фиг.21, третья блокировка E3 была сохранена в мастер-таблице блокировок мастер-копии 1250 документа в устройстве хранения. Первое пользовательское вычислительное устройство впоследствии опрашивает (например, через менеджер синхронизации) устройство хранения, чтобы проверять обновления. Первое пользовательское вычислительное устройство получило (например, через менеджер синхронизации) новую загружаемую копию документа от устройства хранения на основе мастер-копии 1250. Новая загружаемая копия содержит третью блокировку E3. Первое приложение авторской подготовки автоматически реализует (например, через сопрягающий объект) третью блокировку E3 в рабочей копии первого приложения авторской подготовки. Как отмечено выше, третья блокировка E3 в необязательном порядке может отображаться первому пользователю с помощью пользовательского интерфейса первого приложения авторской подготовки.
На фиг.22, второй пользователь снимает третью блокировку E3, когда второй пользователь указывает, что второй пользователь завершил редактирование третьего блока данных. Третья блокировка E3 удаляется из таблицы метаданных второго пользователя. В примерной блок-схеме, показанной на фиг.22, третья блокировка E3 удаляется из таблиц метаданных, соответствующих рабочей копии второго приложения авторской подготовки.
В примере, показанном на фиг.22, указание завершения, предоставляемое вторым пользователем, указывает, что второй пользователь желает совместно использовать изменения содержимого с другими пользователями. Например, второй пользователь может убрать курсор из третьего блока данных и затем предоставить инструкции, чтобы сохранять документ. Соответственно, второе приложение авторской подготовки может формировать выгружаемую копию, содержащую изменения содержимого, на основе рабочей копии. В одном варианте осуществления выгружаемая копия также может быть основана на каких-либо изменениях содержимого (например, в этом случае нет), найденных в загружаемой копии, которые еще не были реализованы в рабочей копии. В показанном примере выгружаемая копия включает в себя третий блок данных, включающий в себя фразу "До свидания, мир".
На фиг.23, устройство хранения получает третий блок данных из выгружаемой копии второго пользовательского вычислительного устройства и объединяет третий блок данных с мастер-копией 1250 устройства хранения. Таблица блокировок, ассоциированная с мастер-копией 1250, указывает, что третья блокировка E3 была снята. Как показано на фиг.24, при успешной принудительной отправке в устройство хранения второе приложение авторской подготовки копирует (например, через сопрягающий объект) выгружаемую копию в загружаемую копию и базовую копию второго кэша 1234.
На фиг.25, первое пользовательское вычислительное устройство получает (например, через менеджер синхронизации) новую загружаемую копию мастер-копии 1250 документа. Первое приложение авторской подготовки определяет (например, через сопрягающий объект), что новая загружаемая копия была получена, и определяет, что новая загружаемая копия включает в себя изменения содержимого. Приложение авторской подготовки автоматически объединяет любые новые блокировки (нет в этом случае) в рабочую копию кэша 1214. Пользовательский интерфейс первого приложения авторской подготовки может указывать, что обновления содержимого доступны для просмотра.
На фиг.26, первый пользователь выбирает реализацию обновлений содержимого, доступных в кэше 1214, в рабочей копии документа. Соответственно, приложение авторской подготовки объединяет загружаемую копию, сохраненную в кэше 1214, с рабочей копией первого приложения авторской подготовки. Третий блок данных добавляется в рабочую копию первого приложения авторской подготовки и отображается первому пользователю. Третья блокировка E3 снимается в таблице метаданных, ассоциированной с рабочей копией первого приложения авторской подготовки. Первый пользователь, следовательно, может инструктировать первому приложению авторской подготовки редактировать третий блок данных.
Обращаясь к фиг.27-31, работа пользователя во время сеанса совместной подготовки документа описана подробно ниже. Фиг.27-31 иллюстрируют изменения в примерном пользовательском интерфейсе 2000 первого приложения авторской подготовки, когда первый пользователь и второй пользователь совместно подготавливают документ 2010. Первый пользователь, Джейн Доу, редактирует документ 2010 с помощью первого приложения авторской подготовки, и второй пользователь, Джон Доу, редактирует документ 2010 с помощью другого приложения авторской подготовки.
Документ 2010 включает в себя первый блок 2012 данных, второй блок 2014 данных, третий блок 2016 данных и четвертый блок 2018 данных. Первый пользователь помещает блокировку 2022 содержимого относительно первого блока 2012 данных. Например, в одном варианте осуществления первый пользователь может перемещать свой курсор 2015 в первый блок 2012 данных. В другом варианте осуществления первый пользователь может предоставлять инструкции, чтобы выполнять одну или более операций редактирования по первому блоку 2012 данных.
На фиг.28, первый пользователь добавил текст в первый блок 2012 данных. Блокировка на первом блоке данных запрещает второму пользователю редактировать первый блок 2012 данных. В одном варианте осуществления первая блокировка 2022 не допускает редактирование первого блока данных 2012 вторым пользователем. В другом варианте осуществления первая блокировка 2022 предостерегает второго пользователя от редактирования первого блока 2012 данных, но не препятствует редактированию вторым пользователем. В еще одном варианте осуществления первая блокировка 2022 просто указывает, что первый пользователь выразил намерение редактировать первый блок 2012 данных.
На фиг.29 второй пользователь поместил блокировку 2024 содержимого относительно третьего блока 2016 данных. Поскольку второй пользователь выбрал вариант не использовать совместно свои изменения, вторая блокировка может быть видима в пользовательском интерфейсе 2000 первого приложения авторской подготовки, но любые изменения, выполненные в третьем блоке 2016 данных вторым пользователем, еще не видимы. В показанном примере вторая блокировка 2024 указана пользовательским интерфейсом 2000 посредством отображения скобки, указывающей рамки второй блокировки 2024. Вторая блокировка 2024 также может включать в себя именованный тэг, указывающий владельца второй блокировки 2024. На фиг.29, именованный тэг включает в себя текст, идентифицирующий второго пользователя, и значок. Значок может дополнительно идентифицировать пользователя цветом, символом или другим графическим символом.
На фиг.30, первое приложение авторской подготовки принимает обновления содержимого для документа 2010. Второй пользователь выбрал совместное использование изменений содержимого с другими пользователями и соответственно объединяет обновления содержимого в мастер-копию документа 2010 (например, через один из процессов синхронизации, описанных выше). Менеджер синхронизации первого приложения авторской подготовки получил обновления из мастер-копии документа 2010 посредством опроса устройства, хранящего мастер-копию.
Пользовательский интерфейс 2000 первого приложения авторской подготовки отображает оповещение 2030 первому пользователю, указывающее доступность обновления содержимого. В показанном примере текстовое окно 2030 возникает в пользовательском интерфейсе 2000. В другом варианте осуществления вторая блокировка или текст во второй блокировке может изменять цвет, стиль или форматирование. В другом варианте осуществления счетчик обновлений увеличивается, когда доступно каждое новое обновление.
Первый пользователь может выбирать просмотр/реализацию изменений, выполненных вторым пользователем, или игнорирование обновлений содержимого. Первый пользователь может продолжать редактировать любые незаблокированные блоки данных в документе 2010, в то же время игнорируя обновления содержимого. В одном варианте осуществления первый пользователь должен реализовать обновления содержимого перед объединением своих обновлений с мастер-копией. На фиг.31, первый пользователь инструктирует первому приложению авторской подготовки реализовывать обновления содержимого в документе 2010, отображенном посредством пользовательского интерфейса 2000 первого приложения авторской подготовки. Изменения содержимого, выполненные вторым пользователем, теперь видимы первому пользователю.
Варианты осуществления раскрытия могут быть реализованы как компьютерный процесс (способ), вычислительная система или как промышленное изделие, такое как компьютерный программный продукт или машиночитаемые носители информации. Процессы (программы) могут быть реализованы любым числом методов, включающих в себя структуры, описанные в этом документе. Одним таким методом являются машинные операции устройств типов, описанных в этом документе. Другой необязательный метод существует для одной или более индивидуальных операций способов, которые должны выполняться в вычислительном устройстве в связи с одним или более операторами, выполняющими некоторые из операций. Этим операторам не нужно располагаться рядом друг с другом, каждому может быть предоставлена машина, которая выполняет только часть программы.
Компьютерный программный продукт может быть компьютерным носителем информации, читаемым вычислительной системой и кодирующим компьютерную программу инструкций для выполнения вычислительного процесса. Компьютерный программный продукт может также быть распространяющимся сигналом по несущей частоте, читаемым вычислительной системой и кодирующим компьютерную программу инструкций для выполнения вычислительного процесса. Термин "компьютерные читаемые носители", как используемый в данном документе, включает в себя и носители хранения данных, и среды передачи данных.
Специалисты в данной области техники оценят, что раскрытие может быть реализовано на практике с другими конфигурациями компьютерных систем, включающими в себя "карманные" устройства, многопроцессорные системы, основанную на микропроцессорах или программируемую бытовую электронную аппаратуру, мини-компьютеры, универсальные компьютеры и т.п. Раскрытие также может быть реализовано на практике в распределенных вычислительных окружениях, в которых задачи выполняются удаленными обрабатывающими устройствами, которые связаны через сеть связи. В распределенном вычислительном окружении программные модули могут размещаться и на локальных, и на удаленных устройствах хранения данных. Как правило, программные модули включают в себя алгоритмы, программы, компоненты, структуры данных и другие типы структур, которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных.