способ задержки блокировки файлов сервера при редактировании
Классы МПК: | G06F21/00 Устройства защиты компьютеров или компьютерных систем от несанкционированной деятельности G06F17/24 редактирование, например, вставка/удаление G06F12/00 Выборка, адресация или распределение данных в системах или архитектурах памяти |
Автор(ы): | ЭДЕЛЬШТАЙН Ноа (US), ЛИУ Хай (US), САЛИБА Хани (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2004-02-27 публикация патента:
20.01.2009 |
Изобретение относится к вычислительной технике. Техническим результатом является обеспечение возможности модифицированного действия открытия файла. Когда пользователь указывает (явно или неявно), что он пытается или намеревается открыть файл, этот файл можно впоследствии блокировать для редактирования. Таким образом, действие по умолчанию, осуществляемое, когда пользователь запрашивает открытие файла, приводит к тому, что другим пользователям не запрещается доступ к этому файлу. Затем, когда пользователь указывает, что должно произойти редактирование, файл блокируется. 10 з.п. ф-лы, 4 ил.
(56) (продолжение):
CLASS="b560m"2001, с.121, последний абзац, с.122, первый абзац. US 5774717 А, 30.06.1998. US 5761498 А, 02.06.1998. RU 2126603 C1, 20.02.1999. RU 2155373 C2, 27.08.2000.
Формула изобретения
1. Способ блокировки файла, открываемого на компьютерном устройстве, заключающийся в том, что
принимают первый запрос от первого пользователя на открытие упомянутого файла,
в ответ на первый запрос открывают упомянутый файл для чтения в режиме только для чтения, так что файл остается незаблокированным,
определяют, что произошло изменение данных в упомянутом файле в отношении первого пользователя и этот открытый файл при определении, что упомянутое изменение в этом файле произошло, содержит прием, в то время как файл открыт в режиме только для чтения, или изменения содержимого в упомянутом файле, или запроса на сохранение изменений в упомянутый файл,
в ответ на изменение данных в упомянутом файле получают блокировку в отношении упомянутого файла так, чтобы изменить режим только для чтения на режим запись/считывание,
принимают второй запрос редактировать этот файл от второго пользователя,
в ответ на второй запрос определяют, не блокирован ли файл,
если не блокирован, то открывают файл в режиме только для чтения, и если блокирован, то отклоняют второй запрос.
2. Способ по п.1, в котором упомянутое определение, что произошло изменение данных в упомянутом файле, дополнительно содержит прием запроса редактирования упомянутого файла от первого пользователя.
3. Способ по п.1, в котором определение, что произошло изменение данных в упомянутом файле, дополнительно содержит определение, что первый пользователь уже имеет упомянутый файл открытым в течение предварительно определенного периода времени.
4. Способ по п.1, в котором упомянутый этап открытия упомянутого файла содержит создание пользовательской копии упомянутого файла.
5. Способ по п.4, в котором упомянутый файл находится на серверном компьютере, первый пользователь пользуется пользовательским компьютером, упомянутый серверный компьютер и упомянутый пользовательский компьютер оперативно соединены, а упомянутая пользовательская копия упомянутого файла является локальной для упомянутого пользовательского компьютера.
6. Способ по п.4 дополнительно содержит перед этапом получения блокировки в отношении упомянутого файла этап определения, изменялся ли упомянутый файл с момента создания упомянутой пользовательской копии, и при этом этап получения блокировки в отношении упомянутого файла выполняют в ответ на то, что упомянутый файл не был изменен.
7. Способ по п.6, в котором упомянутый этап определения того, изменялся ли упомянутый файл, предусматривает сравнение информации о текущей версии упомянутого файла, находящегося на упомянутом серверном компьютере, с информацией о версии упомянутой пользовательской копии.
8. Способ по п.7, в котором упомянутая информация о версии, касающаяся заданной версии упомянутого файла, содержит информацию, касающуюся времени последнего изменения, внесенного в упомянутую заданную версию.
9. Способ по п.6, дополнительно содержащий этап, на котором
если упомянутый файл был изменен, то предлагают упомянутому первому пользователю одну или более опций разрешения конфликта.
10. Способ по п.9, в котором упомянутые опции разрешения конфликта включают в себя опцию сохранения пользовательской копии упомянутого файла.
11. Способ по п.9, при котором упомянутые опции разрешения конфликта включают в себя опцию извлечения упомянутой текущей версии упомянутого файла, находящейся на упомянутом серверном компьютере.
Описание изобретения к патенту
ОПИСАНИЕ
Область техники, к которой относится изобретение
Настоящее изобретение относится к области управления документооборотом и, в частности, к способу задержки блокировки файлов сервера во время доступа к ним пользователя, а также к системе для осуществления способа.
Предшествующий уровень техники
Серверные компьютеры, такие как web-серверы, могут выполнять двойные функции. Сервер можно использовать в качестве места публикации, доступ к содержимому которого может получить пользователь. Сервер также можно использовать в качестве среды для совместной работы, в которой два или более пользователей могут совместно работать над документом. Каждый пользователь может обновлять или иным образом редактировать этот документ. Когда сервер используют в качестве места публикации, он может доставлять индивидуальную копию файла любому пользователю, который запрашивает этой файл, поддерживая версию на сервере без изменений. Когда сервер используют в качестве среды для совместной работы, он может обеспечить пользователю, который желает редактировать файл, самую последнюю копию. Однако сервер часто используют в обеих упомянутых целях одновременно, поддерживая и функцию публикации и функцию совместной работы.
Такое двойное использование создает проблему. Например, если сервер представляет собой web-сервер, то стандартный механизм доступа к файлу на web-сервере (посредством гиперссылки) будет приводить к осуществлению одного из двух действий. В зависимости от гиперссылки и web-сервера либо щелчок на гиперссылке приведет к созданию копии файла, которую пользователь сможет прочитать, не изменяя оригинальный файл, либо щелчок на гиперссылке приведет к открытию файла и позволит пользователю редактировать этот файл. Когда файл открывают для редактирования, он блокируется, и никакие другие пользователи не смогут редактировать этот файл.
В общем случае файл можно открывать, варьируя разрешения, выдаваемые пользователю, открывающему файл. Когда файл открывают для чтения, файл открывается только для чтения, что позволяет пользователю читать и/или листать или просматривать либо использовать данные файла иным образом, но данные при этом не изменяются. Когда файл открывают для редактирования, он открывается для чтения и записи, что дает пользователю те же самые привилегии, а также позволяет этому пользователю изменять данные или вносить в них дополнения. Когда файл открыт для чтения и записи, этот файл блокируется. Эта блокировка гарантирует, что только один пользователь сможет изменять этот файл в некоторый момент времени, препятствуя изменению файла двумя или более пользователями.
Проблема возникает тогда, когда действие по умолчанию не является тем, которое желательно для пользователя. Например, если пользователь хочет редактировать файл, а по умолчанию открывается копия для чтения, то пользователю не предоставляются желаемые функциональные возможности. Аналогично, если по умолчанию файл открывается для редактирования, а пользователь хочет лишь прочитать файл, то этот файл блокируется, и другому пользователю, который захочет редактировать файл, будут чиниться препятствия в редактировании этого файла. Пользователю, который откроет файл для чтения, а потом захочет редактировать этой файл, придется повторно открывать его для редактирования.
Сущность изобретения
Предложен сервер с возможностью осуществления модифицированного действия открытия файла, причем когда пользователь осуществляет модифицированное открытие, сервер сначала открывает файл, не блокируя этот файл. Когда пользователь указывает (явно или неявно), что он пытается или намеревается открыть файл, этот файл можно впоследствии блокировать для редактирования. Таким образом, действие по умолчанию, осуществляемое когда пользователь запрашивает открытие файла, приводит к тому, что другим пользователям не запрещается доступ к этому файлу. Затем, когда пользователь указывает, что должно произойти редактирование, файл блокируется.
Способ блокировки файла, открываемого на компьютерном устройстве, может включать в себя прием - первый запрос от первого пользователя на открытие файла. В ответ на первый запрос этот файл может быть открыт для чтения в режиме только для чтения, так что файл остается неблокированным. Может иметь место определение, что произошло изменение данных в упомянутом файле по отношению к первому пользователю, и этот открытый файл. Определение может включать в себя прием, в то время как файл открыт в режиме только для чтения или изменения содержимого в упомянутом файле, или запроса на сохранение изменений в упомянутом файле.
В ответ на изменение данных в упомянутом файле может быть получена блокировка в отношении упомянутого файла так, чтобы изменить режим «только для чтения» на режим «запись/считывание».
Дополнительно может быть принят второй запрос от второго пользователя на редактирование этого файла. В ответ на второй запрос может быть определено, что файл не блокирован. Если файл блокирован, то второй запрос отклоняют.
Таким образом, файл может быть открыт множеством пользователей одновременно и все могут использовать содержимое этого файла. Однако когда пользователь желает модифицировать файл, для этого пользователя получают блокировку и пользователь будет иметь привилегии записи/считывания для этого файла.
Краткое описание чертежей
Вышеизложенное краткое изложение сущности изобретения, а также нижеследующее подробное описание предпочтительных конкретных вариантов осуществления станут более понятными при рассмотрении со ссылками на прилагаемые чертежи. В целях иллюстрации изобретения на чертежах приведены возможные конкретные варианты осуществления изобретения, однако изобретение не сводится к описываемым ниже конкретным способам и аппаратуре. В связи с чертежами нужно отметить, что
на фиг.1 представлена блок-схема, иллюстрирующая возможную вычислительную среду, в которой можно реализовать аспекты изобретения;
на фиг.2 представлена функциональная схема, иллюстрирующая пример взаимосвязи между серверным компьютером, сетью, пользовательским компьютером и другими компьютерами;
на фиг.3 представлен алгоритм, иллюстрирующий задержанную блокировку в соответствии с одним конкретным вариантом осуществления настоящего изобретения; и
на фиг.4 представлен алгоритм, иллюстрирующий задержанную блокировку в соответствии с конкретным вариантом осуществления настоящего изобретения.
Подробное описание иллюстративных конкретных вариантов осуществления изобретения
Обзор
Чтобы добиться гибкости, когда пользователь открывает документ на совместно используемом сервере, реализуют модифицированное открытие. Когда используют модифицированное открытие, чтобы открыть файл, этот файл открывается только для чтения. Лишь в случае, если пользователь, который открыл файл посредством модифицированного открытия, указывает, что должно быть проведено редактирование файла, полученный файл блокируется, допуская чтение и запись для упомянутого пользователя и блокируя получение привилегий редактирования этого файла всеми остальными пользователями.
Возможное вычислительное устройство
Фиг.1 и последующее описание предназначены для того, чтобы дать краткое общее описание подходящей вычислительной среды, в которой можно осуществить изобретение. Однако следует понять, что, как описано выше, в связи с настоящим изобретением предусматривается и использование карманных, переносных и иных вычислительных устройств и вычислительных объектов любых типов. Таким образом, хотя ниже приводится описание компьютера общего назначения, это лишь один пример, и настоящее изобретение может быть осуществлено с другими вычислительными устройствами, такими как «тонкий» клиент (сетевой компьютер с ограниченными вычислительными ресурсами), способный работать с сетью и/или шиной и участвовать во взаимодействии. Таким образом, настоящее изобретение можно осуществить в среде с имеющимися сетевыми услугами, в которой предусматривается очень мало клиентских ресурсов или они вообще не предусмотрены, например, в сетевой среде, в которой клиентское устройство, такое как объект, размещенный в некотором аппарате, служит просто в качестве интерфейса с сетью и/или шиной, а также с другими вычислительными устройствами и объектами. В сущности, любое место, где могут храниться данные или откуда такие данные можно извлечь, является желательной или подходящей средой для работы в соответствии с изобретением.
Хотя это и не обязательно, изобретение можно осуществить посредством операционной системы, предназначенной для использования разработчиком услуг в качестве устройства или объекта и/или заключенной в прикладном программном обеспечении, которое работает в соответствии с изобретением. Программное обеспечение может быть описано в общем контексте исполняемых компьютером команд, таких как программные модули, исполняемые одним или более компьютерами, такими как клиентские рабочие станции, серверы или другие устройства. В общем случае программные модули включают в себя подпрограммы, объекты, компоненты, структуры данных и т.п., которые решают конкретные задачи или реализуют конкретные абстрактные типы данных. В типичном случае функциональные возможности программных модулей могут быть объединены или распределены по желанию в разных конкретных вариантах осуществления. Кроме того, специалисты в данной области техники поймут, что изобретение можно осуществить с другими конфигурациями компьютеров. Другие хорошо известные вычислительные системы, среды и/или конфигурации, которые могут оказаться подходящими для использования совместно с предлагаемым изобретением, включают в себя, но не в ограничительном смысле, персональные компьютеры (ПК), автоматические кассовые машины («автоматические кассиры»), серверные компьютеры, карманные или портативные компьютерные устройства, многопроцессорные системы, системы на основе микропроцессоров, программируемые потребительские электронные приборы, сетевые ПК, электроаппаратуру, осветительные приборы, элементы средств контроля окружающей среды, мини-компьютеры, универсальные компьютеры, и т.п. Изобретение также может быть реализовано в распределенных вычислительных средах, в которых задачи решаются удаленными процессорными устройствами, связанными посредством сети и/или шины связи или другой среды передачи данных. В распределенной вычислительной среде программные модули могут находиться на носителях информации, включая запоминающие и хранящие устройства, как локальных, так и удаленных компьютеров, а клиентские узлы могут в свою очередь служить серверными узлами.
Таким образом, на фиг.1 изображен пример подходящей вычислительной системной среды 100, в которой может быть осуществлено изобретение, хотя, как пояснялось выше, вычислительная системная среда 100 представляет собой лишь один пример подходящей вычислительной среды и не предполагает внесение какого-либо ограничения, касающегося объема применения или функциональных возможностей изобретения. Также не следует интерпретировать вычислительную среду 100 как имеющую какую-либо зависимость или подчиняющуюся какому-либо требованию в связи с любым из иллюстрируемых компонентов возможной операционной среды 100 или с любой их совокупностью.
Обращаясь к фиг.1, отмечаем, что возможная система для осуществления изобретения включает в себя вычислительное устройство общего назначения в виде вычислительной системы 110. Компоненты вычислительной системы 110 могут включать в себя, но не в ограничительном смысле, процессорный блок 120, системную память 130 и системную шину 121, которая связывает различные системные компоненты, включая системную память, с процессорным блоком 120. Системная шина 121 может относиться к любому из нескольких типов структур шин, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, и в ней может быть использовано множество шинных архитектур (топологий). В качестве примера, не носящего ограничительный характер, можно отметить, что такие архитектуры включают в себя шину стандартной промышленной архитектуры (шину ISA), шину микроканальной архитектуры (шину МСА), шину расширенной стандартной промышленной архитектуры (шину EISA), локальную шину стандарта «Ассоциации по стандартизации в области видеоэлектроники» (шину VESA) и шину взаимного соединения периферийных компонентов (шину PCI) (также известную под названием «шина второго уровня»).
Вычислительная система 110 в типичном случае включает в себя совокупность считываемых компьютером носителей. Считываемые компьютером носители могут быть любыми имеющимися в продаже носителями, доступ к которым можно получить с помощью вычислительной системы 110, и включают в себя как энергозависимые, так и энергонезависимые носители, как сменные, так и несменяемые носители. В качестве примера, не носящего ограничительный характер, отметим, что считываемые компьютером носители информации могут представлять собой компьютерные носители информации и средства компьютерной связи. Компьютерные носители информации включают в себя как энергозависимые, так и энергонезависимые, как сменные или несменяемые носители, реализованные с помощью любого способа или любой технологии запоминания информации, такой как считываемые компьютером команды, структуры данных, программные модули или иные данные. Считываемые компьютером носители включают в себя, но не в ограничительном смысле, оперативную память (RAM), называемую также памятью с произвольным доступом, постоянную память (ROM), электрически стираемую программируемую постоянную память (EEPROM), флэш-память или память, созданную по иной технологии, постоянную память на компакт-дисках (CD-ROM), память на универсальных цифровых дисках (DVD) или иных оптических дисках, запоминающие устройства на магнитных лентах, магнитных дисках или иных магнитных носителях, или любой другой носитель, который можно использовать для запоминания желаемой информации и доступ к которому возможен с помощью вычислительной системы 110. Средства связи обычно включают в себя считываемые компьютером команды, структуры данных, программные модули или иные данные в виде модулированного сигнала, такого как несущая волна, или реализуют иной транспортный механизм, и включают в себя любые средства доставки информации. Термин «модулированный информационный сигнал» означает сигнал, одна или более характеристик которого задаются или изменяются с обеспечением возможности кодирования информации в этом сигнале. В качестве примера, не носящего ограничительный характер, отметим, что средства связи включают в себя проводные средства, такие как проводная сеть или соединение прямого доступа, и беспроводные средства, такие как акустические, радиочастотные, инфракрасные и иные беспроводные средства. К числу считываемых компьютером носителей относятся также комбинации любых из тех, которые упоминались выше.
Системная память 130 включает в себя компьютерные носители информации в форме энергозависимой и/или энергонезависимой памяти, такие как ROM 131 или RAM 132. В ROM 131, как правило, хранится базовая система 133 ввода/вывода (BIOS), содержащая базовые подпрограммы, способствующие передаче информации между элементами внутри вычислительной системы 110, например, во время включения. RAM 132 в типичном случае содержит информационные и/или программные модули, к которым возможен немедленный доступ и/или с которыми в данный момент работает процессорный блок 120. В качестве примера, не носящего ограничительный характер, отметим, что на фиг.1 изображены операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Вычислительная система 110 также может включать в себя другие - сменные и/или несменяемые, энергозависимые и/или энергонезависимые - компьютерные носители информации. Лишь в качестве примера отметим, что на фиг.1 изображен накопитель 141 на жестких дисках, который осуществляет считывание с несменямых энергонезависимых магнитных носителей и запись на них, накопитель 151 на магнитных дисках, который осуществляет считывание со сменного энергонезависимого магнитного диска 152 и запись на него, и накопитель 155 на оптических дисках, который осуществляет считывание со сменного энергонезависимого оптического диска 156, такого как CD-ROM или другой оптический носитель, и запись на него. Другие сменные и/или несменяемые, энергозависимые и/или энергонезависимые компьютерные носители информации, которые можно использовать в возможной операционной среде, включают в себя, но не в ограничительном смысле, кассеты с магнитными лентами, платы флэш-памяти, универсальные цифровые диски, цифровую видеоленту, твердотельную оперативную память (RAM), твердотельную постоянную память (ROM) и т.п. Накопитель 141 на жестких дисках в типичном случае подсоединен к системной шине 121 посредством интерфейса несменямой памяти, такого как интерфейс 140, а накопитель 151 на магнитных дисках и накопитель 155 на оптических дисках в типичном случае подсоединены к системной шине 121 посредством интерфейса сменной памяти, такого как интерфейс 150.
Накопители и связанные с ними компьютерные носители информации, рассмотренные выше и изображенные на фиг.1, обеспечивают запоминание считываемых компьютером команд, структур данных, программных модулей и других данных для вычислительной системы 110. Например, накопитель 141 на жестких дисках показан на фиг.1 как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и программные данные 147. Отметим, что эти компоненты могут быть либо такими же, как операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137, либо другими. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 обозначены здесь разными позициями, чтобы проиллюстрировать, что они как минимум представляют собой разные копии. Пользователь может вводить команды и информацию в вычислительную систему 110 посредством устройств ввода, таких как клавиатура 162 и указательное устройство 161, в общем случае именуемое мышью, шаровым указателем (трекболом) или сенсорной панелью. Другие устройства (не показаны) могут включать в себя микрофон, рычажный указатель (джойстик), игровую панель, спутниковую антенну-тарелку, сканер и т.п. Эти и другие устройства ввода часто подсоединяют к процессорному блоку 120 посредством пользовательского интерфейса 160 ввода, который связан с системной шиной 121, но могут быть подсоединены и посредством других структур интерфейсов и шин, например, посредством параллельного порта, игрового порта или универсальной последовательной шины (USB). К системной шине 121 также может быть подсоединен графический интерфейс 182, такой как Northbridge. Northbridge («северный мост») представляет собой набор микросхем, который осуществляет связь с центральным процессором (CPU) или главным процессорным блоком 120 и несет ответственность за передачу информации через ускоренный (быстродействующий) графический порт (AGP). С графическим интерфейсом 182 могут осуществлять связь один или более процессоров 184 графической информации (GPU). В этой связи нужно отметить, что эти GPU 184 обычно включают в себя запоминающее и сохраняющее устройство на микросхемах, такое как память на регистрах, и эти GPU 184 осуществляют связь с памятью 186 видеоинформации. Однако GPU 184 являются лишь одним примером сопроцессора, так что в вычислительную систему 110 может входить множество сопроцессорных устройств. К системной шине 121 через такой интерфейс, как видеоинтерфейс 190, который в свою очередь может осуществлять связь с памятью 186 видеоинформации, также подсоединен монитор 191 или отображающее устройство другого типа. Помимо монитора 191 вычислительные системы также могут включать в себя другие периферийные устройства вывода, такие как динамики 197 и принтер 196, которые можно подсоединить с помощью интерфейса 195 периферийных устройств вывода.
Вычислительная система 110 может работать в сетевой или распределенной среде с использованием логических соединений с одним или более удаленными компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым персональным ПК, равноправным (одноранговым) устройством или иным обычным сетевым узлом, и в типичном случае включает в себя многие из элементов, описанных выше в связи с вычислительной системой 110, или все эти элементы, хотя на фиг.1 изображено лишь одно запоминающее и хранящее устройство 181. Изображенные на фиг.1 логические соединения включают в себя локальную (вычислительную) сеть (LAN) 171 и глобальную (вычислительную) сеть (WAN) 173, но могут включать в себя и другие сети. Такие сетевые среды обычно практикуются в жилых домах, офисах, компьютерных сетях предприятий, интерсетях и сети Internet.
При использовании в сетевой среде LAN вычислительную систему 110 подсоединяют к LAN 171 посредством сетевого интерфейса или адаптера 170. При использовании в сетевой среде WAN вычислительная система 110 в типичном случае включает в себя модем 172 или другие средства для установления связи через WAN 173, такую как Internet. Модем 172, который может быть внутренним или внешним, можно подсоединять к системной шине 121 через пользовательский интерфейс 160 ввода или с помощью другого подходящего механизма. В сетевой среде программные модули, показанные относящимися к вычислительной системе 110, или их части можно хранить в удаленном запоминающем и хранящем устройстве. В качестве примера, не носящего ограничительный характер, удаленные прикладные программы 185 изображены на фиг.1 как записанные в запоминающем устройстве 181. Следует понять, что проиллюстрированные сетевые соединения являются лишь возможными, и для установления канала связи между компьютерами можно использовать другие средства.
В свете слияния персональных вычислений и Internet уже разработаны и разрабатываются в настоящее время различные распределенные вычислительные структуры. Вследствие этого пользователям, являющимся физическими и юридическими лицами, предоставляется интерфейс прямого доступа, обеспечивающий возможности взаимодействия и работы с web-страницами для приложений и вычислительных устройств, который представляет собой справляющийся с нарастающим объемом вычислительных операций web-браузер или браузер, ориентированный на сеть.
Например, платформа MICROSOFT®'s.NET включает в себя серверы, средства предоставления услуг по созданию блоков, такие как средства хранения данных на основе web-страниц и загружаемое программное обеспечение устройств. Хотя возможные конкретные варианты осуществления описаны здесь в связи с программным обеспечением, установленным на вычислительном устройстве, одну или более частей изобретения также можно реализовать посредством операционной системы, программного интерфейса приложения (API) или «промежуточного» объекта между сопроцессором и запрашивающим объектом, так что работа в соответствии с изобретением, ее поддержка и доступ возможны через посредство всех языков и услуг, предоставляемых платформой MICROSOFT®'s.NET, а также в других вычислительных объектных структурах.
Задержка блокировки
Обращаясь к фиг.2, отмечаем, что файл 210 находится на серверном компьютере 200. Пользователь, имеющий соответствующее разрешение, запрашивает открытие файла. Этот пользователь может быть подключен к серверному компьютеру множеством способов. Например, пользователь может быть подключен непосредственно через локальную (вычислительную) сеть (LAN) или дистанционно через такую сеть, как Internet. В возможном варианте, показанном на фиг.2, пользовательский компьютер 220 подключен к серверному компьютеру 200 через сеть 230.
Пользователь запрашивает открыть файл. Один возможный способ предоставления такого запроса заключается в выборе гиперссылки на web-странице, обслуживаемой серверным компьютером 200. Когда запрос получен сервером, сервер предоставляет пользовательскому компьютеру возможность открыть файл. Этот файл открывается на пользовательском компьютере 220 приложением 240. Например, это приложение может быть приложением обработки текстов, приложением электронных таблиц, приложением проигрывателя звукозаписей, или любым приложением, посредством которого пользователь может воспользоваться загружаемыми данными. В одном конкретном варианте осуществления пользователь выбирает гиперссылку на web-странице, просматриваемую в приложении просмотра web-страниц на пользовательском компьютере 220, а это приложение просмотра web-страниц открывает файл уже с помощью подходящего приложения.
В одном конкретном варианте осуществления, когда файл открывается, в кэш-памяти пользовательского компьютера 230 создается копия файла. Это та копия на серверном компьютере 200, которую пользователь просматривает или читает (или взаимодействует с ней иным образом, например, воспроизводит ее на проигрывателе аудиозаписей, если файл включает в себя аудиоданные). Когда файл открывают в первый раз, этот файл открывается с разрешениями «только чтение». Таким образом, количество пользователей, которые могут получить доступ к этому файлу и воспользоваться им, больше единицы.
В альтернативном конкретном варианте осуществления вместо локальной копии, создаваемой в пользовательском компьютере 230, все пользователи, имеющие разрешения «только чтение», просматривают файл на сервере.
Блокировка файла происходит только после того, как пользователь укажет, что намеревается редактировать файл. Эта блокировка предоставит упомянутому пользователю разрешение «чтение и запись» при работе с файлом. Тогда пользователь сможет изменять или дополнять данные файла.
Это указание намерения редактирования может быть реализовано множеством разных способов. В одном конкретном варианте осуществления пользователь указывает намерение редактирования, изменяя файл каким-либо образом. В другом конкретном варианте осуществления пользователь указывает намерение редактирования непосредственно. Это указание можно сделать посредством специализированной команды «редактировать», вводимой в приложение, или реализовать тогда, когда пользователь просит сохранить уже сделанные изменения. В еще одном конкретном варианте осуществления установление намерения редактирования - это установление того факта, что упомянутый файл уже открыт пользователем в течение предварительно определенного периода времени. Например, если пользователь держит файл открытым в режиме только чтения уже десять минут, то можно сделать вывод, что этот пользователь намеревается редактировать файл.
В одном конкретном варианте осуществления, когда происходит блокировка, устанавливают, является ли копия файла в кэш-памяти пользовательского компьютера 230 той же самой версией, что и версия, находящаяся в текущий момент на сервере. Это означает гарантию, что в промежутке не было редакционных изменений. Например, Пользователь А открывает первую версию файла, но не демонстрирует намерение редактировать (и, следовательно, не запускает блокировку). Если Пользователь А затем запускает блокировку, демонстрируя намерение редактировать, то должно быть гарантировано, что версия файла, находящаяся в текущий момент на сервере, является той же самой, которую просматривает и намеревается редактировать Пользователь А. Если Пользователь В открыл и изменил файл, находящийся на серверном компьютере 200, в некоторый момент между моментом открытия файла Пользователем А и моментом демонстрации Пользователем А намерения редактировать, то может возникнуть конфликт. Опции разрешения конфликта должны быть представлены пользователю.
Например, Пользователь А может внести существенные изменения в файл и может решить, что эти изменения должны заменить все изменения, сделанные в промежутке. Тогда версия, находящаяся на пользовательском компьютере 230, записывается в серверный компьютер 200 в виде файла 210, а этот файл блокируется, так что Пользователь А имеет привилегии чтения и записи. В альтернативном варианте Пользователь А может решить сохранить версию, которую этот Пользователь А локально создает на своем рабочем месте, в качестве другого файла, и повторно открыть файл 210, находящийся на серверном компьютере 200, для редактирования. Пользователю также могут быть представлены другие опции разрешения конфликта.
Чтобы установить, является ли копия файла в пользовательском компьютере 230 той же самой версией, что и версия файла 210, находящаяся в текущий момент на сервере, можно сохранять и сравнивать информацию о версиях. Эта информация может включать в себя номер версии, время и дату запоминания сохраненной информации или другие данные о версиях. В альтернативном варианте можно провести полное сравнение фактически имеющегося файла 210 и кэшированной версии в пользовательском компьютере 230, чтобы определить, является ли содержимое файла одинаковым в обоих случаях.
В альтернативном конкретном варианте осуществления, в котором пользователь не копирует файл 210 в пользовательский компьютер 230, а вместо этого открывает его непосредственно из серверного компьютера 200, когда происходит событие переключения по намерению редактирования, для этого пользователя предоставляется блокировка при редактировании файла 210.
Как показано на фиг.3, получение запроса открытия файла происходит на этапе 300. На этапе 310 открывают файл. В одном конкретном варианте осуществления файл открывают непосредственно из сервера в режиме «только чтение»; в альтернативном варианте осуществления создают и открывают копию файла. На этапе 320 устанавливают, что произошло событие переключения в режим редактирования. Это событие переключения в режим редактирования может представлять собой сохранение пользователем изменений, внесенных в локальную копию файла, если она была создана. Это событие переключения в режим редактирования также может представлять собой попытку пользователя изменить файл, когда серверная копия была открыта только для чтения. Это событие переключения в режим редактирования также может представлять собой истечение предварительно определенного периода времени, указание «редактировать», полученное от пользователя, или любое другое событие, которое влечет за собой блокировку файла сервера для редактирования.
На этапе 330 файл блокируют. Это обеспечивает блокировку находящейся на сервере копии файла, позволяя пользователю вносить изменения без возможности внесения конфликтующих изменений.
Как показано на фиг.4, в одном конкретном варианте осуществления можно реализовать разрешение конфликта. Аналогично пояснению, соответствующему фиг.3, первый этап 410 происходит, когда принимают запрос открытия файла. На втором этапе 420 создают локальную копию файла и открывают эту локальную копию для редактирования. На третьем этапе 430 устанавливают, произошло ли событие переключения в режим редактирования. Затем на этапе 440 проводят сравнение, чтобы установить, является ли версия файла, находящаяся на сервере, той же, что и версия, которая получена копированием на этапе 420. Если это одна и та же версия, то на этапе 450 файл блокируют. Если пользователь внес изменения в локальную копию файла, то находящуюся на сервере копию этого файла можно обновить, чтобы отразить эти изменения. Если версия изменилась, то на этапе 460 пользователю предоставляют опции разрешения конфликта. Это может привести к блокировке файла на этапе 450, но может привести и к другим опциям разрешения конфликта.
Таким образом, открыть файл могут одновременно несколько пользователей, и все они могут пользоваться содержанием файла. Вместе с тем, если какой-нибудь пользователь захочет изменить файл, то для этого пользователя осуществится блокировка, и он получит привилегии чтения и записи для работы с этим файлом.
Заключение
Как упоминалось выше, хотя возможные конкретные варианты осуществления настоящего изобретения описаны в связи с различными вычислительными устройствами и сетевыми архитектурами, идеи, заложенные в основу изобретения, могут быть применены к любому вычислительному устройству или любой вычислительной системе, в котором или в которой желательно реализовать инициирование совместной работы, проводимой на базе сервера. Таким образом, способы и системы согласно настоящему изобретению могут быть применены во множестве приложений и устройств. Хотя в данном описании в качестве отображающих различные варианты выбора упомянуты возможные языки программирования, названия и примеры программных средств, эти языки программирования, названия и примеры не следует считать носящими ограничительный характер. Обычный специалист в данной области техники поймет, что существуют многочисленные пути разработки кода объектов, который позволяет реализовать системы и способы, являющиеся теми же самыми, аналогичными или эквивалентными системам и способам, создание которых является целью этого изобретения.
Различные технические приемы, описанные выше, можно реализовать в связи с аппаратным обеспечением или программным обеспечением, или если это приемлемо в связи с комбинацией аппаратного обеспечения и программного обеспечения. Таким образом, способы и устройства согласно настоящему изобретению или их некоторые аспекты или части могут принимать форму кода (т.е. команд) программы, воплощенного на материальных носителях, таких как гибкие диски, память на компакт-дисках (CD-ROM), накопители на жестких дисках или любой другой считываемый компьютером носитель информации, при этом, когда код программы загружают в машину, такую как компьютер, и исполняют с помощью этой машины, она становится устройством для практического осуществления изобретения. В случае выполнения кодов программ на программируемых компьютерах вычислительное устройство будет в общем случае включать в себя процессор, носитель информации, считываемый процессором (включая энергозависимые и энергонезависимые запоминающие и хранящие элементы), по меньшей мере, одно устройство ввода и, по меньшей мере, одно устройство вывода. Одна или более программ, которые могут использовать услуги обработки сигналов согласно настоящему изобретению, например, за счет использования программного интерфейса приложения (API), обеспечивающего обработку данных, и т.п., в предпочтительном варианте записываются на процедурном или объектно-ориентированном языке программирования высокого уровня для осуществления связи с компьютером. Вместе с тем, если это желательно, то программу (программы) можно записать на языке ассемблера или машинном языке. В любом случае этот язык может быть компилируемым или интерпретируемым языком и может использоваться совместно с реализациями аппаратного обеспечения.
Способы и устройства согласно настоящему изобретению также можно реализовать на практике посредством передачи сообщений, воплощенных в форме кода программы, который передается через некоторую среду передачи, например по электрическим проводам или кабелям, по волоконно-оптическим кабелям, или посредством передачи в любой другой форме, при этом, когда код программы принимается и загружается в машину и исполняется этой машиной, например, в ее стираемом программируемом постоянном запоминающем устройстве (EPROM), вентильной матрице, программируемом логическом устройстве (PLD), либо клиентским компьютером, видеомагнитофоном, и т.п., или принимающей машиной, обладающей функциональными возможностями обработки сигналов, такая машина, как описано выше в связи с возможными конкретными вариантами осуществления, становится устройством для практического воплощения изобретения. При воплощении в процессоре общего назначения код программы объединяется с процессором, что позволяет получить уникальное устройство, которое работает, активизируя функциональные возможности настоящего изобретения. Кроме того, любые способы хранения информации, используемые в связи с настоящим изобретением, могут неизменно предусматривать наличие комбинации аппаратного и программного обеспечения.
Хотя настоящее изобретение описано в связи с предпочтительными конкретными вариантами его осуществления, представленными на различных чертежах, следует понять, что можно использовать другие аналогичные конкретные варианты осуществления или вносить изменения, дополнения в описанный конкретный вариант осуществления для выполнения той же самой функции настоящего изобретения в рамках его объема. Кроме того, следует подчеркнуть, что предусматривается возможность применения на множестве компьютерных платформ, включая операционные системы карманных устройств и другие операционные системы прикладной ориентации, и это особенно важно в связи с продолжающимся быстрым увеличением количества устройств в беспроводных сетях. Поэтому не следует считать настоящее изобретение сводящимся к какому-либо одному конкретному варианту осуществления, а нужно рассматривать изобретение в рамках существа и объема притязаний в соответствии с прилагаемой формулой изобретения.
Класс G06F21/00 Устройства защиты компьютеров или компьютерных систем от несанкционированной деятельности
Класс G06F17/24 редактирование, например, вставка/удаление
Класс G06F12/00 Выборка, адресация или распределение данных в системах или архитектурах памяти