Способ управления множеством состояний файла для дублированных файлов
Иллюстрации
Показать всеИзобретение относится к области обработки файлов, в частности раскрывает сервер с видоизмененной операцией открытия файла. Технический результат, заключающийся в обеспечении усовершенствованного разрешения конфликтных ситуаций для пользователя, достигается за счет использования трех копий дублируемого файла. Открытие файла пользователем с использованием видоизмененной операцией открытия обеспечивает первоначальное открытие файла без захвата файла. Когда пользователь указывает (явно или неявно), что он предпринимает попытку или намеревается открыть файл, то в этом случае может быть осуществлен захват файла для его редактирования. Таким образом, когда пользователь выдает запрос на получение файла, то заданным по умолчанию действием является такое открытие файла, при котором доступ к этому файлу для других пользователей не запрещен. Затем, если пользователь указывает, что он намеревается выполнить редактирование, то осуществляют захват этого файла. 3 н. и 22 з.п. ф-лы, 5 ил.
Реферат
РОДСТВЕННЫЕ ЗАЯВКИ
Настоящая заявка на патент является родственной по отношению к находящейся в процессе одновременного рассмотрения патентной заявке США №... от......... года, зарегистрированной под номером MSFT-1651 в досье патентного поверенного и имеющей название "Managing File Replication in Applications" ("Управление дублированием файлов в приложениях"), права на которую принадлежат настоящему заявителю.
ОБЛАСТЬ ТЕХНИКИ
Это изобретение относится к области техники управления документами, в частности к способу и к системе управления множеством состояний файла при использовании файла, скопированного с сервера.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Обычной практикой в сетевой компьютерной среде является работа пользователя компьютера над документом совместно с другим пользователем посредством сети. Такой сетью может являться локальная сеть (ЛС), глобальная сеть (ГС), сеть Интернет и т.п. При такой совместной работе каждый пользователь может создавать и редактировать электронный файл с использованием прикладной программы, например прикладной программы общего назначения, специализированной программы, предназначенной для файла, являющегося объектом совместной работы, и т.п.
Совместная работа может быть обеспечена путем хранения главной версии электронного файла в месте, доступном для всех пользователей, выполняющих совместную работу с файлом. В обычной сетевой компьютерной среде может существовать серверный компьютер и один или большее количество компьютеров пользователей. Сервер может быть доступен для каждого компьютера пользователя и поэтому может сохранять и управлять главной версией файла, над которым совместно работают пользователи.
При совместной работе с электронным файлом пользователь осуществляет доступ к файлу, хранящемуся в сервере. Затем пользователь может работать с этим файлом путем изменения файла любым из способов, предоставляемых пользователю прикладной программой. Например, если прикладная программа является программой обработки текстов (текстовым процессором), программой работы с электронными таблицами, базами данных и/или т.п., то эта прикладная программа может предоставлять средство выполнения, например, следующих задач: дополнения, редактирования, копирования и/или удаления файла. По завершении любых изменений пользователь может сохранить изменения в виде версии файла, запомненного в сервере, в том случае, если пользователь желает сохранить эти изменения файла и имеет необходимые для этого полномочия.
Несмотря на то что централизованное хранение файлов является удобным для обеспечения совместной работы, его недостатком является необходимость обеспечения доступа к серверу. Для обеспечения доступа к серверной копии файла необходимо, чтобы пользователь был подключен к этому серверу. Для решения этой проблемы используют средства дублирования. Эти средства позволяют пользователю иметь локальную копию файла в сервере. Наличие этой локальной копии позволяет пользователю работать с файлом или просматривать его даже в том случае, когда доступ к серверной копии невозможен. Средство дублирования управляет копированием данных о состоянии файла в сервере в локальный компьютер пользователя, позволяя пользователю осуществлять автономный доступ, пытаясь сохранить при этом непротиворечивость между серверной копией и локальной копией.
Однако это техническое решение имеет недостатки, и обеспечение такой непротиворечивости является затруднительным или невозможным при использовании существующих средств дублирования. Версия файла в серверном компьютере может быть изменена в тот момент времени, когда пользователь не подключен к нему. Например, версией файла, хранящегося в сервере, может являться версия A. Средство дублирования копирует эту версию A в компьютер пользователя. Пользователь редактирует файл в "автономном" режиме (то есть, когда он не подключен к серверу), создавая версию B. Тем временем, второй пользователь редактирует серверную копию файла, создавая версию C. Когда пользователь снова устанавливает соединение с сервером, то этот пользователь будет иметь доступ к текущей версии (B) пользователя и к серверной версии (C). Существующие в настоящее время средства дублирования способны осуществлять только копирование версии пользователя поверх серверной версии, в этом случае изменения, внесенные вторым пользователем, будут потеряны, или копирование серверной версии поверх версии пользователя. Пользователь не имеет доступа к какой-либо информации об изменениях по сравнению с версией A. Если пользователь синхронизируется путем сохранения версии C и отклонения изменений, то версия В больше не будет доступной для пользователя.
Наличие этих недостатков обуславливает потребность в создании усовершенствованного способа управления копиями файлов, полученными с сервера.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Реализован способ получения дублированных копий серверных файлов, в котором осуществляют запоминание трех копий дублируемого файла. Наличие этих трех файлов позволяет обеспечить усовершенствованное разрешение конфликтных ситуаций для пользователя.
Теневой файл представляет собой копию последней заведомо пригодной версии файла в сервере. При первоначальном копировании файла с сервера создают дополнительную копию в виде теневого файла. Теневой файл передают в локальный компьютер для улучшения его функционирования при синхронизации и управлении разрешением конфликтных ситуаций, а также для обеспечения работы в автономном режиме. Обновление теневого файла посредством серверной копии осуществляют всякий раз, когда существует соединение с сервером и произошло изменение серверной копии по сравнению с версией, содержащейся в теневой копии. Обновление этого файла осуществляют только при наличии этих условий.
Локальная копия является рабочей копией для пользователя. В локальной копии сохранены любые изменения, внесенные пользователем в файл. Эта локальная копия используется для обновления данных в сервере (в том случае, когда внесенные пользователем изменения должны быть введены в сервер) или для распознавания конфликтных ситуаций (при изменении как пользовательской, так и серверной версий).
Также сохраняется файл возврата в предыдущее состояние. Этот файл возврата в предыдущее состояние представляет собой копию, выполненную с локальной копии в случае изменения этой локальной копии (например, при разрешении конфликтных ситуаций или при копировании серверной версии в виде локальной копии). Эта копия обеспечивает возможность возврата пользователя к последней известной копии, просмотренной пользователем.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Описанная выше сущность изобретения, а также приведенное ниже подробное описание предпочтительных вариантов его осуществления станут лучше понятными при их прочтении совместно с приложенными чертежами. Для иллюстрации изобретения на чертежах показаны примеры вариантов осуществления настоящего изобретения; однако изобретение не ограничено конкретными раскрытыми здесь способами и средствами их осуществления. На чертежах изображено следующее:
Фиг.1 - блок-схема примера вычислительной среды, в которой могут быть реализованы технические решения, предложенные в настоящем изобретении;
Фиг.2 - функциональная схема, показывающая связи между серверным компьютером, сетью, компьютером пользователя и другими компьютерами;
Фиг.3 - диаграмма состояний, показывающая переходы из одного состояния в другое согласно одному из вариантов осуществления настоящего изобретения;
Фиг.4 - схема последовательности операций в процедуре создания дублированных копий файла согласно одному из вариантов осуществления настоящего изобретения; и
Фиг.5 - схема последовательности операций в процедуре создания дублированных копий файла согласно другому варианту осуществления изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
КРАТКИЙ ОБЗОР
Реализован способ дублирования файлов с сервера, в котором при использовании операции дублирования для каждого файла, хранящегося в сервере, сохраняются три его копии. Рабочая копия файла для пользователя сохраняется как локальный файл. Теневой файл является копией последней заведомо пригодной версии серверного файла (версии файла, хранящегося в сервере). Копия последней локальной копии до ее обновления при разрешении конфликтных ситуаций или дублировании сохраняется как файл возврата в предыдущее состояние.
При первоначальном копировании файла с сервера в виде локальной копии создается дополнительная копия в виде теневого файла. Это делается для улучшения синхронизации и управления разрешением конфликтных ситуаций.
Дублирование осуществляется, когда компьютер пользователя подключен к серверу. Теневой файл сравнивается с серверной версией. Если они являются одинаковыми, то обновление серверной версии файла, оставшегося с последней операции синхронизации, не производится. Если же они не являются одинаковыми, то осуществляется копирование серверной версии в виде теневой версии. Локальная версия сохраняется в виде файла возврата в предыдущее состояние, а теневая версия сохраняется в виде локальной версии.
Средство контроля состояния версий отслеживает состояние изменений локальных и серверных файлов. Пользователю предоставляется информация о состоянии версии и о возможных вариантах управления разрешением конфликтных ситуаций.
ПРИМЕР ВЫЧИСЛИТЕЛЬНОГО УСТРОЙСТВА
На Фиг.1 и в последующем описании приведено краткое общее описание надлежащей вычислительной среды, в которой может быть реализовано настоящее изобретение. Однако следует понимать, что для использования в настоящем изобретении, описание которого приведено выше, пригодны карманные, портативные и другие вычислительные устройства, а также всевозможные вычислительные средства иных типов. Следовательно, несмотря на то что ниже приведено описание универсального компьютера, его следует рассматривать лишь в качестве одного из примеров, и настоящее изобретение может быть реализовано с использованием иных вычислительных устройств, например "тонких" клиентских устройств, имеющих функциональную совместимость с сетью/шинами и способных взаимодействовать с ними. Следовательно, настоящее изобретение может быть реализовано в среде сетевых услуг с привлечением очень небольших или минимальных клиентских ресурсов, например, в сетевом окружении, в котором клиентское устройство служит просто в качестве интерфейса с сетью/шиной, например, с объектом, находящимся в электронном приборе, или также с другими вычислительными устройствами и средствами. В сущности, согласно изобретению желательной или пригодной средой для его функционирования является любая среда, в которой может быть осуществлено запоминание данных или из которой может быть осуществлено извлечение данных.
Изобретение может быть реализовано посредством операционной системы, используемой разработчиком услуг для устройства или объекта, и/или может входить в состав прикладного программного обеспечения, функционирующего согласно изобретению, хотя это и не является необходимым условием. В общем случае, программное обеспечение может быть написано в виде исполняемых компьютером команд, например программных модулей, выполняемых одним или большим количеством компьютеров, например клиентскими рабочими станциями, серверами или иными устройствами. В общем случае, программные модули содержат подпрограммы, программы, объекты, компоненты, структуры данных и т.п., выполняющие конкретные задачи или реализующие отдельные абстрактные типы данных. В различных вариантах осуществления изобретения функциональные возможности программных модулей, как правило, могут быть объединены или распределены желательным образом. Кроме того, специалистам в данной области техники понятно, что изобретение может быть осуществлено посредством иных компьютерных систем иных конфигураций. Другими известными вычислительными системами, средами и/или конфигурациями, которые могут быть пригодными для реализации настоящего изобретения, являются следующие: персональные компьютеры (ПК), банкоматы, серверные компьютеры, карманные или портативные компьютерные устройства, многопроцессорные системы, системы на основе микропроцессоров, программируемые бытовые электронные приборы, сетевые ПК, электронные приборы, устройства световой сигнализации, устройства контроля состояния окружающей среды, мини-ЭВМ, большие универсальные вычислительные машины и т.п., но эти примеры не являются ограничивающим признаком. Настоящее изобретение может быть также реализовано в распределенных вычислительных средах, в которых выполнение задач осуществляют посредством удаленных устройств обработки, связь с которыми поддерживают через сеть/шину связи или через иную среду передачи данных. В распределенной вычислительной среде программные модули могут находиться как в локальных, так и в удаленных компьютерных запоминающих средах, в том числе, в запоминающих устройствах для хранения данных, а клиентские узлы сети, в свою очередь, могут функционировать в качестве серверных узлов сети.
Таким образом, на Фиг.1 показан пример пригодной среды 100 вычислительной системы, в которой может быть реализовано настоящее изобретение, хотя, как было пояснено выше, среда 100 вычислительной системы является всего лишь одним из примеров пригодной вычислительной среды, никоим образом не ограничивающим объем использования изобретения или его функциональные возможности. Не следует рассматривать вычислительную среду 100 как каким-либо образом зависящую от какого-либо из компонентов, изображенных в приведенной в качестве примера операционной среде 100, либо от какой-либо их совокупности, или как среду, необходимым условием для которой является наличие какого-либо из этих компонентов или какой-либо их совокупности.
Согласно Фиг.1 приведенная в качестве примера система, пригодная для реализации настоящего изобретения, содержит универсальное вычислительное устройство, выполненное в виде компьютерной системы 110. В состав компьютерной системы 110 могут входить следующие компоненты: процессор 120, системная память 130 и системная шина 121, соединяющая различные компоненты системы, в том числе системную память с процессором 120, но эти примеры не являются ограничивающим признаком. Системная шина 121 может представлять собой любую из нескольких типов шин различной структуры, в том числе, шину памяти или контроллер памяти, шину периферийных устройств и локальную шину с использованием любой из множества конфигураций шин. В качестве примера могут быть приведены следующие варианты архитектуры шин: шина с архитектурой промышленного стандарта (ISA), шина с микроканальной архитектурой (MCA), шина с расширенной архитектурой промышленного стандарта (EISA), локальная шина стандарта Ассоциации по стандартам в области видеоэлектроники (VESA) и шина соединения периферийных компонентов (PCI) (также известная как шина расширения), но эти примеры не служат ограничивающим признаком.
Компьютерная система 110 обычно содержит множество считываемых посредством компьютера носителей информации. Считываемыми посредством компьютера носителями информации могут являться любые существующие носители информации, к которым компьютерная система 110 может осуществлять доступ, энергозависимые и энергонезависимые носители информации, сменные и стационарные носители информации. Считываемыми посредством компьютера носителями информации могут являться, например, компьютерные запоминающие среды и средства связи, но эти примеры не являются ограничивающим признаком. Компьютерными запоминающими средами являются, в том числе, энергозависимые и энергонезависимые, сменные и стационарные носители информации, реализованные любым способом или посредством любой технологии, обеспечивающей запоминание информации, например считываемых посредством компьютера команд, структур данных, программных модулей или иных данных. Компьютерными запоминающими средами являются, в том числе, оперативные запоминающие устройства (ОЗУ), постоянные запоминающие устройства (ПЗУ), электрически стираемые программируемые постоянные запоминающие устройства (ЭСППЗУ), флэш-память или запоминающие устройства на основе иных технологий, постоянные запоминающие устройства на компакт-дисках (CDROM), универсальные цифровые диски (DVD) или иные запоминающие устройства на оптических дисках, магнитные кассеты, магнитная лента, запоминающие устройства на магнитных дисках или иные магнитные запоминающие устройства, либо любые иные носители информации, которые могут быть использованы для запоминания желательной информации, а доступ к ним может быть осуществлен посредством компьютерной системы 110, но эти примеры не являются ограничивающим признаком. Средства связи обычно обеспечивают реализацию считываемых посредством компьютера команд, структур данных, программных модулей или иных данных в виде модулированного информационного сигнала, например несущей, или посредством иного механизма транспортировки, и в их состав входят любые средства передачи информации. Термин "модулированный информационный сигнал" означает сигнал, один или большее количество параметров которого устанавливают или изменяют таким образом, чтобы обеспечить кодирование информации в сигнале. Примерами средств связи являются, в том числе, средства проводной связи, например сеть проводной связи или прямое проводное соединение, и средства беспроводной связи, например средства акустической связи, радиочастотной связи, инфракрасной связи и иные средства беспроводной связи, но эти примеры не являются ограничивающим признаком. Термин "считываемый посредством компьютера носитель информации" также охватывает собой совокупности любых из вышеуказанных носителей и средств.
Системная память 130 содержит компьютерные запоминающие среды в виде энергозависимых и/или энергонезависимых запоминающих устройств, например постоянное запоминающее устройство (ПЗУ) 131 и оперативное запоминающее устройство (ОЗУ) 132. Запоминание базовой системы 133 ввода-вывода (BIOS), содержащей базовые подпрограммы, помогающие осуществлять передачу информации между элементами компьютерной системы 110, например, во время запуска обычно осуществляют в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, к которым процессор 120 имеет непосредственный доступ и/или обрабатываемые им в текущий момент времени. В качестве примера, который не является ограничивающим, на Фиг.1 показана операционная система 134, прикладные программы 135, другие программные модули 136 и данные программы 137.
Компьютерная система 110 может также содержать иные сменные/стационарные энергозависимые/энергонезависимые компьютерные запоминающие среды. Например, на Фиг.1 показан накопитель 141 на жестких дисках, который осуществляет считывание информации со стационарного энергонезависимого магнитного носителя или ее запись на него, накопитель 151 на магнитных дисках, который осуществляет считывание информации со сменного энергонезависимого магнитного диска 152 или ее запись на него, и накопитель 155 на оптических дисках, который осуществляет считывание информации со сменного энергонезависимого оптического диска 156, например, с постоянного запоминающего устройства на компакт-диске (CD-ROM) или с иного оптического носителя информации, или ее запись на него. Другими сменными/стационарными энергозависимыми/энергонезависимыми компьютерными запоминающими средами, которые могут быть использованы в приведенной в качестве примера операционной среде, являются, в том числе, кассеты с магнитной лентой, платы флэш-памяти, универсальные цифровые диски, цифровая видеолента, твердотельное ОЗУ, твердотельное ПЗУ и т.п., но эти примеры не являются ограничивающим признаком. Накопитель 141 на жестких дисках обычно подключен к системной шине 121 через интерфейс стационарных запоминающих устройств, которым является, например, интерфейс 140, а накопитель 151 на магнитных дисках и накопитель 155 на оптических дисках обычно подключены к системной шине 121 через интерфейс сменных запоминающих устройств, которым является, например, интерфейс 150.
Вышеописанные накопители и соответствующие им компьютерные запоминающие среды, которые изображены на Фиг.1, обеспечивают запоминание считываемых посредством компьютера команд, структур данных, программных модулей и других данных для компьютерной системы 110. Например, на Фиг.1 накопитель 141 на жестких дисках изображен как устройство, обеспечивающее запоминание операционной системы 144, прикладных программ 145, других программных модулей 146 и данных 147 программ. Следует отметить, что эти компоненты могут быть идентичными операционной системе 134, прикладным программам 135, другим программным модулям 136 и данным 137 программ или отличаться от них. На этом чертеже операционной системе 144, прикладным программам 145, другим программным модулям 146 и данным 147 программ присвоены иные ссылочные позиции для пояснения того, что они представляют собой, по меньшей мере, иные копии. Ввод команд и информации в компьютерную систему 110 пользователь может осуществлять посредством устройств ввода данных, например клавиатуры 162 и координатно-указательного устройства 161, обычно именуемого манипулятором типа "мышь", шаровым манипулятором или сенсорной панелью. Другими устройствами ввода данных (на чертеже не показаны) могут являться, в том числе, микрофон, джойстик, игровая клавишная панель, спутниковая антенна, сканер и т.п. Эти и другие устройства ввода данных часто соединяют с процессором 120 через интерфейс 160 ввода данных пользователя, подключенный к системной шине, но они могут быть также подключены через другой интерфейс и шины иной структуры, например через параллельный порт, игровой порт или через универсальную последовательную шину (USB). К системной шине 121 также может быть подключен графический интерфейс 182, например, типа Northbridge ("северный мост"). Интерфейс Northbridge представляет собой набор микросхем, обеспечивающий обмен информацией с центральным процессором или с главным процессором 120 и обеспечивающий передачу информации через ускоренный графический порт (AGP). Обмен информацией с графическим интерфейсом 182 может осуществлять один или большее количество графических процессоров (ГП) 184. Для этого графические процессоры 184 обычно содержат встроенное в микросхему запоминающее устройство, например регистровое запоминающее устройство, а графические процессоры (ГП) 184 осуществляют обмен данными с видеопамятью 186. Однако ГП 184 являются всего лишь одним из примеров сопроцессора, и, следовательно, компьютерная система 110 может содержать множество сопроцессоров, обеспечивающих совместную обработку данных. К системной шине 121 через интерфейс, например через видеоинтерфейс 190, который, в свою очередь, может осуществлять обмен данными с видеопамятью 186, также может быть подключен монитор 191 или иное устройство визуального отображения. Помимо монитора компьютерные системы также могут содержать и другие периферийные устройства вывода, например громкоговорители 197 и принтер 196, которые могут быть подключены через интерфейс 195 периферийных устройств вывода.
Компьютерная система 110 может функционировать в сетевой или в распределенной среде с использованием логических соединений с одним или с большим количеством удаленных компьютеров, например с удаленным компьютером 180. Удаленный компьютер 180 может представлять собой персональный компьютер (ПК), сервер, маршрутизатор, сетевой ПК, одноранговое устройство или иной узел общей сети и обычно содержит многие или все из тех элементов, описание которых было приведено выше применительно к компьютерной системе 110, несмотря на то что на Фиг.1 изображено всего лишь одно запоминающее устройство 181. Логические соединения, изображенные на Фиг.1, содержат локальную сеть (ЛС) 171 и глобальную сеть (ГС) 173, но также могут содержать и другие сети/шины. Такие сетевые среды обычно встречаются в домах, в офисах, в компьютерных сетях масштаба предприятия, во внутрикорпоративных сетях (интрасетях) и в сети Интернет.
При использовании компьютерной системы 110 в сетевом окружении локальной сети (ЛС) ее соединяют с локальной сетью 171 через сетевой интерфейс или адаптер 170. При использовании компьютерной системы 110 в сетевом окружении глобальной сети она обычно содержит модем 172 или иное средство установления связи через глобальную сеть 173, например через сеть Интернет. Модем 172, который может быть внутренним или внешним, может быть соединен с системной шиной 121 через интерфейс 160 ввода данных пользователя или иное надлежащее устройство. При наличии сетевого окружения запоминание программных модулей, изображенных на чертеже как относящихся к компьютерной системе 110, или их частей может быть осуществлено в удаленном запоминающем устройстве. В качестве примера, не служащего ограничивающим признаком, на Фиг.1 изображено, что удаленные прикладные программы 185 хранятся в запоминающем устройстве 181. Понятно, что показанные на чертеже сетевые соединения приведены лишь в качестве примера, и что может быть использовано иное средство установления канала связи между компьютерами.
Были разработаны и в настоящее время разрабатываются различные распределенные вычислительные структуры, обеспечивающие сближение персональных вычислительных средств с сетью Интернет. Индивидуальным, равно как и коммерческим пользователям, предоставляют цельный функционально совместимый интерфейс, снабженный средствами на основе Web-технологий, для прикладных программ и вычислительных устройств, что делает работу с компьютером все более и более похожей на работу с программой навигации и просмотра Web-узлов (Web-браузером) или на работу в сети.
Например, платформа "MICROSOFT®.NET" фирмы "Microsoft" содержит серверы, блоки типовых услуг, например хранения данных в сети на основе Web-технологий и загружаемого программного обеспечения для устройств. Несмотря на то что приведенные здесь примеры вариантов осуществления изобретения описаны применительно к программному обеспечению, хранящемуся в вычислительном устройстве, одна или большее количество частей изобретения могут быть также реализованы посредством операционной системы, прикладного программного интерфейса (API) или "объекта-посредника" между любым из следующих устройств: сопроцессором, устройством визуального отображения и запрашивающим объектом, таким образом, что выполнение операций согласно настоящему изобретению, их поддержка или доступ к ним могут быть осуществлены посредством всех языков и услуг платформы ".NET", а также в иных распределенных вычислительных структурах.
УПРАВЛЕНИЕ МНОЖЕСТВОМ СОСТОЯНИЙ ФАЙЛА ДЛЯ ДУБЛИРОВАННЫХ ФАЙЛОВ
КОПИРОВАНИЕ
Согласно Фиг.2 серверный компьютер 200 соединен с компьютером 220 пользователя через сеть 215. При получении сервером запроса сервер позволяет компьютеру 220 пользователя открыть файл. Дублирование файла предоставляет пользователю возможность работы с локальной версией серверного файла на компьютере 220 совместно с пользователями на других компьютерах 270 пользователей. Официальная версия файла хранится в серверном компьютере 200 в виде серверной копии 210. Управляющая программа 230 дублирования файлов создает три копии файла в компьютере пользователя 220. Ими являются: локальная копия 232, теневая копия 234 и копия 238, обеспечивающая возврат в предыдущее состояние.
В компьютере 220 пользователя прикладная программа 240 открывает локальную копию 232. В одном из вариантов осуществления изобретения в пользовательском пространстве имен компьютера 220 пользователя имеется копия локальной копии 232. В этом варианте осуществления изобретения локальная копия 232 отслеживает изменения копии в пространстве имен, а прикладная программа 240 использует копию в пространстве имен.
При использовании копии в пространстве имен управляющая программа 230 дублирования файлов не осуществляет управление копией в пространстве имен. В этом варианте осуществления изобретения файл в пространстве имен представляет собой файл, к которому пользователь обычно осуществляет доступ. Этот файл может представлять созданный им файл или файл, полученный им по электронной почте. В том случае, когда этой файл получен по электронной почте, пользователь получает "вложение, свидетельствующее о том, что файл всегда является активным" (с серверной информацией), и сохраняет его копию на своем локальном компьютере. Сама операция сохранения этого файла означает наличие двух копий: одной - в хранилище электронной почты, а другой - в локальном компьютере. Копия, имеющаяся в локальном компьютере, представляет собой копию в пространстве имен. Серверная информация, содержащаяся во вложении, позволяет осуществлять дублирование файла и создание локальной копии 232, теневой копии 234 и копии 238, обеспечивающей возврат в предыдущее состояние. При использовании пользователем копий в пространстве имен управляющая программа 220 дублирования осуществляет их синхронизацию с использованием локальной копии 232.
Теневая копия 234 сохраняет последнюю версию серверной копии 210, сведения о которой имеет компьютер 220 пользователя. Когда компьютер пользователя 220 подключен к серверному компьютеру 200, то теневая копия 234 идентична серверной копии 210.
Сохраненная копия 238, обеспечивающая возврат в предыдущее состояние, представляет собой последнюю известную копию, просмотренную или отредактированную пользователем. В том случае, когда локальная копия 232 была перезаписана в процессе дублирования, но пользователь желает вернуться в предыдущее состояние, для получения последней копии, прочитанной или отредактированной пользователем, используется копия 238, обеспечивающая возврат в предыдущее состояние.
Управляющая программа 230 дублирования файлов может быть выполнена в виде программы, отдельной от прикладной программы 240, как показано на чертеже, или может быть встроена в прикладную программу 240. В любом случае сообщения и информация для пользователя, поступающие из управляющей программы дублирования файлов, и интерфейсы пользователя, обеспечивающие сбор вводимых пользователем данных и отображение сообщений для пользователя, могут быть введены в состав изображения, предоставляемого пользователю путем его вывода на экран устройства отображения посредством прикладной программы 240. Пользователю также может быть предоставлена информация об изменениях, сделанных между двумя версиями файла (подробное описание этого приведено ниже), путем ее отображения с использованием содержимого экрана, выводимого посредством прикладной программы 240. Кроме того, при создании такой информации, отображаемой для пользователя, могут быть использованы функциональные возможности прикладной программы 240.
КОНТРОЛЬ СОСТОЯНИЯ ВЕРСИЙ
Принцип действия способов дублирования файлов согласно одному из вариантов осуществления настоящего изобретения может быть понят со ссылкой на способ контроля состояний версий. Для каждого скопированного документа состояние версии описывает то, что происходит с документом в компьютере 220 пользователя. Эти состояния версии получают исходя из предыдущих состояний версии и действий, выполняемых с локальной копией 232, теневой копией 234 и серверной копией 210 (главной копией документа).
Первое состояние является "текущим". Состояние версии является текущим, если локальная копия 232 идентична теневой копии 234. Например, когда файл, сохраненный в компьютере 220 пользователя, загружается в серверный компьютер 200 для совместной работы, локальная копия 232 является идентичной теневой копии 234. Аналогичным образом, при первом копировании файла из серверного компьютера 200 в компьютер 220 пользователя локальная копия идентична теневой копии 234. Как показано на диаграмме состояний из Фиг.3, при изменении локальной копии 232 таким образом, что она больше не является идентичной теневой копии 234, происходит переход из одного состояния в другое, а именно из "текущего" состояния 300 в "измененное" состояние 310. При передаче сведений об этом измененном состоянии в сервер или при отказе, в результате чего локальная копия 232 снова становится идентичной теневой копии 234, происходит возврат в "текущее" состояние 300.
В том случае, когда компьютер 220 пользователя подключен к серверному компьютеру 200 и замечает, что серверная копия 210 была обновлена, то осуществляется копирование новой серверной копии 210 в виде теневой копии 234. Локальная копия 232 сохраняется как копия 238, обеспечивающая возврат в предыдущее состояние, а затем теневая копия 234 копируется в виде локальной копии 232. В одном из вариантов осуществления изобретения отслеживается последняя копия, просмотренная пользователем. Таким образом, если пользователь просмотрел версию A, а из сервера загружена версия B, то копией, обеспечивающей возврат в предыдущее состояние, будет являться копия версии A. Но в том случае, если теперь из сервера загружена версия C, то копия, обеспечивающая возврат в предыдущее состояние, не будет заменена версией B до тех пор, пока пользователем не будет осуществлен доступ к версии B. Следовательно, в качестве копии, обеспечивающей возврат в предыдущее состояние, сохраняется последняя версия, просмотренная пользователем.
Как видно из Фиг.3, если из сервера загружен измененный вариант файла в качестве теневого файла и запомнена копия, обеспечивающая возврат в предыдущее состояние, а состоянием является "текущее" состояние 300, то новым состоянием будет являться состояние 320 "возможен возврат в предыдущее состояние". Однако, если это происходит в "измененном" состоянии 310, то имели место два изменения: локальные изменения предыдущей версии серверной копии, которые сохранены в локальной копии 232, и некоторые другие изменения (сделанные другими пользователями), в результате которых была создана новая версия серверной копии 210. Это приводит к состоянию 330 "конфликтная ситуация".
При возникновении состояния 330 "конфликтная ситуация" необходимо решить проблему наличия двух возможно расходящихся наборов изменений локальной копии 232 и теневой копии 234. Например, пользователь может решить отказаться от изменений, сделанных в локальной копии 232, или перезаписать эти изменения. Файл, полученный в результате этого решения, сохраняется в виде локальной копии 232, и происходит возврат в "измененное" состояние. Как отмечено выше, при передаче сведений об изменениях локальной копии 232 в сервер или при отказе в пользу текущей серверной копии состояние изменяется на "текущее".
ЗАГРУЗКА СВЕДЕНИЙ ОБ ИЗМЕНЕНИЯХ В СЕРВЕР
В каждом из состояний версии для пользователя доступны различные варианты синхронизации. Доступ к этим вариантам может быть осуществлен отдельно из управляющей программы 230 дублирования файлов, или же они могут быть встроены в прикладную программу 240. Если были сделаны изменения, то одним из вариантов является загрузка (или "проталкивание") сведений об изменениях в серверную копию 210. Этот вариант синхронизации позволяет пользователю устанавливать соединение компьютера 200 с сервером (если такое соединение возможно) и осуществлять синхронизацию локальной копии 232 с серверной копией 210.
Если состояние версии является "текущим" состоянием 300 или состоянием 320 "возможен возврат в предыдущее состояние", то это означает, что не было сделано никаких изменений, и, следовательно, файл не передается в сервер. Если же состояние версии является "измененным" состоянием 310, то определяются различия между локальной копией 232 и теневой копией 234. Этот процесс известен как "генерация разности" (то есть сведений о различиях) двух файлов. Если состоянием версии является "измененное" состояние 310, то теневая копия 234 является идентичной серверной копии 210 (в противном случае состоянием версии являлось бы состояние 330 "конфликтная ситуация"). Следовательно, в сервер не обязательно следует загружать весь файл, поскольку вся необходимая информация имеется в файле, содержащем всю информацию о различии между локальной копией 232 и теневой копией 234. Серверный компьютер 200 использует этот файл раз