РАЗРЕШЕНИЕ КОНФЛИКТОВ
CONFLICT RESOLUTION

УРОВЕНЬ ТЕХНИКИ
Традиционное совместное редактирование имеет тенденцию выполняться последовательно. Пользователи меняются, обращаясь к документу, редактируют документ и сохраняют результаты своего редактирования. Чтобы запретить конфликты редактирования, пользователь, получающий доступ, может установить блокировку на файл, чтобы запретить другим пользователям редактирование документа, когда пользователь, получающий доступ, редактирует документ. Итерационный процесс редактирования может вызывать задержки, так как каждый пользователь может ждать своей очереди на редактирование документа. Кроме того, итерационный процесс редактирования может быть труден для управления. Например, каждому пользователю, возможно, необходимо следить, кто какие части документа редактирует, какая версия документа является самой последней и когда наступит очередь следующего пользователя.
В других типах традиционного совместного редактирования каждый пользователь может редактировать свою копию документа. В дальнейшем все отредактированные копии могут объединяться в единый документ. Такое крупномасштабное объединение также может вызвать задержки, привести к многочисленным конфликтам редактирования и/или быть трудным для управления. Например, от пользователя, ответственного за объединение документов, может потребоваться следить за взаимодействием между документами. Пользователь также может нести ответственность за решение конфликтов между двумя или более отредактированными копиями.
Именно по этим и другим соображениям было сделано настоящее раскрытие.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Этот раздел описания сущности изобретения обеспечивается, чтобы в упрощенной форме представить выбор концепций, которые дополнительно описаны ниже в разделе "Подробное описание". Этот раздел описания сущности изобретения не предназначен для идентификации ключевых признаков или существенных признаков заявленного существа предмета, и также не предназначен быть помощью при определении объема заявленного существа предмета.
Варианты осуществления в настоящем раскрытии, в целом, направлены на то, чтобы дать возможность пользователю разрешать конфликты редактирования, возникающие при синхронизации файла данных в совместной среде. Каждый пользователь, создающий пользовательскую копию файла данных, может разрешать конфликты редактирования между основным файлом данных и пользовательской копией. Обновления, берущиеся из пользовательской копии файла данных, могут вноситься в основную копию после разрешения конфликтов редактирования.
В соответствии с аспектами раскрытия, применение авторинга дает возможность пользователю выборочно показывать и скрывать конфликты редактирования в пределах пользовательской копии файла данных. Применение авторинга позволяет свободное редактирование пользовательской копии, независимо от того, показаны или скрыты конфликты редактирования. Согласно другим аспектам, применение авторинга обеспечивает контекстный интерфейс пользователя, дающий возможность пользователю разрешать отображаемые конфликты редактирования.
В некоторых вариантах осуществления показ конфликтов редактирования содержит комментарии к контенту конфликта. В одном варианте осуществления комментарий к контенту конфликта указывает, как конфликтует контент. В другом варианте осуществления комментируется только конфликтующий контент, который вставлен, исправлен и/или удален в пределах пользовательской копии.
Эти и другие признаки и преимущества будут очевидны из чтения последующего подробного описания и рассмотрения сопроводительных чертежей. Следует понимать, что как предшествующее общее описание, так и последующее подробное описание являются только лишь пояснительными и не ограничивают аспекты, как они заявлены в формуле изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 - пример системы авторинга, имеющей признаки, являющиеся примерами аспектов раскрытия изобретения;
Фиг.2 - блок-схема примера системы авторинга, содержащей запоминающее устройство, в котором хранится основная копия файла данных, средствами связи соединенное с устройством пользователя, в котором хранится пользовательская копия файла данных, соответствующая принципам раскрытия;
Фиг.3 - блок-схема последовательности выполнения операций в примере процесса авторинга, посредством которого пользовательская копия файла данных может быть создана в соответствии с принципами раскрытия;
Фиг.4 - блок-схема вычислительной системы пользователя, выполненной с возможностью осуществления среды авторинга в соответствии с принципами раскрытия;
Фиг.5 - блок-схема последовательности выполнения операций в примере процесса синхронизации, посредством которого операция синхронизации, показанная на фиг.3, может осуществляться в соответствии с принципами раскрытия;
Фиг.6 - блок-схема последовательности выполнения операций в примере процесса редактирования, посредством которого операция продолжения, показанная на фиг.5, может осуществляться в соответствии с принципами раскрытия;
Фиг.7 - блок-схема последовательности выполнения операций для примера процесса просмотра, при котором один или более конфликтов редактирования могут просматриваться и по желанию разрешаться в соответствии с принципами раскрытия;
Фиг.8 - пример интерфейса пользователя, отображаемого для пользователя, когда никакие неразрешенные конфликты редактирования не были идентифицированы в соответствии с принципами раскрытия;
Фиг.9 - пример интерфейса пользователя, отображаемого для пользователя, когда был идентифицирован, по меньшей мере, один конфликт редактирования в соответствии с принципами раскрытия;
Фиг.10 - пример интерфейса пользователя, отображаемого для пользователя, когда был идентифицирован, по меньшей мере, один конфликт редактирования и пользователь решил просмотреть идентифицированный конфликт редактирования в соответствии с принципами раскрытия;
Фиг.11 - схема интерфейса пользователя, содержащая интерфейс разрешения конфликтов, отображаемый, когда конфликт редактирования выбирается из перечня в итоговом окне в соответствии с принципами существующего раскрытия;
Фиг.12 - блок-схема последовательности выполнения операций для примера процесса осуществления, посредством которого приложение авторинга осуществляет команды разрешения конфликтов, обеспечиваемые пользователем в соответствии с принципами раскрытия;
Фиг.13 - блок-схема последовательности выполнения операций для примера процесса принятия, посредством которого принятая операция редактирования может быть введена в объединенную версию файла данных в соответствии с принципами раскрытия;
Фиг.14 - блок-схема последовательности выполнения операций для примера процесса отклонения, посредством которого отклоненная операция редактирования может быть удалена или уничтожена внутри объединенной версии файла данных в соответствии с принципами раскрытия;
Фиг.15-22 - изменения в примере интерфейса пользователя, отображаемого приложением авторинга по мере того, как первый пользователь редактирует пользовательскую копию файла данных в сетевом режиме в соответствии с принципами раскрытия; и
Фиг.23-29 - изменения в примере интерфейса пользователя, отображаемого приложением авторинга по мере того, как первый пользователь редактирует пользовательскую копию файла данных в автономном режиме в соответствии с принципами раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ
В последующем подробном описании делаются ссылки на сопроводительные чертежи, являющиеся его частью, и на которых посредством иллюстраций показаны конкретные варианты осуществления или примеры. Хотя раскрытие будет описано в общем контексте программных модулей, которые выполняются вместе с программой приложения, выполняемой на операционной системе в вычислительной системе, специалисты в данной области техники должны признать, что раскрытие также может быть осуществлено в комбинации с другими программными модулями. Описанные здесь варианты осуществления могут объединяться и другие варианты осуществления могут быть использованы, не отступая от сущности или объема настоящего раскрытия. Последующее подробное описание не должно поэтому рассматриваться в ограничительном смысле и объем изобретения определяется пунктами приложенной формулой изобретения и их эквивалентами.
В соответствии с принципами настоящего раскрытия, приложение для совместного авторинга обеспечивает среду авторинга, в которой один или более пользователей могут редактировать один или более файлов данных (например, обрабатывать текстовые документы, документы презентации, документы в виде электронных таблиц, рисунки или другие изображения, звуковые файлы, прикладные программы программного обеспечения, рабочую программу и т.д.) посредством операций редактирования (например, вставка, редактирование и/или удаление контента и/или метаданных). Каждый пользователь получает пользовательскую копию файла данных, основанную на версии файла данных, представленной основным файлом. Пользователь может редактировать пользовательскую копию файла данных, чтобы создать новую версию файла данных и периодически синхронизировать новую версию с основной копией.
Синхронизация, как используемый здесь термин, относится к посылке и/или получению одного или более обновлений версии между основным файлом данных и пользовательской копией файла данных, чтобы создать общую версию файла данных. Например, каждый пользователь периодически может посылать в основную копию обновление версии, представляющее новую версию файла данных, и периодически может принимать от основной копии обновление версии, представляющее текущую версию основной копии (например, которое может отражать редактирования, выполненные другими пользователями).
Как кратко описано выше, варианты осуществления настоящего раскрытия направлены на то, чтобы позволить пользователю решать возникающие конфликты редактирования при синхронизации файла данных в совместной среде. В целом, конфликты редактирования могут возникать, когда основная копия файла данных изменяется (например, операции редактирования выполняются на основной копии) между тем моментом, когда пользовательская копия получена, и тем моментом, когда пользовательская копия синхронизируется с основной копией, или между синхронизациями. Такие изменения в основной копии будут упоминаться здесь как "промежуточные изменения".
Операция редактирования, выполненная на пользовательской копии файла данных, приводит, в результате, к конфликту редактирования, как используется здесь этот термин, когда операция редактирования сталкивается с промежуточным изменением, сделанным в основной копии (или наоборот). Например, если пользователь выполняет операцию редактирования на пользовательской копии файла данных, чтобы внести исправления в первый блок данных, который был удален в основной копии файла данных посредством промежуточного изменения, то тогда операция редактирования, приводящая к исправлению первого блока данных, может конфликтовать с операцией редактирования, приводя к удалению первого блока данных в основной копии.
Теперь со ссылкой на чертежи, на фиг.1 показан пример системы 100 авторинга, обладающей признаками, являющимися примерами аспектов изобретения в раскрытии. Система 100 авторинга содержит запоминающее устройство 120, в котором хранится основная копия 150 файла данных (например, текстовые документы, документы презентации, документы в виде электронной таблицы, картинки или другие изображения, звуковые файлы, программные приложения, рабочая программа и т.д.). В одном варианте осуществления запоминающее устройство 120 может содержать одно или более запоминающих устройств (например, сеть запоминающих устройств). В другом варианте осуществления запоминающее устройство 120 может содержать одно или более вычислительных устройств.
Система 100 авторинга также содержит, по меньшей мере, одно вычислительное устройство 110 пользователя, которое может средствами связи соединяться с запоминающим устройством 120. Как термин, используемый здесь, вычислительное устройство 110 пользователя содержит любое устройство, выполненное с возможностью получения от основной копии 150 файла данных и авторинга пользовательской копии 155 файла данных. Как термин, используемый здесь, авторинг файла данных может содержать создание файла данных и/или редактирование файла данных посредством операций редактирования. Каждое из вычислительных устройств 110 пользователя может выполнять авторинг файла данных, создавая пользовательскую копию 155 из файла данных, основанного на основной копии 150. Устройство 110 пользователя может редактировать пользовательскую копию 155, когда устройство 110 пользователя средствами связи соединено с запоминающим устройством 120 (то есть работает в сети) или когда устройство 110 пользователя отключено от запоминающего устройства 120 (то есть работает автономно).
Пользовательская копия 155 файла данных может синхронизироваться, когда вычислительное устройство 110 пользователя средствами связи подключается к запоминающему устройству 120 (то есть является сетевым) и периодически посылает в запоминающее устройство 120 одно или более обновлений, которые будут вводиться в основную копию 150 и, таким образом, будут использоваться совместно с другими вычислительными устройствами 110 пользователей. Синхронизация пользовательской копии 155 также содержит периодически получаемые от запоминающего устройства 120 обновления основной копии 150, берущие начало от вычислительных устройств 110 других пользователей. Когда вычислительное устройство 110 пользователя является автономным, вычислительное устройство 110 пользователя не синхронизируется с запоминающим устройством 120 и, следовательно, с вычислительными устройствами 110 других пользователей.
Дополнительные подробности, касающиеся синхронизации пользовательской копии файла данных с основной копией, можно найти в совместно рассматриваемой заявке №11/938082, зарегистрированной 9 ноября 2007 г. и озаглавленной "Collaborative Authoring", раскрытие которой настоящим содержится здесь во всей ее полноте. Дополнительные подробности, касающиеся синхронизации, когда вычислительное устройство 110 пользователя находится в автономном режиме, можно найти в совместно рассматриваемой заявке №11/957010, зарегистрированной 14 декабря 2007 г. и озаглавленной "Collaborative Authoring Modes", раскрытие которой настоящим содержится здесь во всей ее полноте.
В примере, показанном на фиг.1, четыре вычислительных устройства пользователей, HOA, HOB, HOC и HOD, средствами связи подключены к запоминающему устройству 120. В других вариантах осуществления, однако, к запоминающему устройству 120 может быть подключено любое количество вычислительных устройств 110 пользователей. В показанном примере вычислительное устройство 110 каждого пользователя, 110A, 110В, 110C, 110D, может посылать в запоминающее устройство 120 обновления, созданные пользователем вычислительного устройства 110, и может запрашивать у запоминающего устройства 120 обновления, созданные пользователями других вычислительных устройств 110.
Вычислительные устройства 110 пользователей 110A, 110В, 110C, 110D могут быть устройствами, отличными от запоминающего устройства 120, или могут содержать различные учетные записи пользователей, осуществленные на запоминающем устройстве 120. В одном варианте осуществления устройство, действующее как запоминающее устройство 120 для одного файла данных, может действовать как вычислительное устройство 110 пользователя для другого файла данных, и наоборот. В одном варианте осуществления запоминающее устройство 120 может быть вычислительным устройством 110 сервера, а вычислительные устройства 110A, 110В, 110C, 110D пользователей могут быть вычислительными устройствами клиентов.
В соответствии с аспектами раскрытия, обновления файла данных содержат обновления контента и/или обновления метаданных. Как этот термин используется здесь, обновления контента относятся к любой операции редактирования, сделанной в независимом контенте файла данных. Например, обновления контента для обрабатываемого текстового документа могут содержать добавленные параграфы (или их разделы), удаленные параграфы (или их разделы), исправленные параграфы (или их разделы) и добавления, удаления и/или изменения в таблицах, диаграммах, изображениях или других таких объектах. В другом варианте осуществления обновления контента для документа презентации могут содержать добавленные, удаленные и/или исправленные изображения, текст, анимации, звуки и другие подобные объекты данных.
Как этот термин используется здесь, обновления метаданных относятся к любой операции редактирования, выполняемой в метаданных файла данных. Примеры метаданных, не ограничивающиеся только этим, содержат блокировки контента, информацию о присутствии и другие подобные данные. Информация о присутствии указывает, какие пользователи сообщили о намерении редактировать документ. Блокировки контента запрещают редактирование любого контента в пределах блокировки для тех пользователей, которые не владеют блокировкой. Например, блокировки контента могут запрещать конфликты редактирования, указывая, какие части документа или другого файла данных были затребованы другим пользователем. В некоторых вариантах осуществления блокировки контента могут предотвращать (то есть ограничивать) редактирование пользователем части документа, которая затребована другим пользователем. В других вариантах осуществления, однако, пользователь может решить нарушить блокировку контента и редактировать часть файла данных. В таких случаях применение авторинга может предупредить пользователя, что при редактировании блокированной части могут возникнуть конфликты.
Как показано на фиг.2, контент 152 и метаданные 154 файла данных могут быть сохранены в памяти 125 запоминающего устройства 120. В некоторых вариантах осуществления метаданные 154 файла данных могут быть сохранены отдельно от контента 152. Например, контент 152 может быть сохранен в файле 150 данных и метаданные 154 могут быть сохранены в таблице (не показана) отдельно от файла 150 данных. В других вариантах осуществления, однако, метаданные 154 могут быть сохранены внутри файла 150 данных. Контент 152' и метаданные 154' пользовательской копии 155 файла данных могут быть сохранены в кэше (смотрите кэш 426 на фиг.4) на вычислительном устройстве 110 пользователя. Одно или более приложений 130 авторинга на вычислительном устройстве 110 пользователя обрабатывают и манипулируют контентом 152' и/или метаданными 154' пользовательской копии 155 файла данных.
В целом, вычислительные устройства 110 пользователя могут синхронизировать обновления контента отдельно от обновлений метаданных. В некоторых вариантах осуществления обновления метаданных синхронизируются автоматически между запоминающим устройством 120 и вычислительными устройствами 110 пользователей, тогда как обновления контента от вычислительного устройства 110 каждого пользователя синхронизируются по запросу соответствующего пользователя. В одном варианте осуществления среда 100 авторинга может синхронизировать обновления контента, только когда конфликты редактирования не существуют (или они были разрешены), но может синхронизировать обновления метаданных независимо от существующих конфликтов редактирования.
В одном варианте осуществления конфликт редактирования может вытекать из обновления контента, полученного от основной копии. В таком варианте осуществления изменения в контенте 152' и/или метаданных 154' пользовательской копии 155 наталкиваются на промежуточные изменения в контенте 152 основной копии 150. Такие конфликты редактирования упомянуты здесь как конфликты слияния. Например, в одном варианте осуществления, один и тот же блок данных, возможно, в промежутке между синхронизациями был отредактирован по-разному в пользовательской копии и в основной копии файла данных. В другом варианте осуществления блок данных, возможно, был отредактирован в основной копии 150 до того, как блокировка контента, полученная для блока данных в пользовательской копии 155, была синхронизирована с основной копией 150.
В другом варианте осуществления конфликт редактирования может вытекать из обновления метаданных, принятого от основной копии 150. В таком варианте осуществления изменения в контенте 152' и/или метаданных 154' пользовательской копии 155 сталкиваются с промежуточными изменениями в метаданных 154 основной копии 150 (например, добавление блокировок контента). Такие конфликты редактирования упоминаются здесь как конфликты неслияния. Например, устройство 110 пользователя может принять обновление метаданных от основной копии 150 файла данных, указывающее, что контент, исправленный в пользовательской копии 155, уже был блокирован другим пользователем.
В одном варианте осуществления изменения в метаданных 154' пользовательской копии 155 файла данных, которые сталкиваются с промежуточными изменениями в основной копии 150, отменяются промежуточными изменениями в основной копии 150. Например, если запоминающее устройство 120 принимает обновление метаданных от устройства HOA первого пользователя (фиг.1), запрашивающего блокировку контента на первом блоке данных файла данных, и определяет, что соответствующий первый блок данных основной копии 150 уже блокирован в устройстве HOB второго пользователя (фиг.1), то тогда запоминающее устройство 120 будет отклонять запрос блокировки устройства 110А первого пользователя.
На фиг.3 представлена блок-схема последовательности выполнения операций для примера процесса 300 авторинга, посредством которого применение авторинга может создавать пользовательскую копию файла данных, такую как пользовательская копия 155, показанная на фиг.2. Процесс 300 авторинга инициируется и начинается в модуле 302 запуска и переходит к операции 304 авторинга. В целом, операция 304 авторинга редактирует пользовательскую копию файла данных. В одном варианте осуществления операция 304 авторинга получает пользовательскую копию файла данных, основанную на основной копии существующего файла данных (например, от запоминающего устройства). В другом варианте осуществления операция 304 авторинга создает и редактирует новый файл данных, создает основную копию файла данных (например, периодически или когда редактирование закончено) и сохраняет основную копию файла данных (например, на запоминающем устройстве).
Операция 306 приема при применении приложения авторинга получает обновления, указывающие промежуточные изменения, сделанные в основной копии файла данных. Например, в одном варианте осуществления, операция 306 приема получает обновление контента, указывающее любые промежуточные изменения, сделанные в контенте основной копии одним или более другими пользователями, проводящими авторинг файла данных. В другом варианте осуществления операция 306 приема получает обновление метаданных, указывающее любые промежуточные изменения, сделанные в метаданных основной копии одним или более другими пользователями, проводящими авторинг файла данных. В другом варианте осуществления операция 306 приема получает как обновления контента, так и обновления метаданных.
[0045] В одном варианте осуществления операция 306 приема принимает обновления от основной копии с заданными интервалами. В другом варианте осуществления операция 306 приема принимает обновление от основной копии, когда на основной копии был выполнен пороговый объем редактирования. В другом варианте осуществления операция 306 приема принимает обновление от основной копии в ответ на запрос обновления. Например, операция 306 приема может запрашивать обновление у основной копии, чтобы обновить файл данных перед сохранением файла данных. В таком варианте осуществления операция 306 приема запрашивает у основной копии обновление, когда от пользователя принимаются команды синхронизировать файл данных.
Операция 308 обновления вводит промежуточные изменения в пользовательскую копию документа (например, посредством слияния промежуточных изменений в пользовательской копии документа). В одном варианте осуществления операция 308 обновления вводит промежуточные изменения в метаданные, способом, отличном от промежуточных изменений контента. В одном варианте осуществления операция 308 обновления может вводить обновления контента и обновления метаданных автоматически. В другом варианте осуществления операция 308 обновления может вводить обновления метаданных автоматически и может вводить обновления контента по запросу пользователя. Например, операция 308 обновления может предоставить пользователю кнопку или другой интерфейсный инструмент, указывающий на доступность обновлений, которые могут быть введены посредством включения кнопки или другого интерфейсного инструмента.
Операция 308 обновления также может определить, существуют ли какие-либо конфликты редактирования. В некоторых вариантах осуществления операция 308 обновления может вводить промежуточные изменения, по-разному зависящие от того, идентифицированы ли конфликты редактирования. Например, в одном варианте осуществления, операция 308 обновления может запретить проведение обновлений контента, если идентифицированы конфликты редактирования, но может продолжить проведение обновления метаданных автоматически, несмотря на существование конфликтов редактирования. Предпочтительно, синхронизация обновлений метаданных, несмотря на существование конфликтов редактирования, может смягчить возникновение дальнейших конфликтов редактирования. Например, синхронизация блокировки данных может запретить параллельное редактирование одного и того же блока данных разными пользователями.
Операция 310 синхронизации пытается синхронизировать пользовательскую копию с основной копией, направляя в основную копию обновления, указывающие изменения, сделанные в пользовательской копии файла данных. В одном варианте осуществления операция 310 синхронизации направляет обновления для распределения другим пользователям, совместно проводящим авторинг файла данных. Операция 310 синхронизации сохраняет пользовательскую копию как основную копию (то есть перезаписывает основную копию), только если не идентифицированы никакие конфликты редактирования между пользовательской копией и основной копией. В одном варианте осуществления операция 310 синхронизации получает самую последнюю версию основной копии и определяет, существуют ли конфликты редактирования между пользовательской копией и новой версией основной копии.
В соответствии с аспектами раскрытия, операция 310 синхронизации может позволить пользователю инициировать разрешение конфликтов редактирования по усмотрению пользователя в любое время после того, как конфликт редактирования был идентифицирован. Операция 310 синхронизации может позволить пользователю продолжить свободно редактировать пользовательскую копию файла данных, даже если было определено наличие одного или более конфликтов редактирования. В одном варианте осуществления операция 310 синхронизации может продолжить редактирование пользовательской копии при наличии конфликтов редактирования, скрытых от пользователя. В другом варианте осуществления операция 310 синхронизации может продолжать редактирование пользовательской копии при наличии конфликтов редактирования, представляемых пользователю. Если редактирование пользовательской копии продолжается, несмотря на существование одного или более конфликтов редактирования, то обновления контента, указывающие изменения в пользовательской копии, могут быть сохранены локально, пока конфликты редактирования не будут разрешены, вместо того, чтобы отправлять их в основную копию для синхронизации, как будет обсуждаться здесь более подробно.
Операция 310 синхронизации может синхронизировать обновления метаданных по-другому, чем обновления контента. Например, в одном варианте осуществления, операция 310 синхронизации может направлять обновления контента, только если все конфликты редактирования были разрешены, и может направлять обновления метаданных независимо от того, были ли разрешены конфликты редактирования. Как отмечено выше, синхронизация обновлений метаданных, несмотря на существование конфликтов редактирования, может смягчить возникновение дальнейших конфликтов редактирования. Дополнительно, прекращение синхронизации обновлений контента при существовании конфликтов редактирования может запретить введение конфликтов редактирования в основную копию файла данных. Процесс 300 авторинга завершается и заканчивается в модуле 312 остановки.
[0051] В целом, среда авторинга, имеющая признаки, являющиеся примерами аспектов изобретения в соответствии с принципами раскрытия, может быть реализована на вычислительном устройстве пользователя (например, на персональном компьютере, серверном компьютере, ноутбуке, карманном компьютере PDA, смартфоне или на любом другом таком вычислительном устройстве 110 пользователя). Вариант осуществления, в частности, для вычислительной системы 400 пользователя, выполненный с возможностью осуществления среды авторинга и выполнения процессов авторинга, таких как процесс 300 авторинга, показанный на фиг.3, описан здесь со ссылкой на фиг.4.
На фиг.4 пример вычислительной системы 400 для осуществления принципов раскрытия содержит вычислительное устройство пользователя, такое как вычислительное устройство 410 пользователя. В базовой конфигурации вычислительное устройство 410 пользователя обычно содержит, по меньшей мере, один процессор 415 для выполнения приложений и программ, хранящихся в системной памяти 420. В зависимости от точной конфигурации и типа вычислительного устройства 910 пользователя, системная память 420 может содержать, в частности, оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, компакт-диск CD-ROM, цифровые универсальные диски (DVD-диски) или другие оптические запоминающие устройства, магнитные кассеты, магнитную ленту, дисковое магнитное запоминающее устройство или другие магнитные запоминающие устройства или устройства, выполненные в соответствии с другими технологиями запоминающих устройств.
В системной памяти 420 обычно хранится операционная система 422, такая как операционная система WINDOWS компании MICROSOFT CORPORATION, Редмонд, штат Вашингтон, пригодная для управления работой вычислительного устройства 410 пользователя. Системная память 420 также может содержать кэш 426 файла данных, в котором может храниться пользовательская копия 427 документа. Метаданные 429 файла данных также могут храниться в кэше 426 пользователя.
В системной памяти 420 может также храниться одно или более приложений программного обеспечения, таких как приложения 424 авторинга для создания и редактирования файлов данных. Одним из примеров, в частности, приложения 424 авторинга, пригодного для проведения авторинга документов в соответствии с принципами настоящего раскрытия, является программное обеспечение авторинга MICROSOFT OFFICE WORD от компании MICROSOFT CORPORATION, Редмонд, штат Вашингтон. Другие примеры приложений авторинга, не ограничивающиеся только этим, содержат программное обеспечение POWERPOINT для создания презентаций и программное обеспечение VISIO создания чертежей и диаграмм, которые оба также предоставляются компанией MICROSOFT CORPORATION, Редмонд, штат Вашингтон.
Вычислительное устройство 410 пользователя также может иметь устройство(-а) 430 ввода данных, такое как клавиатура, мышь, перо, голосовое устройство ввода данных, сенсорное устройство ввода данных и т.д. для ввода и управления данными. Устройство(-а) 425 вывода, такое как экран дисплея, громкоговорители, принтер и т.д., также могут содержаться в составе устройства. Эти устройства 435 вывода известны в технике и нет необходимости обсуждать их здесь подробно.
Вычислительное устройство 410 пользователя также может содержать подключения 440 для связи, позволяющие устройству 410 осуществлять связь с вычислительными устройствами 410 других пользователей, например, с запоминающим устройством 120 на фиг.1, по сети в распределенной вычислительной среде (например, Интранет или Интернет). Для примера, в частности, среда 440 устройств связи содержит проводную среду, такую как проводная сеть или прямое проводное соединение, и беспроводную среду, такую как акустическая, радиочастотная, инфракрасная и другие беспроводные среды.
На фиг.5 представлена блок-схема последовательности выполнения операций для примера процесса 500 синхронизации, посредством которого может осуществляться операция 310 синхронизации, показанная на фиг.3. Процесс 500 синхронизации инициируется и начинается в модуле 502 запуска и переходит к операции 504 получения. Операция 504 получения заключается в получении обновления версии от основной копии. Например, в одном варианте осуществления, операция 504 получения может запросить обновление версии от основной копии. В другом варианте осуществления операция 504 получения может принимать периодические обновления версии от основной копии (например, с заданными интервалами).
Операция 506 идентификации определяет, существуют ли конфликты редактирования между текущей версией основной копии и пользовательской копией. Более конкретно, операция 506 идентификации определяет, сталкиваются ли друг с другом какие-либо промежуточные изменения в основной копии и какие-либо операции редактирования, выполненные на пользовательской копии с момента самой последней синхронизации (или с тех пор, как была получена пользовательская копия).
Операция 508 слияния объединяет пользовательскую копию и основную копию в объединенную версию файла данных и представляет объединенную версию пользователю. В одном варианте осуществления операция 508 слияния интегрирует промежуточные изменения в пользовательскую копию файла данных. В другом варианте осуществления операция 508 слияния интегрирует сделанные пользователем изменения в основную копию файла данных. В другом варианте осуществления операция 508 слияния интегрирует промежуточные изменения и сделанные пользователем изменения в самую последнюю синхронизированную версию основной копии (то есть версию основной копии, которая была получена и отредактирована пользователем).
Первый модуль 510 определения разбивает поток процесса 500 синхронизации, основываясь на том, были ли с помощью операции 506 идентификации идентифицированы какие-либо конфликты редактирования, и/или остались ли какие-либо конфликты редактирования из ранее полученных обновлений неразрешенными. Если первый модуль 510 определения решает, что, по меньшей мере, один конфликт редактирования был идентифицирован, то операция 512 предупреждения указывает пользователю на присутствие конфликта редактирования. Например, операция 512 предупреждения может представить пользователю сообщение, указывающее на существование одного или более конфликтов редактирования. В одном варианте осуществления операция 512 предупреждения может также указывать последствия неразрешенных идентифицированных конфликтов редактирования (например, неспособность полностью синхронизировать пользовательскую копию с основной копией, пока не будет разрешен конфликт редактирования).
Второй модуль 514 определения дает возможность пользователю выбрать, когда просматривать и разрешать идентифицированный конфликт редактирования. В показанном примере второй модуль 514 определения предоставляет пользователю вариант просмотра конфликта редактирования или продолжения редактирования пользовательской копии файла данных без просмотра конфликта редактирования. Если второй модуль 514 определения решает, что пользователем был выбран вариант продолжающегося редактирования, то операция 516 продолжения дает пользователю возможность свободно редактировать файл данных, как будет здесь обсуждаться более подробно.
Если второй модуль определения 514 решает, что пользователем был выбран вариант просмотра, то тогда, однако, операция 518 просмотра дает пользователю возможность просмотреть и, как вариант, разрешить конфликт редактирования, используя процесс разрешения конфликтов, который будет обсуждаться здесь более подробно. Когда операция 518 просмотра завершена, процесс 500 синхронизации переходит обратно к первому модулю 510 определения 510, чтобы определить, остаются ли неразрешенными какие-либо конфликты редактирования. Описанная выше последовательность операций повторяется до тех пор, пока первый модуль 510 определения не решит, что никаких конфликтов редактирования не существует.
Когда первый модуль 510 определения 510 решает, что никакие конфликты редактирования не существуют, то тогда третий модуль 520 определения решает, были ли получены все промежуточные изменения от основной копии и были ли они реализованы в пользовательской копии. Например, третий модуль 520 определения может определить, были ли сделаны какие-либо промежуточные изменения в основной копии со времени самого последнего обновления. В одном варианте осуществления третий модуль 520 определения сравнивает номер версии для текущей версии основной копии с номером версии для версии основной копии, представленной самым последним принятым обновлением.
Если третий модуль 520 определения решает, что дополнительные промежуточные изменения существуют (то есть, что самое последнее полученное обновление не отражает текущее состояние основной копии), то процесс 500 синхронизации возвращается к операции 504 получения и процесс 500 синхронизации начинается снова. Если третий модуль 520 определения 520 решает, что никакие дополнительные промежуточные изменения не существуют (то есть, что самое последнее полученное обновление отражает текущее состояние основной копии), то тогда, однако, операция 522 индикации обеспечивает индикацию, что конфликт редактирования был разрешен. Например, в одном варианте осуществления операция 522 индикации может отобразить пользователю сообщение, указывающее, что все конфликты редактирования были разрешены. В другом варианте осуществления операция 522 индикации может отобразить пользователю графику, значок или другие указания, указывающие, что конфликты редактирования были разрешены. Операция 524 сохранения переписывает пользовательскую копию на основную копию файла данных. Процесс 500 синхронизации завершается и заканчивается в модуле 526 остановки.
На фиг.6 представлена блок-схема последовательности выполнения операций для примера процесса 600 редактирования, посредством которого может осуществляться операция 516 продолжения, показанная на фиг.5. Процесс 600 редактирования инициируется и начинается в модуле 602 запуска и переходит к операции 604 приема. Операция 604 приема получает команды редактирования от пользователя. Например, операция 604 приема может получить ввод от пользователя через устройство ввода данных, такое как устройство 430 ввода данных, показанное на фиг.4.
Команды редактирования указывают изменения для контента и/или метаданных объединенной версии пользовательской копии файла данных. Например, команды редактирования могут указать, что блок данных (например, параграф, столбец, таблица, слайд, графика и т.д.) нового файла данных должен быть добавлен, удален или исправлен. Команды редактирования также могут указать изменение в метаданных (например, изменение в блокировках контента и т.д.). Операция 606 внесения выполняет операцию редактирования на новой копии документа.
Модуль 608 определения решает, указал ли пользователь желание прекратить редактировать. Например, в первом варианте осуществления, модуль 608 определения может решить, что пользователь захотел разрешить конфликты редактирования. В другом варианте осуществления модуль 608 определения решает, что пользователь захотел закрыть новую копию файла данных или синхронизировать новую копию с основной копией файла данных. В другом варианте осуществления модуль 608 определения может решить, что пользователь захотел продолжить редактирование новой копии файла данных.
Если модуль 608 определения решает, что пользователь захотел продолжить редактирование файла данных, то процесс 600 редактирования 600 циклически возвращается обратно к операции 604 приема и начинается снова. Если модуль 608 определения решает, что пользователь захотел прекратить редактирование файла данных, то тогда, однако, операция 610 сохранения сохраняет любые изменения, сделанные пользователем. В целом, операция 610 сохранения запоминает объединенную версию файла данных, в том числе любые изменения, сделанные пользователем, в месте, отличном от основной копии файла данных. В одном варианте осуществления операция 610 сохранения запоминает объединенную версию файла данных в локальной памяти (например, в локальном кэше). В другом варианте осуществления операция 610 сохранения может запомнить объединенную версию файла данных на запоминающем устройстве отдельно от основной копии. Процесс 600 редактирования завершается и заканчивается в модуле 612 остановки.
На фиг.7 представлена блок-схема последовательности выполнения операций для примера процесса 700 просмотра, посредством которого один или более конфликтов редактирования могут быть рассмотрены и, по желанию, разрешены. Например, процесс 700 просмотра является одним из примеров процесса осуществления процесса 518 просмотра на фиг.5. Процесс 700 просмотра инициируется и начинается в модуле 702 запуска и переходит к операции 704 отображения. Операция 704 отображения представляет конфликты редактирования пользователю. В одном варианте осуществления конфликты редактирования представляются в рамках контекста объединенной версии файла данных.
В некоторых вариантах осуществления операция 704 отображения выводит на дисплей все конфликтующие редактирования как из основной копии, так и из пользовательской копии. Например, в одном варианте осуществления операция 704 отображения может выводить на дисплей контент, возникающий в результате слияния конфликтующих операций редактирования с пользовательской копией файла данных. В другом варианте осуществления операция 704 отображения может выводить на дисплей контент, возникающий в результате слияния конфликтующей операции редактирования с основной копией файла данных. В другом варианте осуществления операция 704 отображения может выводить на дисплей контент, возникающий в результате слияния конфликтующих операций редактирования с версией файла данных до каких-либо промежуточных изменений.
В одном варианте осуществления, если конфликтующие операции редактирования проводятся в одном и том же объекте (например, символ, слово, параграф, графика, слайд, ячейка, строка, столбец и т.д.) в пределах файла данных, то тогда операция 704 отображения выводит на дисплей объект, преобразованный обеими операциями редактирования. В другом варианте осуществления операция 704 отображения выводит на дисплей две копии объекта: одну копию, представляющую версию объекта, найденную в основной копии файла данных, и другую копию, представляющую версию объекта, найденную в пользовательской копии файла данных.
В одном варианте осуществления операция 704 отображения выводит на дисплей конфликтующий контент как комментарий к неконфликтующему контенту объединенной версии файла данных. Например, в одном варианте осуществления конфликтующий контент, добавленный к файлу данных в основной копии или в пользовательской копии, может быть показан как добавленный к неконфликтующему контенту и снабжен комментарием, чтобы указать конфликтующий контент, который был вставлен в одну версию файла данных. В другом варианте осуществления конфликтующий контент, удаленный из файла данных в основной копии или в пользовательской копии, может быть показан как добавленный к неконфликтующему контенту и снабжен комментарием, чтобы указать конфликтующий контент, который был удален в одной версии файла данных. Здесь далее будет представлено дополнительное раскрытие, относящееся к отображению конфликтующих редактирований.
Операция 706 получения принимает от пользователя команды авторинга. Например, операция 706 получения может принять ввод от пользователя через устройство ввода данных, такое как устройство 430 ввода данных, показанное на фиг.4. Первый модуль 708 определения решает, обеспечил ли пользователь команды на возвращение к свободному продолжению редактирования файла данных вместо того, чтобы продолжить просмотр конфликтов редактирования. Например, в одном варианте осуществления, первый модуль 708 определения может решить, что пользователь выбрал интерфейс переключения, который здесь будет раскрыт более подробно. В другом варианте осуществления первый модуль 708 определения может решить, что пользователь обеспечил команды принятия или отклонения одной или более операций конфликтующего редактирования.
Если первый модуль 708 определения решает, что пользователь обеспечил команды на возвращение к редактированию, то процесс 700 просмотра завершается и заканчивается в модуле 714 остановки 714, даже если идентифицированные конфликты редактирования остаются неразрешенными. Если первый модуль 708 определения решает, что пользователь не обеспечил команды на возвращение к редактированию, то тогда, однако, операция 710 внесения выполняет команды пользователя. В целом, операция 710 внесения может ввести или отклонить каждую операцию редактирования в соответствии с командами, предоставленными пользователем. Например, в одном варианте осуществления, операция 710 внесения может ввести операцию конфликтующего редактирования в объединенную версию файла данных, если пользователь обеспечивает команды на принятие операции редактирования. В другом варианте осуществления операция 710 внесения может удалить эффекты отклоненной операции редактирования из объединенной версии файла данных. Здесь обеспечиваются дополнительные подробности относительно характеристик операции 710 внесения.
Второй модуль 712 определения 712 решает, остаются ли неразрешенными любые идентифицированные конфликты редактирования. В одном варианте осуществления второй модуль 712 определения не решает, были ли созданы какие-либо новые конфликты редактирования после самой последней идентификации конфликтов редактирования (например, через обновления, полученные от основной копии, через дополнительные операции редактирования, выполненные пользователем, и т.д.). Скорее, второй модуль 712 определения решает, остаются ли неразрешенными какие-либо из уже идентифицированных конфликтов редактирования. В другом варианте осуществления второй модуль 712 определения решает, существуют ли какие-либо новые конфликты редактирования.
Если второй модуль 712 определения решает, что, по меньшей мере, один идентифицированный конфликт редактирования остается неразрешенным, то процесс 700 решения циклически возвращается назад к первому модулю 708 определения. Если второй модуль 712 определения решает, что идентифицированные конфликты редактирования были разрешены, то тогда, однако, процесс 700 решения завершается и заканчивается в модуле 714 остановки.
В целом, интерфейс пользователя, отображаемый с помощью приложения авторинга на устройстве пользователя, такого как приложение 130 авторинга на устройстве 110 пользователя на фиг.2, может изменяться, основываясь на том, были ли приложением авторинга идентифицированы один или более конфликтов редактирования. В некоторых вариантах осуществления приложение авторинга может отображать предупреждение, указывающее пользователю на существование конфликтов редактирования. Например, в одном варианте осуществления, строка состояния может указывать существование конфликтов редактирования. В другом варианте осуществления пользователю может отображаться окно сообщений, обеспечивающее указания на последствия конфликтов редактирования. Например, в окне сообщений может быть указано, что контент не может быть синхронизирован, пока не будут разрешены идентифицированные конфликты редактирования.
Кроме того, когда конфликт редактирования идентифицирован, интерфейс пользователя приложения авторинга может, по усмотрению пользователя, быть выполнен с возможностью переключения между показом конфликтов редактирования и сокрытием конфликтов редактирования. В целом, интерфейс пользователя приложения авторинга допускает свободное редактирование файла данных, когда конфликты редактирования показываются и когда конфликты редактирования скрыты. Интерфейс пользователя предоставляет дополнительные функциональные возможности, позволяющие просматривать и решать конфликты редактирования, когда пользователь захочет просматривать конфликты редактирования.
На фиг.8-10 схематично представлены блок-схемы, показывающие примеры интерфейсов пользователя, которые приложение авторинга может отображать для пользователя, чтобы позволить авторинг и синхронизацию файла данных. На фиг.8 представлен пример интерфейса 800 пользователя, предоставляемого пользователю, когда не были идентифицированы никакие неразрешенные конфликты редактирования. Например, приложение авторинга может отображать интерфейс 800 пользователя, когда выполняется операция 304 редактирования, показанная на фиг.3.
Интерфейс 800 пользователя содержит окно 810 авторинга, в котором может отображаться пользовательская копия файла данных. В одном варианте осуществления окно 810 авторинга содержит область 812 редактирования, в которой отображается контент пользовательской копии. В области 812 редактирования могут также отображаться метаданные файла данных (например, блокировки контента). Пользователь приложения авторинга может взаимодействовать с контентом в области 812 редактирования, чтобы добавлять, удалять или исправлять отображаемый контент.
На фиг.9 представлен пример интерфейса 850 пользователя, отображаемый пользователю, когда был идентифицирован, по меньшей мере, один конфликт редактирования. Например, приложение авторинга может выводить на дисплей интерфейс 850 пользователя, когда пользователь хочет продолжить редактирование файла данных вместо того, чтобы разрешать конфликты (например, смотрите первый модуль 516 определения на фиг.5). В одном варианте осуществления интерфейс 850 пользователя выводится на дисплей, когда выполняется процесс 600 редактирования, показанный на фиг.6.
Пользовательский интерфейс 850 содержит окно 810 авторинга, показанное на фиг.8, имеющее область редактирования 812, в которой контент и метаданные файла данных могут быть отображены и/или редактироваться. Пользовательский интерфейс 850 также содержит интерфейс 815 переключения. В целом, выбор интерфейса 815 переключения пользователем заставит интерфейс пользователя отображать идентифицированные конфликты редактирования. В одном варианте осуществления выбор интерфейса 815 переключения также будет активировать интерфейс разрешения конфликтов.
На фиг.10 представлен пример интерфейса 900 пользователя, который отображается пользователю, когда был идентифицирован, по меньшей мере, один конфликт редактирования и пользователь захотел просмотреть идентифицированный конфликт редактирования. Интерфейс 900 пользователя также может позволить разрешить идентифицированные конфликты редактирования. Например, приложение авторинга может выводить на дисплей интерфейс 900 пользователя, когда пользователь хочет просмотреть конфликты редактирования (смотрите первый модуль 514 определения на фиг.5). Соответственно, в одном варианте осуществления интерфейс 900 пользователя выводится на дисплей, когда выполняется процесс 700 просмотра, показанный на фиг.7.
Пользовательский интерфейс 900 также содержит интерфейс 915 переключения, с помощью которого пользователь может скрыть идентифицированные конфликты редактирования. В одном варианте осуществления выбор интерфейса 915 переключения также деактивирует интерфейс 920 разрешения конфликтов. Например, выбор интерфейса 915 переключения может заставить отображать пользователю интерфейс 850 пользователя, показанный на фиг.9, вместо интерфейса 900 пользователя.
Интерфейс 900 пользователя содержит окно 910 авторинга, имеющее область 912 редактирования, в которой могут отображаться и/или редактироваться контент и метаданные файла данных. Область 912 редактирования также отображает идентифицированные конфликты редактирования или контент, возникающий в результате идентифицированных конфликтов редактирования. Например, в одном варианте осуществления, область 912 редактирования может отображать объединенную версию файла данных, созданную посредством объединения пользовательской копии с основной копией.
В некоторых вариантах осуществления идентифицированные конфликты редактирования, отображаемые внутри области 912 редактирования, указываются посредством комментариев к контенту, возникающих в результате операций редактирования конфликтов. В одном варианте осуществления комментарии указывают, как конфликтует результирующий контент. Например, в одном варианте осуществления, раздел контента (например, слово, параграф, таблица, столбец, графика и т.д.) может быть прокомментирован, чтобы указать, что раздел был вставлен, удален и/или исправлен в пользовательской копии и/или в основной копии. Пример комментариев, указывающих такую вставку, удаление и/или исправление, может содержать заданный цвет, перечеркивание, подчеркивание, заданную непрозрачность, выделение или другие подобные признаки.
Интерфейс 900 пользователя может также содержать итоговое окно 920, в котором приложение авторинга может сообщать пользователю информацию об идентифицированных конфликтах редактирования. В некоторых вариантах осуществления итоговое окно 920 может содержать область 922 итоговой информации. Например, область 922 итоговой информации может отображать количество конфликтов редактирования, идентифицированных приложением авторинга и остающихся неразрешенными. Область 922 итоговой информации также может указывать количество сливаемых и несливаемых конфликтов редактирования. В одном варианте осуществления область 922 итоговой информации может освежаться (то есть обновляться) по мере того, как разрешаются конфликты редактирования.
В некоторых вариантах осуществления итоговое окно 920 также может отображать перечисление 924 любых нерешенных конфликтов редактирования. Например, в одном варианте осуществления весь конфликтующий контент (например, контент добавленный, удаленный и/или исправленный в пользовательской копии или в основной копии) перечисляется в пределах итогового окна 920. В одном варианте осуществления перечисленный контент может быть снабжен комментарием, чтобы указать происхождение контента (например, пользовательская копия или основная копия). В другом варианте осуществления перечисленный контент может быть снабжен комментарием, чтобы указать тип действия редактирования (например, исправление, вставка, удаление и т.д.), создающего в итоге контент.
Интерфейс 900 пользователя может быть выполнен с возможностью предоставления пользователю возможности разрешить отображенные конфликты редактирования. Например, интерфейс 900 пользователя может дать возможность пользователю обеспечить команды по разрешению для одного или более отображаемых конфликтов редактирования. В одном варианте осуществления интерфейс 900 пользователя дает возможность пользователю обеспечить команды разрешения для отображаемых конфликтов редактирования в соответствии с их последовательностью. В другом варианте осуществления интерфейс 900 пользователя дает возможность пользователю обеспечить команды разрешения для любого отображенного конфликта редактирования, выбранного пользователем.
Примеры команд разрешения содержат команду принятия, посредством которой пользователь указывает, что заданная операция редактирования должна быть введена в объединенную версию файла данных, и команду отклонения, посредством которой пользователь указывает, что операция редактирования не должна выполняться в объединенной версии файла данных. Другие примеры команд разрешения могут содержать команду "следующий", посредством которой пользователь переходит к следующему конфликту редактирования, не разрешая выбранный в настоящее время конфликт редактирования, и команду "предыдущий", посредством которой пользователь возвращается к предыдущему конфликту редактирования, не разрешая выбранный в настоящее время конфликт редактирования.
В некоторых вариантах осуществления пользователь может обеспечить команду по разрешению конфликтов, взаимодействуя с одним или более интерфейсами 930 разрешения. Примерами интерфейсов разрешения конфликтов являются, в частности, кнопки (например, кнопка принятия, кнопка отклонения, кнопка "следующий" и т.д.), раскрывающиеся меню, вкладки и другие подобные интерфейсные инструменты. В одном варианте осуществления, когда отображаются конфликты редактирования, интерфейс 900 пользователя отображает для пользователя один или более интерфейсов разрешения конфликтов. В другом варианте осуществления, когда пользователем выбран конфликтующий контент, интерфейс 900 пользователя отображает для пользователя один или более интерфейсов разрешения конфликтов.
Например, пользователь может обеспечить команду разрешения конфликтов, выбирая (например, через курсор или другой интерфейс ввода) контент внутри области 912 редактирования, который является результатом одной из операций с конфликтом редактирования и взаимодействия с интерфейсом разрешения конфликтов. В других вариантах осуществления пользователь может обеспечить команду разрешения конфликтов, выбирая операцию редактирования, отображаемую внутри итогового окна 920, и взаимодействуя с интерфейсом разрешения конфликтов, чтобы обеспечить или выбрать команду разрешения конфликтов.
Например, на фиг.11 интерфейс 900 пользователя содержит интерфейс 930 разрешения конфликтов, который отображается, когда конфликт 925 редактирования выбирается из перечня 924 в итоговом окне 920. Интерфейс 930 разрешения конфликтов, показанный на фиг.11, содержит кнопку 932 принятия и кнопку 934 отклонения. В других вариантах осуществления интерфейс 930 разрешения конфликтов может, однако, содержать любой желаемый интерфейсный инструмент. В примере, показанном на фиг.11, интерфейс 930 разрешения конфликтов отображается как всплывающее окно. В других вариантах осуществления, однако, интерфейс 930 разрешения конфликтов может содержать инструментальную панель или ее раздел, раскрывающееся меню или его часть или другой подобный интерфейс отображения.
На фиг.12 представлена блок-схема последовательности выполнения операций примера процесса 1000 внесения, посредством которого приложение авторинга реализует команды разрешения конфликтов, предоставленные пользователем. Процесс 1000 внесения инициируется и начинается в модуле 1002 запуска и переходит к операции 1004 получения. Операция 1004 получения принимает команду разрешения конфликтов от пользователя для разрешения конфликта контента. Например, операция 1004 получения может определить заданный раздел конфликтующего контента, который был выбран пользователем, и конкретную кнопку, опцию меню или другой интерфейсный инструмент разрешения конфликтов, выбранные пользователем.
Модуль 1006 определения определяет, указывает ли команда разрешения конфликтов, что выбранный конфликтующий контент должен быть принят или отклонен. Если модуль 1006 определения решает, что операция 1004 получения принимает команду принятия, то процесс 1000 реализации переходит к операции 1008 принятия. Если модуль 1006 определения решает, что операция 1004 получения принимает команду отклонения, то тогда, однако, процесс 1000 реализации переходит к операции 1010 отклонения. Подробности, касающиеся примеров процессов для осуществления операций 1008, 1010 принятия и отклонения, обсуждаются ниже со ссылкой на фиг.13 и 14. Процесс 1000 внесения завершается и заканчивается в модуле 1012 остановки.
На фиг.13 представлена блок-схема последовательности выполнения операций примера процесса 1100 принятия, посредством которого принятая операция редактирования может быть введена в объединенную версию файла данных. Процесс 1100 принятия инициируется и начинается в модуле 1102 запуска и переходит к операции 1104 чистки. Операция 1104 чистки удаляет любые комментарии или другие указания из принятого контента. Например, любое подчеркивание, зачеркивания, окраска, или другие подобные комментарии принятого контента удаляются из объединенной версии файла данных.
Модуль 1106 определения решает, привел ли принятый контент в результате к добавлению и/или форматированию контента в файле данных. Например, в одном варианте осуществления, модуль 1106 определения решает, содержит ли принятый контент символ, слово, таблицу, столбец, графику или другой блок данных в файле данных. В другом варианте осуществления модуль 1106 определения решает, добавил ли принятый контент какое-либо форматирование (например, полужирный шрифт, подчеркивание, цвет шрифта, выделение и т.д.) в файл данных.
Если модуль 1106 определения решает, что принятая операция редактирования привела в результате к добавлению в контент и/или форматированию, то процесс 1100 принятия завершается и заканчивается в модуле 1110 остановки. Если модуль 1106 определения решает, что принятая операция редактирования удаляет контент и/или форматирование из файла данных, то тогда, однако, операция 1108 удаления удаляет контент и/или форматирование из объединенной версии файла данных. Процесс 1100 принятия завершается и заканчивается в модуле 1110 остановки после завершения операции 1108 удаления.
На фиг.14 представлена блок-схема последовательности выполнения операций примера процесса 1200 отклонения, посредством которого отклоненная операция редактирования может быть удалена или уничтожена внутри объединенной версии файла данных. Процесс 1200 отклонения инициируется и начинается в модуле 1202 запуска и переходит к операции 1204 чистки. Операция 1204 чистки удаляет из контента любые комментарии или другие указания, являющиеся результатом отклоненной операции редактирования. Например, любое подчеркивание, зачеркивания, окраска или другие подобные комментарии в контенте удаляются из объединенной версии файла данных.
Модуль 1206 определения решает, могла ли отклоненная операция редактирования привести в результате к добавлению контента и/или к форматированию в файле данных. Например, в одном варианте осуществления, четвертый модуль 1206 определения 1206 решает, добавила ли отклоненная операция редактирования символ, слово, строку, ячейку или другой блок данных или объект контента к файлу данных. В другом варианте осуществления модуль 1206 определения решает, добавила ли отклоненная операция редактирования какое-либо форматирование (например, полужирный шрифт, подчеркивание, цвет шрифта, выделение и т.д.) к файлу данных.
Если модуль 1206 определения решает, что отклоненная операция редактирования не могла привести в результате к добавлению контента и/или форматирования в файл данных, то процесс 1200 отклонения завершается и заканчивается в модуле 1210 остановки. Если модуль 1206 определения решает, что отклоненная операция редактирования могла добавить контент и/или форматирование, то тогда, однако, операция 1208 удаления удаляет контент и/или форматирование из объединенной версии файла данных. Процесс 1200 отклонения завершается и заканчивается в модуле 1220 остановки после завершения операции 1208 удаления.
Принципы настоящего раскрытия могут быть лучше поняты, если воспользоваться примерами приложений. В первом примере приложения на фиг.15-22 представлены изменения в примере интерфейса пользователя, отображаемого приложением авторинга, по мере того как первый пользователь редактирует пользовательскую копию файла данных в сетевом режиме. Во втором примере приложения, показанном на фиг.23-29, представлены изменения в примере интерфейса пользователя, отображаемого приложением авторинга, по мере того как первый пользователь редактирует пользовательскую копию файла данных в автономном режиме.
На фиг.15 интерфейс 2000 пользователя приложения авторинга содержит окно 2010 на экране дисплея 2010, содержащее область 2012 редактирования, отображающую контент пользовательской копии файла данных, инструментальную панель 2016 команд, обеспечивающую опции команд, и строку 2018 состояния, указывающую состояние пользовательской копии файла данных. Например, строка 2018 состояния может указывать, когда обновления контента доступны для введения в пользовательскую копию файла данных. Строка 2018 состояния может также указывать, когда были идентифицированы конфликты редактирования. В показанном примере строка 2018 состояния указывает, что никакие обновления контента не доступны от основной копии файла данных.
Приложение авторинга разрешает редактирование пользовательской копии файла данных, например, используя пример процесса 300 авторинга, показанного на фиг.3. В показанном примере приложение авторинга позволяет первому пользователю свободно редактировать пользовательскую копию файла данных (смотрите операцию 304 редактирования на фиг.3) внутри области 2012 редактирования окна 2010 на экране дисплея. На фиг.15 первый пользователь редактирует первый блок данных контента, отображаемого в области 2012 редактирования. Первый пользователь устанавливает курсор 2019 на первом блоке данных, чтобы разрешить редактирование первого блока данных. Второй пользователь получает блокировку 2022 на втором блоке данных контента внутри области 2012 редактирования. Блокировка 2022, которая отображается внутри области 2012 редактирования, запрещает первому пользователю свободное редактирование второго блока данных.
На фиг.16 первый пользователь редактировал первый блок данных, чтобы изменить слово "dog" на "doe". В одном варианте осуществления изменение слова "dog" на "doe" содержит обеспечение операции редактирования, чтобы удалить слово "dog", и операции редактирования, чтобы вставить слово "doe". В другом варианте осуществления изменение слова "dog" на "doe" содержит обеспечение операции редактирования, чтобы удалить букву "g", и операции редактирования, чтобы вставить букву "e". В других вариантах осуществления могут использоваться другие операции редактирования, чтобы достигнуть одних и тех же результатов.
В одном варианте осуществления редактирование первого блока данных инициирует передачу в основную копию файла данных запроса первым пользователем блокировки первого блока данных. В другом варианте осуществления первый пользователь может обеспечить специальные команды, чтобы блокировать первый блок данных. Например, первый пользователь может выбрать первый блок данных и выбрать опцию блокировки на интерфейсе 2000 пользователя. Соответственно, блокировка 2024, принадлежащая первому пользователю, помещается вокруг первого блока данных на фиг.16. В показанном примере блокировка 2024 отличается от блокировки 2022, принадлежащей второму пользователю. Например, блокировка 2024, принадлежащая первому пользователю, отображается пунктирными линиями, а блокировка 2022, принадлежащая второму пользователю, отображается сплошными линиями. Отличие блокировок, принадлежащих первому пользователю, от блокировок, принадлежащих другим пользователям, может позволить первому пользователю знать, какой блок данных блокировал первый пользователь, не препятствуя первому пользователю редактировать блок данных. В одном варианте осуществления каждый пользователь может иметь отличающуюся блокировку (например, блокировки разных пользователей могут иметь разный цвет, затенение, форматирование и т.д.).
На фиг.16A приложение авторинга получает обновления, указывающие промежуточные изменения, сделанные в основной копии файла данных (смотрите операцию 306 получения на фиг.3). В одном варианте осуществления приложение авторинга принимает обновление после того, как истечет заданный промежуток времени. В другом варианте осуществления приложение авторинга принимает обновление в ответ на запрос синхронизации пользовательской копии с основной копией. Для целей этого примера приложения приложение авторинга, как предполагается, приняло обновление автоматически после заданного промежутка времени. Строка 2018 состояния окна 2010 дисплея была обновлена на фиг.16A, чтобы указать, что обновление было принято.
В одном варианте осуществления приложение авторинга принимает обновление метаданных от основной копии. В другом варианте осуществления приложение авторинга принимает обновление контента от основной копии. В примере приложения приложение авторинга принимает как обновление метаданных, так и обновление контента. Обновление метаданных указывает, что второй пользователь снял блокировку 2022 на втором блоке данных и получил блокировку (смотрите блокировку 2028 на фиг.17) на первом блоке данных. В этом примере второй пользователь синхронизировал запрос блокировки первого блока данных с основной копией до первого пользователя. Соответственно, второму пользователю была назначена блокировка на первом блоке данных. Обновление метаданных также указывает, что третий пользователь получил третью блокировку 2026 на третьем блоке данных. Обновление контента указывает, что второй пользователь отредактировал первый блок данных, чтобы изменить слово "lazy" на "lively".
Когда приложение авторинга принимает обновление, приложение авторинга решает, существуют ли какие-либо конфликты редактирования между пользовательской копией и принятым обновлением. Если никакие конфликты редактирования не существуют, то приложение авторинга вводит обновления метаданных автоматически (смотрите операцию 308 обновления на фиг.3). В примере приложения обновление метаданных указывает, что третий пользователь установил блокировку на третьем блоке данных. Соответственно, на фиг.16A третья блокировка 2026 показывается вокруг третьего блока данных.
В одном варианте осуществления, если обновление метаданных конфликтует с изменением пользователя, то тогда, однако, обновление метаданных не вводится, пока пользователь не попытается синхронизировать пользовательскую копию с основной копией. В примера приложения обновление метаданных указывает, что второй пользователь имеет блокировку на первом блоке данных, которая конфликтует с запросом первого пользователя блокировать первый блок данных. Соответственно, блокировка второго пользователя на первом блоке данных не вводится в пользовательскую копию автоматически. В другом варианте осуществления снятие блокировки контента не вводится, пока не будут разрешены любые из идентифицированных конфликтов редактирования. Соответственно, снятие блокировки 2022 второго пользователя на втором блоке данных не вводится в пользовательскую копию автоматически.
Если никакие конфликты редактирования не существуют, то приложение авторинга также позволяет пользователю решить, когда обновления контента должны быть введены (например, слияние) в пользовательскую копию файла данных (смотрите операцию 308 обновления на фиг.3). Например, приложение авторинга может обеспечить интерфейс введения, посредством которого первый пользователь может обеспечить команды на введение обновления. Примеры интерфейсов введения содержат, в частности, кнопки, опции меню и другие интерфейсные инструментальные средства.
Однако, если приложение авторинга идентифицирует конфликт редактирования, то приложение авторинга запрещает пользователю введение обновлений в пользовательскую копию. В одном варианте осуществления приложение авторинга не отображает интерфейс для введения. В другом варианте осуществления приложение авторинга не отображает индикацию доступности обновления. В примере приложения обновление метаданных конфликтует со сделанным пользователем изменением. Соответственно, приложение авторинга не предоставляет первому пользователю возможность ввести обновление контента.
На фиг.17 первый пользователь дает команду приложению авторинга попытаться синхронизировать пользовательскую копию файла данных с основной копией (смотрите операцию 310 синхронизации на фиг.3). В одном варианте осуществления приложение авторинга осуществляет процесс 500 синхронизации, показанный на фиг.5. Приложение авторинга получает обновления от основной копии, если процесс идет соответствующим образом (смотрите операцию 504 получения на фиг.5) и решает, являются ли какие-либо конфликты редактирования результатом обновления (смотрите операцию 506 идентификации на фиг.5). В показанном примере приложение авторинга не получает никаких новых обновлений (то есть никакие промежуточные изменения в основной копии не делались со времени последнего обновления). Приложение авторинга решает, что промежуточные изменения, представленные ранее принятым обновлением, конфликтуют со сделанными пользователем изменениями.
Приложение авторинга затем объединяет пользовательскую копию файла данных с основной копией файла данных (смотрите операцию 508 слияния на фиг.5) и отображает объединенную копию файла данных первому пользователю. В показанном примере приложение авторинга отображает объединенную версию файла данных в области 2012 редактирования на фиг.17. В целом, приложение авторинга может интегрировать пользовательскую копию и основную копию, используя любой желаемый способ слияния. Например, в одном варианте осуществления, приложение авторинга отображает весь контент, добавленный, удаленный и/или исправленный в пользовательской копии файла данных и основной копии файла данных.
В другом варианте осуществления приложение авторинга может определить версию файла данных, представленную основной копией, и может выполнить любые добавления, удаления и/или исправления контента или форматирования пользовательской копии на неблокированных блоках данных версии основной копии файла данных (то есть ввести подлежащие слиянию конфликты). Для конфликтов, не подлежащих слиянию, таких как редактирования пользователем блоков данных, заблокированных на основной копии (например, редактирования пользователем, выполненные до приема обновления метаданных, указывающего блокировку), приложение авторинга может добавить дублирующий блок данных, соседствующий с блокированным блоком данных и может исправить дублирующий блок данных, основываясь на исправлениях, сделанных в пользовательской копии (например, изменить контент, добавить блокировку контента и т.д.). Соответственно, блок данных остается блокированным и неизмененным в соответствии с состоянием основной копии. Однако изменения в блоке данных первым пользователем сохраняются в объединенной версии файла данных до тех пор, пока первый пользователь не захочет их удалить.
В примере, показанном на фиг.17, первый блок данных показан как блокированный вторым пользователем (смотрите блокировку 202) и измененный с помощью операций редактирования, выполненных вторым пользователем. Например, второе появление слова "lazy" было изменено на "lively". Дубликат первого блока данных был создан и помещен рядом с первым блоком данных. Дубликат блокируется для первого пользователя (смотрите блокировку 2024) и содержит исправления, сделанные первым пользователем до попытки синхронизации (например, второе появление слова "dog" было изменено на слово "doe"). На фиг.17 второй блок данных все еще блокирован для второго пользователя. В одном варианте осуществления приложение авторинга снимает блокировку только тогда, когда пользовательская копия синхронизирована с основной копией. В другом варианте осуществления приложение авторинга снимает блокировку, только когда блокированный блок данных полностью синхронизирован. В других вариантах осуществления приложение авторинга может указать, что блокировка была снята.
Поскольку приложение авторинга идентифицировало конфликты редактирования, приложение авторинга не продолжает сохранение в основной копии (смотрите первый модуль 510 определения на фиг.5). Скорее, приложение авторинга отображает одно или более предупреждающих сообщений, чтобы уведомить первого пользователя о существовании конфликтов редактирования (смотрите операцию 512 сигнализации тревоги на фиг.5). Например, на фиг.17 предупреждение 2017 отображается в окне 2010 на экране дисплея, чтобы сообщить первому пользователю о наличии конфликтов редактирования. В показанном примере строка 2018 состояния также была обновлена, чтобы указать наличие конфликтов редактирования. В других вариантах осуществления строка 2018 состояния может быть обновлена, чтобы указать количество обновлений, которые еще не были введены, количество идентифицированных конфликтов редактирования или другую подобную информацию. В еще одних других вариантах осуществления уведомление о существовании конфликтов редактирования могут предоставить первому пользователю другие типы предупреждений или указаний.
Приложение авторинга также представляет на фиг.17 первому пользователю интерфейс 2015 переключения, дающий пользователю возможность сделать выбор между продолжением редактирования файла данных, не рассматривая конфликты, и рассмотрением конфликтов редактирования (смотрите второй модуль 514 определения). Первый пользователь может захотеть продолжать редактирование файла данных, не делая просмотра конфликтов редактирования (смотрите операцию 516 продолжения на фиг.5). Первый пользователь может также захотеть выбрать интерфейс 2015 переключения, чтобы просмотреть конфликты редактирования (смотрите операцию 518 просмотра на фиг.5). В одном варианте осуществления выбор интерфейса 2015 переключения также активирует итоговое окно 2030. Первый пользователь может продолжить редактирование объединенной версии файла данных, независимо от того, захочет ли первый пользователь просматривать конфликты редактирования.
Один процесс примера, посредством которого приложение авторинга может осуществлять операцию 518 просмотра на фиг.5, содержит процесс 700 просмотра на фиг.7. Когда пользователь выбирает интерфейс 2015 переключения (фиг.17), приложение авторинга предоставляет пользователю конфликты редактирования (смотрите операцию 704 отображения на фиг.7). Например, в одном варианте осуществления, выбор интерфейса 2015 переключения делит окно 2010 на экране дисплея между областью 2012 редактирования 2012 и итоговым окном 2030, в котором перечисляются конфликты редактирования (смотрите список 2034 на фиг.18), и может быть отображена итоговая информация о конфликтах (смотрите итоговую область 2032 на фиг.18).
В целом, область 2012 редактирования отображает объединенную версию файла данных и позволяет пользователю свободно редактировать объединенную версию. В некоторых вариантах осуществления объединенная версия файла данных, отображенная в области 2012 редактирования, снабжается комментариями, чтобы указать, какие части контента находятся в конфликте. Например, в одном варианте осуществления, объединенная версия файла данных снабжается комментариями, чтобы указать, является ли конфликтующий контент результатом вставок (например, из-за подчеркивания или другого форматирования, цвета текста, выделения или других подобных указаний) или удалений (например, посредством зачеркивания или другого форматирования, цвета текста, выделения или других подобных указаний).
В показанном примере исправления в контенте показываются как последовательность удалений и вставок. В других вариантах осуществления, однако, исправления в контенте могут быть отчетливо прокомментированы. В других вариантах осуществления метаданные (например, блокировки) также могут комментироваться, чтобы указать, какие части метаданных конфликтуют. В примере, показанном на фиг.18, первый блок данных не содержит никаких конфликтов редактирования, так как первый блок данных блокирован на сервере для второго пользователя. Соответственно, первый блок данных не снабжается комментариями. Дублирующий блок данных, показанный на фиг.18 как блокированный для первого пользователя, подчеркнут, чтобы указать, что блок данных был вставлен в файл данных.
Конфликтующие операции редактирования также отображаются в итоговом окне 2030. Итоговая область 2032 интерфейса разрешения конфликтов указывает количество конфликтующих операций редактирования, содержащихся внутри объединенной версии файла данных. В показанном примере итоговая область 2032 указывает, что была идентифицирована одна конфликтующая операция редактирования. Перечень 2034 в итоговом окне 2030 отображает конфликтующий контент. В одном варианте осуществления перечень 2034 отображает конфликтующий контент отдельно от неконфликтующего контента. В другом варианте осуществления перечень 2034 комментирует конфликтующий контент, чтобы указать, был ли контент вставлен и/или удален (например, смотрите указания 2036 на фиг.18). В другом варианте осуществления перечень 2034 комментирует конфликтующий контент, чтобы указать первоисточник (например, пользовательская копия или основная копия) конфликтующего контента (например, смотрите указания 2038 на фиг.18).
Первый пользователь приложения авторинга может взаимодействовать с областью редактирования 2012 или с итоговым окном 2030 (фиг.18), чтобы обеспечить команды (смотрите операцию 706 получения на фиг.7) на возвращение к редактированию файла данных или на разрешение любого из отображаемых конфликтов редактирования (смотрите первый модуль 708 определения на фиг.7). Например, в одном варианте осуществления пользователь может снова выбрать интерфейс 2015 переключения, чтобы скрыть конфликты редактирования. Выбор сокрытия конфликтов удаляет комментарии из конфликтов редактирования. В одном варианте осуществления выбор сокрытия конфликтов редактирования будет заставлять отображаться интерфейс 2000 пользователя, показанный на фиг.17. Процесс 700 синхронизации может закончиться (смотрите модуль 714 остановки на фиг.7), приложение авторинга может решить, что, по меньшей мере, один конфликт редактирования остался неразрешенным (смотрите первый модуль 510 определения на фиг.5), и первый пользователь снова может быть способен выбирать между свободным редактированием файла данных и разрешением конфликтов.
Альтернативно, первый пользователь может обеспечить команды принятия или отклонения конфликтующего контента или его части. В одном варианте осуществления первый пользователь может выбрать контент, отображаемый внутри области 2012 редактирования окна 2010 на экране дисплея и может выбрать опцию на интерфейсе разрешения конфликтов, чтобы обеспечить команды для разрешения конфликтов операции редактирования. Например, первый пользователь может выбрать контент, на котором должны обеспечиваться команды, и может выбрать опцию меню из ссылки 2040 на конфликты (смотрите фиг.19). В других вариантах осуществления первый пользователь может обеспечить команду по разрешению конфликтов, используя другой тип инструмента интерфейса разрешения конфликтов.
В примере, показанном на фиг.19, первый пользователь выбирает (смотрите указатели 2013 выбора) первую часть конфликтующего контента и выбирает опцию отклонения в меню 2040 разрешения конфликтов, используя для этого курсор 2019. Соответственно, приложение авторинга решает, что пользователь не обеспечил команды возвращения к редактированию (смотрите первый модуль 708 определения на фиг.7) и выполняет команду разрешения конфликтов (смотрите операцию 710 внесения на фиг.7). В других вариантах осуществления первый пользователь может выбрать все или другую часть конфликтующего контента.
Одним из примеров процесса, посредством которого приложение авторинга может выполнить отклонение выбранной части конфликтующего контента, является процесс 1200 отклонения, показанный на фиг.14. Приложение авторинга удаляет комментарии из выбранного конфликтующего контента в области 2012 редактирования окна 2010 на экране дисплея (смотрите операцию 1204 чистки на фиг.14). Приложение авторинга также определяет (смотрите модуль 1206 определения на фиг.14) отклоненную операцию редактирования, приведшую в результате к добавлению выбранного конфликтующего контента в файл данных. Соответственно, приложение авторинга удаляет выбранный конфликтующий контент из объединенной версии файла данных (смотрите операцию 1208 удаления на фиг.14). Если операция редактирования привела в результате к удалению в контенте, то процесс 1200 отклонения заканчивается без удаления выбранного конфликтующего контента из файла данных.
Возвращаясь к процессу 700 просмотра на фиг.7, приложение авторинга решает, что, по меньшей мере, один из идентифицированных конфликтов редактирования остается неразрешенным (смотрите второй модуль 712 определения на фиг.7), запуская, таким образом, вновь процесс 700 просмотра. Запуская вновь процесс 700 просмотра, первый пользователь может захотеть продолжить разрешение конфликтов редактирования (например, используя процесс 700 просмотра на фиг.7), в то время как интерфейс пользователя конфигурирован в режиме разрешения конфликтов. Альтернативно, первый пользователь может захотеть скрыть конфликты редактирования в любое время, выбирая интерфейс 2015 переключения.
На фиг.20 показан интерфейс 2000 пользователя после того, как первый пользователь отклонил выбранный конфликтующий контент (смотрите операцию 704 отображения на фиг.7). Отклоненный конфликтующий контент был удален из области 2012 редактирования. Дополнительно, приложение авторинга обновляет итоговое окно 2030, чтобы отразить разрешение конфликтов в конфликтующем контенте, удаляя отклоненный контент из перечня 2034 внутри итогового окна 2030. Поскольку конфликтующий контент не был разрешен полностью, итоговая область 2032 остается неизменной.
Продолжая процесс 700 просмотра, приложение авторинга получает другой набор команд от первого пользователя (смотрите операцию 706 получения на фиг.7). В этом примере приложения приложении авторинга получает команды на разрешение остающегося конфликтующего контента. Например, на фиг.21 показан другой интерфейс 2050 разрешения конфликтов, с помощью которого первый пользователь может предоставить команды разрешения конфликтов в приложении авторинга. Интерфейсом 2050 разрешения конфликтов является меню, перечисляющее опции разрешения конфликтов (например, принять, отклонить и т.д.). Меню расположено по соседству с выбранным конфликтующим контентом. В одном варианте осуществления приложение авторинга отображает интерфейс 2050 разрешения конфликтов, когда пользователь выбирает конфликтующие редактирования из перечня 2034 внутри итогового окна 2030. В другом варианте осуществления приложение авторинга может отображать интерфейс 2050 разрешения конфликтов внутри области 2012 редактирования, когда конфликтующий контент выбран внутри области 2012 редактирования. В других вариантах осуществления, однако, первый пользователь может использовать любой желаемый тип интерфейса разрешения конфликтов, чтобы обеспечить команды разрешения конфликтов для приложения авторинга.
На фиг.21 пользователь выбирает (например, с помощью правого щелчка мыши, левого щелчка мыши, перемещения или иначе выбирает через другое устройство ввода данных) остающийся конфликтующим контент внутри перечня 2034 итогового окна 2030 и выбирает опцию принятия на интерфейсе 2050 разрешения конфликтов (например, используя курсор 2019). Соответственно, приложение авторинга решает, что первый пользователь не предоставил команды, чтобы скрыть конфликты редактирования и вернуться к редактированию (смотрите модуль 708 определения на фиг.7), и осуществляет команду принятия (смотрите операцию 710 внесения на фиг.7).
Один из примеров процесса, посредством которого приложение авторинга может принять выбранный конфликтующий контент, содержит процесс 1100 принятия, показанный на фиг.13. Приложение авторинга удаляет любые комментарии из выбранного конфликтующего контента (смотрите операцию 1104 чистки на фиг.13). Приложение авторинга решает, что выбранный конфликтующий контент был вставлен в файл данных (смотрите модуль 1106 определения на фиг.13). Соответственно, процесс 1100 принятия завершается и заканчивается (смотрите модуль 1110 остановки на фиг.13). Если бы приложение авторинга решило, что конфликтующий контент был удален из файла данных, то приложение авторинга могло бы удалить конфликтующий контент из файла данных (смотрите операцию 1108 удаления на фиг.13).
Возвращаясь к процессу 700 просмотра на фиг.7, приложение авторинга решает, что больше никакие конфликты редактирования не остаются неразрешенными (смотрите второй модуль 712 определения). Соответственно, процесс 700 просмотра завершается и заканчивается (смотрите модуль 714 остановки на фиг.7), завершая, таким образом, операцию 514 просмотра процесса 500 синхронизации на фиг.5. Процесс 500 синхронизации переходит обратно к первому модулю 510 определения, в котором приложение авторинга определяет, остались ли неразрешенными какие-либо идентифицированные конфликты редактирования.
Поскольку первый пользователь разрешил все идентифицированные конфликты редактирования в этом примере приложения, приложение авторинга решает, что никакие конфликты редактирования не остаются неразрешенными. Соответственно, приложение авторинга сверяется с основной копией, чтобы определить, доступны ли дополнительные обновления (смотрите второй модуль 520 определения на фиг.5). Если дополнительные обновления стали доступными, то процесс 500 синхронизации циклически возвращается обратно, чтобы получить и объединить новые обновления. Новое обновление содержит любые промежуточные изменения, сделанные с того времени, когда было получено предыдущее обновление. Любые конфликты, вытекающие из нового обновления, разрешаются так, как обсуждалось выше. Этот процесс получения обновлений и разрешения любых идентифицированных конфликтов повторяется до тех пор, пока первый пользователь не разрешит все конфликты редактирования между пользовательской копией файла данных и текущим состоянием основной копии файла данных.
Когда приложение авторинга решает, что никакие конфликты редактирования не существуют (смотрите первый модуль 510 определения на фиг.5) и никакие новые обновления не предлагаются (смотрите второй модуль 520 определения на фиг.5), приложение авторинга посылает обновление от пользовательской копии к основной копии (смотрите операцию 522 сохранения на фиг.5), чтобы завершить синхронизацию пользовательской и основной копий. Например, в одном варианте осуществления, приложение авторинга может послать пользовательскую копию полностью на запоминающее устройство с командами на перезапись основной копии. В другом варианте осуществления приложение авторинга может послать обновление с изменениями, указывающее, чем пользовательская копия отличается от основной копии.
Приложение авторинга посылает сигнал предупреждения первому пользователю, когда приложение авторинга успешно выгружает обновление в основную копию (смотрите операцию 524 индикации на фиг.5). Например, на фиг.22 строка состояния 2018 была обновлена, чтобы указать, что обновление было успешно передано. В некоторых вариантах осуществления приложение авторинга также может отображать окно 2060 предупреждений, указывающее успешность загрузки. В одном варианте осуществления окно 2060 предупреждений может предоставить дальнейшее объяснение, например, указать последствия загрузки. В примере, показанном на фиг.22, итоговое окно 2030 удаляется из интерфейса пользователя, так как никакие конфликты редактирования не идентифицированы. В других вариантах осуществления, однако, итоговое окно 2030 может оставаться, пока не будет переключено первым пользователем.
Второй пример приложения, в котором первый пользователь редактирует файл данных автономно, предоставлен на фиг.23-29. На фиг.23 интерфейс 2200 пользователя, принадлежащий приложению авторинга, содержит окно 2210 на экране дисплея, содержащее область 2212 редактирования, отображающую контент пользовательской копии файла данных, инструментальную панель 2216 с командами, обеспечивающую опции команд, и строку 2218 состояния, указывающую состояние пользовательской копии файла данных. Например, интерфейс 2200 пользователя может быть таким же, как интерфейс 2000 пользователя на фиг.15.
В показанном примере строка 2218 состояния указывает, что первый пользователь редактирует пользовательскую копию файла в автономном режиме (то есть не подключен средствами связи к запоминающему устройству, сохраняющему основную копию файла данных). Другой пользователь имеет блокировку 2222 на первом блоке данных внутри области 2212 редактирования. Соответственно, приложение авторинга запрещает первому пользователю редактирование первого блока данных.
Приложение авторинга позволяет редактирование пользовательской копии файла данных, используя, например, пример процесса 300 авторинга, показанный на фиг.3. В показанном примере приложение авторинга позволяет первому пользователю свободно редактировать пользовательскую копию файла данных (смотрите операцию 304 редактирования на фиг.3) внутри области 2012 редактирования окна 2010 на экране дисплея. На фиг.24 показаны изменения при редактировании, сделанные первым пользователем в пользовательской копии файла данных. В частности, первый пользователь добавил два предложения в третий блок данных. В других вариантах осуществления, однако, первый пользователь, возможно, добавил, исправил и/или удалил любой контент или метаданные внутри пользовательской копии файла данных.
Поскольку первый пользователь редактирует пользовательскую копию в автономном режиме, приложение авторинга не может синхронизировать запрос блокировки для третьего блока данных. В одном варианте осуществления приложение авторинга хранит запрос блокировки до тех пор, пока пользователь не зарегистрируется в сетевом режиме. В таком варианте осуществления приложение авторинга может отображать блокировку вокруг третьего блока данных. В другом варианте осуществления приложение авторинга не пытается блокировать третий блок данных. В одном варианте осуществления приложение авторинга предупреждает первого пользователя, что запрос блокировки не может быть синхронизирован и, соответственно, что редактирование блока данных может привести к конфликтам редактирования. Для целей этого примера приложения приложение авторинга сохраняет запрос блокировки для более поздней синхронизации с основной копией.
На фиг.25 приложение авторинга получает обновления, указывающие промежуточные изменения, сделанные в основной копии файла данных (смотрите операцию 306 получения на фиг.3). В одном варианте осуществления приложение авторинга принимает обновление после того, как истечет заданный промежуток времени. В другом варианте осуществления приложение авторинга принимает обновление в ответ на запрос синхронизации пользовательской копии с основной копией. Для целей примера настоящего приложения приложение авторинга, как предполагается, приняло обновление автоматически после заданного промежутка времени. Строка 2218 состояния окна 2210 на экране дисплея была обновлена на фиг.25, чтобы указать, что обновление было получено.
Когда приложение авторинга принимает обновление, приложение авторинга определяет, существуют ли какие-либо конфликты редактирования между пользовательской копией и полученным обновлением. Если никакие конфликты редактирования не существуют, то приложение авторинга вводит обновления метаданных автоматически (смотрите операцию 308 обновления на фиг.3). Для целей настоящего примера приложения приложение авторинга, как предполагается, приняло обновление контента, указывающее изменения, сделанные в третьем блоке данных, который конфликтует с запросом блокировки первого пользователя для третьего блока данных. Однако обновление не указывает блокировку для третьего блока данных (например, для другого пользователя третий блок данных, возможно, был заблокирован при проведении редактирования и впоследствии блокировка была снята). Соответственно, приложение авторинга не предоставляет первому пользователю интерфейс введения или как-либо иначе запрещает введение обновления.
На фиг.26 первый пользователь подключается к запоминающему устройству (то есть регистрируется в сетевом режиме) и подает команду приложению авторинга, чтобы попытаться синхронизировать пользовательскую копию файла данных с основной копией (смотрите операцию 310 синхронизации на фиг.3). В одном варианте осуществления приложение авторинга осуществляет процесс 500 синхронизации, показанный на фиг.5. Приложение авторинга получает обновления от основной копии, если они являются соответствующими (смотрите операцию 504 получения), и решает, являются ли какие-либо конфликты редактирования результатом обновления (смотрите операцию 506 идентификации). В показанном примере приложение авторинга не получает никакие новые обновления (например, в основной копии со времени последнего обновления не были сделаны никакие новые обновления). Приложение авторинга решает, что промежуточные изменения, представленные ранее полученным обновлением (например, контент, добавленный к третьему блоку данных), конфликтуют со сделанными пользователем изменениями (например, запрос блокировки для третьего блока данных).
Приложение авторинга затем объединяет пользовательскую копию файла данных с основной копией файла данных (смотрите операцию 508 слияния на фиг.5) и отображает объединенную копию файла данных первому пользователю. В показанном примере приложение авторинга отображает объединенную версию файла данных в области 2212 редактирования на фиг.26. Как отмечено выше, приложение авторинга может интегрировать пользовательскую и основную копии, используя любой желаемый способ объединения. В показанном примере приложение авторинга добавило новый контент из основной копии в первый и третий блоки данных пользовательской копии.
Первый набор нового контента, "TBD", который был добавлен к первому блоку данных, не приводит к конфликту редактирования. Первый пользователь не редактировал первый блок данных. Второй набор нового контента, "Jump, fox, jump!", который был добавлен к третьему блоку данных, приводит в результате к конфликту редактирования, так как первый пользователь попытался блокировать третий блок данных. Другой пользователь имел возможность редактировать третий блок данных, поскольку запрос блокировки первого пользователя до редактирования еще не был синхронизирован с основной копией. Однако, поскольку обновление не указывает, что третий блок данных блокирован другим пользователем, первым пользователем сохраняется блокировка вокруг третьего блока данных.
Поскольку приложение авторинга идентифицировало конфликт редактирования, приложение авторинга не продолжает сохранение в основной копии (смотрите первый модуль 510 определения на фиг.5). Скорее, приложение авторинга отображает одно или более предупреждающих сообщений, чтобы уведомить первого пользователя о существовании конфликтов редактирования (смотрите операцию 512 сигнализации тревоги на фиг.5). Например, на фиг.26 тревога 2217 отображается в окне 2210 на экране дисплея, чтобы сообщить первому пользователю о присутствии конфликтов редактирования. В показанном примере строка 2218 состояния также была обновлена, чтобы указать на присутствие конфликтов редактирования. В других вариантах осуществления строка 2218 состояния может быть обновлена, чтобы указать количество обновлений, которые еще не были введены, количество идентифицированных конфликтов редактирования или другую подобную информацию. В еще одних других вариантах осуществления другие типы предупреждений или указаний могут обеспечивать первому пользователю уведомление о существовании конфликтов редактирования.
Приложение авторинга также представляет первому пользователю на фиг.26 интерфейс 2215 переключения, дающий возможность пользователю выбирать между продолжением редактирования файла данных без просмотра конфликтов редактирования и исправлением конфликтов редактирования (смотрите второй модуль 514 определения на фиг.5). Первый пользователь может захотеть продолжить редактирование файла данных, не просматривая конфликты редактирования (смотрите операцию 516 продолжения на фиг.5). Первый пользователь также может захотеть выбрать интерфейс 2215 переключения (фиг.26) для выявления конфликтов редактирования (смотрите операцию 518 просмотра на фиг.5). В одном варианте осуществления выбор интерфейса 2215 переключения также активирует итоговое окно 2230 (смотрите фиг.27). Первый пользователь может продолжить редактирование объединенной версии файла данных независимо от того, хочет ли первый пользователь просматривать конфликты редактирования.
Один из примеров процесса, посредством которого приложение авторинга может осуществлять операцию 518 просмотра на фиг.5, содержит процесс 700 просмотра, показанный на фиг.7. Когда пользователь выбирает интерфейс 2215 переключения, приложение авторинга представляет пользователю конфликты редактирования (смотрите операцию 704 отображения на фиг.7). Например, в одном варианте осуществления, выбор интерфейса 2215 переключения разделяет окно 2210 на экране дисплея между областью 2212 редактирования и итоговым окном 2230, в котором перечислены конфликты редактирования (смотрите перечень 2234) и может отображаться итоговая информация о конфликтах (смотрите итоговую область 2232).
В целом, область 2212 редактирования отображает объединенную версию файла данных и позволяет пользователю свободно редактировать объединенную версию. В некоторых вариантах осуществления объединенная версия файла данных, отображаемая в области 2212 редактирования, снабжается комментариями, чтобы указать, какие части контента находятся в конфликте. Например, в одном варианте осуществления объединенная версия файла данных снабжается комментариями, чтобы указать, является ли конфликтующий контент результатом вставок (например, посредством подчеркивания или другого форматирования, цвета шрифта, выделения, непрозрачности или других подобных указаний) или удаления (например, посредством зачеркивания или другого форматирования, цвета шрифта, выделения, непрозрачности или других таких указаний).
В показанном примере первый блок данных не содержит каких-либо конфликтов редактирования, так как первый блок данных блокирован на сервере для второго пользователя. Соответственно, первый блок данных не снабжается комментариями. Второй блок данных также не содержит каких-либо конфликтов редактирования, и поэтому второй блок данных не содержит комментариев. Некоторый контент в пределах третьего блока данных, который показан как блокированный для первого пользователя, подчеркивается, чтобы указать, что контент был вставлен в блок данных.
В одном варианте осуществления комментарий приводится только для конфликтующего контента, происходящего из пользовательской копии. Предпочтительно, только комментируемые, создаваемые пользователем конфликты позволяют пользователю понять состояние основной копии файла данных и различий между основной копией и пользовательской копией. В других вариантах осуществления, однако, конфликтующий контент, происходящий из основной копии, может быть комментирован так же как или вместо конфликтующего контента из пользовательской копии.
Операции редактирования конфликта также отображаются в итоговом окне 2230. Итоговая область 2232 интерфейса разрешения конфликтов указывает количество конфликтующих операций редактирования, содержащихся внутри объединенной версии файла данных. В показанном примере итоговая область 2232 указывает одну идентифицированную конфликтующую операцию редактирования. Перечень 2234 в итоговом окне 2230 отображает конфликтующий контент. В одном варианте осуществления перечень 2234 отображает конфликтующий контент отдельно от неконфликтующего контента. В другом варианте осуществления перечень 2234 комментирует конфликтующий контент, чтобы указать, был ли контент вставлен и/или удален (например, смотрите указатели 2236 на фиг.27). В другом варианте осуществления перечень 2234 комментирует конфликтующий контент, чтобы указать первоисточник (например, пользовательская копия или основная копия) конфликтующего контента (например, смотрите указания 2238 на фиг.27).
Первый пользователь приложения авторинга может взаимодействовать с интерфейсом разрешения конфликтов (например, смотрите интерфейс 2240 разрешения конфликтов на фиг.27), чтобы обеспечить команды (смотрите операцию 706 получения на фиг.7) для того, чтобы возвратиться к редактированию файла данных, или для того, чтобы разрешить любой из отображаемых конфликтов редактирования (смотрите первый модуль 708 определения 708 на фиг.7). Например, в одном варианте осуществления, пользователь может снова выбрать интерфейс 2215 переключения, чтобы скрыть конфликты редактирования, как обсуждалось выше.
Альтернативно, первый пользователь может обеспечить команды, чтобы принять или отклонить конфликтующий контент или его части. В одном варианте осуществления первый пользователь может выбрать контент, отображаемый внутри области 2012 редактирования окна 2010 на экране дисплея, и может выбрать опцию на интерфейсе 2240 разрешения конфликтов, чтобы обеспечить команды для разрешения конфликта операции редактирования. Например, первый пользователь может выбрать контент, для которого должны быть предоставлены команды, и может выбрать кнопку 2242 принятия или кнопку 2244 отклонения на примере интерфейса 2040 разрешения конфликтов (смотрите фиг.27). Пример интерфейса 2040 разрешения конфликтов может также содержать кнопку 2246 "следующий" и кнопку 2248 "предыдущий" для определения последовательности между конфликтами. В других вариантах осуществления первый пользователь может обеспечить команду для разрешения конфликтов, используя другой тип инструмента интерфейса разрешения конфликтов.
В примере, показанном на фиг.28, первый пользователь выбирает первую часть конфликтующего контента (смотрите указания 2213 по выбору в итоговом окне 2230) и с помощью курсора 2219 выбирает кнопку 2242 принятия на интерфейсе 2040 разрешения конфликтов. В других вариантах осуществления, однако, первый пользователь может обеспечивать команду через любой желаемый интерфейс разрешения конфликтов. Соответственно, приложение авторинга решает, что пользователь не обеспечил команды для возвращения к редактированию (смотрите первый модуль 708 определения на фиг.7) и выполняет команду разрешения конфликтов (смотрите операцию 710 внесения на фиг.7).
Один из примеров процесса, посредством которого приложение авторинга может принять выбранный конфликтующий контент, содержит процесс 1100 приема, показанный на фиг.13. Приложение авторинга удаляет любые комментарии из выбранного конфликтующего контента (смотрите операцию 1104 чистки на фиг.13). Приложение авторинга решает, что выбранный конфликтующий контент был вставлен в файл данных (смотрите модуль 1106 определения на фиг.13). Соответственно, процесс 1100 приема завершается и заканчивается (смотрите модуль 1110 остановки на фиг.13). Если приложение авторинга решило, что конфликтующий контент был удален из файла данных, то приложение авторинга может удалить конфликтующий контент из файла данных (смотрите операцию 1108 удаления на фиг.13).
Возвращаясь к процессу 700 просмотра на фиг.7, приложение авторинга решает, что больше не остается никаких неразрешенных конфликтов редактирования (смотрите второй модуль 712 определения на фиг.7). Соответственно, процесс 700 просмотра завершается и заканчивается (смотрите модуль 714 остановки на фиг.7), завершая, таким образом, операцию 514 просмотра процесса 500 синхронизации на фиг.5. Процесс 500 синхронизации переходит обратно к первому модулю 510 определения (фиг.5), в котором приложение авторинга определяет, что не осталось никаких неразрешенных конфликтов редактирования. Приложение авторинга также решает, что от основной копии не получены никакие дополнительные обновления (смотрите второй модуль 520 определения на фиг.5) и, соответственно, посылает обновление от пользовательской копии к основной копии (смотрите операцию 522 сохранения на фиг.5), чтобы завершить синхронизацию пользовательской и основной копий.
Приложение авторинга предупреждает первого пользователя, когда приложение авторинга успешно загружает обновление в основную копию (смотрите операцию 524 индикации на фиг.5). Например, на фиг.29 строка состояния 2218 была обновлена, чтобы указать, что обновление было успешно передано. В некоторых вариантах осуществления приложение авторинга может также отображать окно 2260 предупреждений, указывающее на успех загрузки. В одном варианте осуществления окно 2260 предупреждений может предоставить дополнительное объяснение, например, указание последствий успешной загрузки. В примере, показанном на фиг.29, итоговое окно 2230 удаляется из интерфейса 2200 пользователя, поскольку не остается никаких неразрешенных идентифицированных конфликтов редактирования. В других вариантах осуществления, однако, итоговое окно 2230 может оставаться до тех пор, пока не будет деактивировано первым пользователем (например, через интерфейс 2215 переключения на фиг.27 и 28).
Варианты осуществления раскрытия могут быть осуществлены как вычислительный процесс (способ), вычислительная система или как производственное изделие, такое как компьютерный программный продукт или считываемые компьютером носители. Процессы (программы) могут быть осуществлены любым числом способов, в том числе с помощью структур, описанных в настоящем документе. Одним из таких способов являются машинные операции устройств типа, описанного в настоящем документе. Другой вариант способа состоит в одной или более индивидуальных операциях способов, которые должны выполняться на вычислительном устройстве в сочетании с одним или более операторами-людьми, выполняющими некоторые из операций. Эти операторы не должны взаимодействовать друг с другом, а каждый может работать только с машиной, выполняющей часть программы.
Компьютерный программный продукт может быть компьютерным носителем данных, пригодным для считывания вычислительной системой и кодирующим компьютерную программу командами для выполнения вычислительного процесса. Компьютерный программный продукт может также быть распространяемым сигналом на носителе, считываемом вычислительной системой и кодирующим компьютерную программу командами для выполнения вычислительного процесса. Термин "считываемый компьютером носитель", как он используется здесь, содержит как носитель для хранения, так и носитель для передачи данных.
Специалисты в данной области техники должны понимать, что на практике раскрытие может быть осуществлено с помощью других конфигураций вычислительной системы, в том числе карманными устройствами, мультипроцессорными системами, основанной на микропроцессорах или программируемой бытовой электроникой, миникомпьютерами, универсальными компьютерами и т.п. Раскрытие может также быть осуществлено на практике в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, связанными через систему связи. В распределенной вычислительной среде программные модули могут быть расположены как в местных, так и в удаленных запоминающих устройствах. В целом, программные модули содержат подпрограммы, программы, компоненты, структуры данных и другие типы структур, выполняющие частные задачи или реализующие частные абстрактные типы данных.