способы развертывания и свертывания для обеспечения управления свойствами файлов между системами объектов
Классы МПК: | G06F17/20 манипулирование данными, представленными на естественном языке G06F17/30 информационный поиск; структуры баз данных для этой цели |
Автор(ы): | КРИШНАН Прасанна В. (US), МУТХУКРИШНАН Самбави (US), АГАРВАЛ Самит Х. (US), РАМАН Балан Сетху (US), ДИМ Майкл Э. (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2004-07-27 публикация патента:
10.03.2009 |
Изобретение относится к вычислительной технике. Техническим результатом является обеспечение возможности взаимодействия и совместимости между несопоставимыми системами данных. Предоставляется система преобразования файлов, имеющая по меньшей мере один файл, ассоциированной с одним или более неструктурированными свойствами. Обработчик свойств файла манипулирует неструктурированными свойствами в соответствии с одним или несколькими структурированными свойствами, ассоциированными со средой хранилища структурированных объектов. Если неструктурированный файл должен использоваться в контексте среды хранилища структурированных объектов, операция развертывания выполняется для обновления неструктурированных свойств в файле в структурированные свойства, подходящие для работы в среде хранилища структурированных объектов. Если в отношении развернутого элемента должно быть выполнено манипулирование в среде хранилища структурированных объектов, операция свертывания или обратное преобразование выполняется для обновления свойств в файле. 4 н. и 22 з.п. ф-лы, 9 ил.
Формула изобретения
1. Реализованная на компьютере система преобразования файлов, содержащая:
файл, имеющий одно или более неструктурированных свойств,
элемент, имеющий одно или более структурированных свойств, причем этот элемент является представлением файла в виде структурированного объекта,
менеджер свойств файла, предназначенный для обеспечения обмена данными между приложениями, работающими с неструктурированным потоком байтов, и приложениями, работающими с представлением файла в виде структурированного объекта, при этом менеджер свойств файла принимает уведомление об изменении неструктурированного потока байтов файла и вызывает обработчик свойств файла с указателем на поток байтов файла, подлежащий развертыванию,
при этом обработчик свойств файла манипулирует по меньшей мере одним из преобразования для свертывания одного или более неструктурированных свойств на основе изменений в структурированных свойствах и преобразования для развертывания структурированных свойств на основе изменений в неструктурированных свойствах,
при этом обработчик свойств файла обеспечивает развертывание, когда приложение, основывающееся на интерфейсе прикладного программирования (API) для работы с файлами, изменяет неструктурированные свойства посредством обновления неструктурированного потока байтов для элемента хранилища структурированных объектов, причем элемент хранилища структурированных объектов является отображаемым в файл элементом,
при этом обработчик свойств файла выполняет по меньшей мере одно из свертывания одного или более неструктурированных свойств и сохранения развернутых структурированных свойств.
2. Система по п.1, в которой обработчик свойств файла выполняет по меньшей мере одно из извлечения и преобразования для развертывания неструктурированных свойств в структурированные свойства.
3. Система по п.1, в которой обработчик свойств файла выполняет по меньшей мере одно из извлечения и преобразования для свертывания структурированных свойств в неструктурированные свойства.
4. Система по п.1, в которой обработчик свойств файла обеспечивает операцию свертывания, когда приложение выполняет запрос в отношении элементов и изменяет эти элементы, используя Интерфейс Прикладного Программирования (API) структурированного хранилища, который манипулирует отображаемым в файл элементом.
5. Система по п.1, в которой обработчик свойств файла зарегистрирован для обработки одного или более выбранных расширений файлов.
6. Система по п.1, в которой обработчик свойств файла ассоциирован с абстрактным классом, в котором определены методы для развертывания и свертывания.
7. Система по п.6, в которой абстрактный класс включает в себя по меньшей мере одно из BaseFilePropertyHandler, метода развертывания, метода свертывания, метода первого развертывания, метода сохранения преобразованного в линейную последовательность байтов элемента, метода извлечения преобразованного в линейную последовательность байта элемента.
8. Система по п.1, дополнительно содержащая интерфейс прикладного программирования (API), который позволяет приложениям изменять отображаемые в файл элементы.
9. Машиночитаемый носитель, на котором сохранены машиночитаемые команды, предназначенные для реализации обработчика свойств файла по п.1.
10. Реализованная на компьютере система, включающая в себя процессор, для обеспечения преобразования данных и содержащая:
средства для предоставления неструктурированных свойств файла приложению структурированного хранилища, причем эти
неструктурированные свойства файла относятся к файлу, который представляет собой неструктурированный поток байтов;
средства для обеспечения обмена данными между приложениями, работающими с неструктурированными свойствами файла, и приложениями, работающими с представлением файла в виде структурированного объекта,
средства для приема уведомления об изменении неструктурированного потока байтов файла,
средства для вызова обработчика свойств файла для упомянутого файла с указателем на неструктурированный поток байтов файла, подлежащий развертыванию,
средства для преобразования неструктурированных свойств файла в структурированные свойства элемента, ассоциированные с приложением структурированного хранилища, причем структурированные свойства элемента относятся к элементу, являющемуся представлением файла в виде структурированного объекта,
средства для обеспечения операции развертывания, когда приложение, основывающееся на интерфейсе прикладного программирования (API) для работы с файлами, изменяет неструктурированные свойства посредством обновления неструктурированного потока байтов для элемента хранилища структурированных объектов, причем элемент хранилища структурированных объектов является отображаемым в файл элементом,
средства для обновления структурированных свойств элемента в приложении структурированного хранилища и
средства для сохранения обновленных структурированных свойств элемента.
11. Система по п.10, дополнительно содержащая средства для преобразования структурированных свойств элемента в неструктурированные свойства файла.
12. Реализуемый компьютером способ обеспечения преобразования элемента данных, включающий в себя этапы, на которых
осуществляют обмен данными между приложениями, работающими с потоком файла с неструктурированными свойствами, и приложениями, работающими с представлением файла в виде структурированного объекта,
изменяют файл, ассоциированный с одним или более неструктурированными свойствами, в пространстве имен структурированного хранилища посредством использования приложения, основывающегося на интерфейсе прикладного программирования (API) для работы с файлами,
принимают уведомление, относящееся к изменению соответствующего упомянутому файлу потока файла с неструктурированными свойствами,
вызывают обработчик свойств файла для упомянутого файла с указателем, соответствующим измененному потоку файла с неструктурированными свойствами, для выполнения развертывания,
выполняют операцию развертывания, когда приложение, основывающееся на интерфейсе прикладного программирования (API) для работы с файлами, изменяет неструктурированные свойства посредством обновления потока файла для элемента хранилища структурированных объектов, причем элемент хранилища структурированных объектов является отображаемым в файл элементом,
выполняют развертывание одного или более свойств, ассоциированных с файлом, для соответственного обновления структурированных свойств, ассоциированных с элементом, который ассоциирован с пространством имен структурированного хранилища, причем данный элемент является представлением файла в виде структурированного объекта в хранилище объектов,
сохраняют обновленные структурированные свойства.
13. Способ по п.12, дополнительно включающий в себя этап, на котором выполняют свертывание одного или более свойств, ассоциированных с элементом, так чтобы они были в соответствии с приложением, основывающемся на API для работы с файлами.
14. Способ по п.13, дополнительно включающий в себя этап, на котором определяют элемент для обновления в отношении частей элемента.
15. Способ по п.13, дополнительно включающий в себя этап, на котором выполняют запрос к хранилищу элементов в отношении регистрации обработчика свойств файла.
16. Способ по п.15, дополнительно включающий в себя этап, на котором загружают обработчик свойств файла в кэш.
17. Способ по п.13, дополнительно включающий в себя этап, на котором автоматически идентифицируют поля, которые должны быть обновлены.
18. Способ по п.13, дополнительно включающий в себя этап, на котором считывают изменения из элемента и обновляют неструктурированные свойства файла.
19. Способ по п.18, дополнительно включающий в себя этап, на котором выполняют по меньшей мере одно из передачи изменений элемента в хранилище и закрытия потока.
20. Способ по п.12, дополнительно включающий в себя этап, на котором регистрируют обработчик свойств файла для обеспечения развертывания одного или более неструктурированных свойств или свертывания одного или более структурированных свойств.
21. Способ по п.12, дополнительно включающий в себя этап, на котором исключают измененный элемент из очереди.
22. Способ по п.12, дополнительно включающий в себя этап, на котором извлекают структурированный элемент для пути выбранного элемента.
23. Способ по п.12, дополнительно включающий в себя этап, на котором выполняют трансформацию структуры элемента или изменение структуры элемента.
24. Способ по п.12, дополнительно включающий в себя этап, на котором автоматически извлекают одно или более неструктурированных свойств и обновляют элемент.
25. Способ по п.12, дополнительно включающий в себя этап, на котором помечают измененные части элемента как развернутые.
26. Способ по п.12, дополнительно включающий в себя этап, на котором применяют изменения в отношении элемента к хранилищу структурированных объектов.
Описание изобретения к патенту
Перекрестная ссылка
По данной заявке испрашивается приоритет заявки на Патент США №10/693.090, озаглавленной "PROMOTION AND DEMOTION TECHNIQES TO FACILITATE FILE PROPERTY MANAGEMENT BETWEEN OBJECT SYSTEMS", поданной 23 октября 2003 г. и полностью включенной в данное описание посредством ссылки.
Область техники, к которой относится изобретение
Настоящее изобретение относится в основном к компьютерным системам и конкретно - к системе и способу, которые используют обработчики свойств файла, чтобы обеспечить совместимость между неструктурированным хранением свойств файлов в потоке байтов и структурированными представлениями объектов посредством развертывания и свертывания свойств файла. Термин «элемент», используемый здесь, обычно относится к структурированному схематизированному объекту, который хранится в хранилище структурированных объектов. Отображаемый в файл элемент относится к представлению файла в виде структурированного объекта в хранилище объектов. Термин «файл» может быть использован для представления неструктурированного потока байтов, который соответствует заданному отображаемому в файл элементу.
Предшествующий уровень техники
Традиционно в компьютерной файловой системе файл является основным блоком хранения данных. Обычно файл в файловой системе имеет следующие характеристики. Файл - единая последовательность байтов. Он имеет конечную длину и хранится обычно в энергонезависимом носителе данных. Файл создается в директории и имеет имя, по которому к нему можно обратиться в файловых операциях, возможно в комбинации с путем к нему. Дополнительно файловая система может связать с файлом и другую информацию, такую как биты разрешения или другие атрибуты файла, метки времени создания файла, последнего изменения, последнего доступа к файлу и т.д. Специфические приложения могут также сохранять специфические для конкретной предметной области свойства в потоке байтов. Например, файлы, которые используются приложением обработки текстов и которые, таким образом, рассматриваются как «документы», могут сохранять свойства, такие как Заглавие и Автор документа. Эти свойства сохраняются в потоке байтов файла в формате, специфическом для приложения, создающего файл. Свойства не являются структурированными, как объекты, они также не имеют стандартизированных имен. Потоки байтов являются неструктурированными значениями. Другим примером может быть файл, который хранит музыкальный клип, содержащий некоторое количество представляющих интерес свойств, таких как Жанр, Автор, Дата Записи, Артист и т.д., сохраняемых в потоке байтов. Кроме таких метаданных имеется поток байтов, который представляет собственно музыку в некотором универсальным образом распознаваемом формате. Модель программирования при работе с этими свойствами ориентируется на манипулирование всем потоком байтов. Модель программирования является моделью связанных ссылок, результатом которой является описатель, получаемый для связываемого экземпляра (результат вызова CreateFile/OpenFile). Последующее манипулирование значением выполняется посредством ReadFile/WriteFile для извлечения и обновления соответствующих порций потока байтов.
Сущность изобретения
Ниже представлено упрощенное изложение сущности изобретения, обеспечивающее основу для понимания некоторых аспектов изобретения. Указанное изложение сущности изобретения не является подробным изложением изобретения. Оно не предполагает определение ключевых/критических элементов изобретения или очерчивания объема изобретения. Единственной целью является представление некоторых концепций изобретения в упрощенной форме как первого шага к более детальному описанию, которое будет представлено позднее.
Настоящее изобретение относится к системам и способам, обеспечивающим манипулирование файлом как структурированным объектом и как потоком байтов файла посредством обеспечения возможности хранения свойств в потоке байтов синхронизированно со свойствами представления файла в виде структурированного объекта, когда они независимо обновляются. Отметим, что имеются удобные интерфейсы прикладного программирования для манипулирования отображаемым в файл элементом в хранилище объектов, а также для манипулирования файлом как неструктурированным потоком байтов. Обработчик свойств файла предоставляется для обеспечения возможности преобразования неструктурированных свойств в файлах в представление отображаемого в файл элемента для файла и поддержания этих свойств в согласии с данным представлением через системные взаимодействия, методы и процедуры, упоминаемые как развертывание и свертывание. Развертывание активируется, когда приложение пытается модифицировать файл или манипулировать файлом с помощью прямого манипулирования потоком байтов соответствующего файла. Таким образом, развертывание является процессом, посредством которого обработчик свойств файлов обновляет структурированные свойства файла в хранилище объектов для достижения совместимости между двумя средами. Развертывание неструктурированных свойств файла в объект в хранилище структурированных объектов ставит различные проблемы, например:
а) хранилище структурированных объектов допускает эффективное запрашивание файлов на основе их свойств. В общем случае это невозможно для свойств, которые хранятся в неструктурированных потоках байтов;
б) неструктурированные свойства представляются как хорошо структурированные объекты, которые соответствуют стандартизированному представлению объектов. Таким образом, приложения могут легко работать с такими объектами, используя преимущественно модель объектно-ориентированного программирования, а не манипулирование потоком байтов.
Если в отношении развернутого отображаемого в файл элемента в хранилище объектов выполняют манипулирование и обновление, обработчик свойств файла обеспечивает процесс свертывания для выполнения обратного преобразования, чтобы обновить свойства в неструктурированном файле в соответствии с изменениями в структурированном объекте. Таким образом, развертывание и свертывание дают возможность автоматически обновлять и поддерживать свойства файла и поддерживать согласно свойствам, подходящим для имеющейся целевой системы (т.е. обновлять неструктурированные свойства до структурированных свойств через развертывание, а в обратном направлении - через свертывание).
Одним из аспектов настоящего изобретения является связующий компонент (средство управления (менеджер) свойствами файла), который взаимодействует с обработчиком свойств файла, чтобы вызвать преобразование неструктурированных свойств в потоке байтов в структурированный объект, когда приложение манипулирует свойствами и сохраняет их в неструктурированном файле. Менеджер свойств файла использует механизмы, предоставляемые хранилищем неструктурированных файлов, для отслеживания измененных неструктурированных файлов, подлежащих обновлению в хранилище объектов.
Для достижения вышеизложенных и связанных с ними целей здесь будут раскрыты некоторые иллюстративные аспекты изобретения в связи с нижеследующим описанием и прилагаемыми чертежами. Эти аспекты указывают различные пути, которыми изобретение может быть реализовано на практике, при этом подразумевается, что все они охватываются настоящим изобретением. Другие преимущества и новые признаки изобретения могут стать очевидны из следующего подробного описания изобретения, рассматриваемого совместно с прилагаемыми чертежами.
Перечень фигур чертежей
Фиг.1 - блок-схема системы преобразования файлов в соответствии с аспектом настоящего изобретения.
Фиг.2 - детализированная блок-схема системы преобразования файлов в соответствии с аспектом настоящего изобретения.
Фиг.3-6 - блок-схемы последовательности операций, иллюстрирующие автоматизированные процессы развертывания и свертывания для обработчиков свойств файла и менеджеров свойств файла в соответствии с аспектами настоящего изобретения.
Фиг.7 - диаграмма состояний для элемента в соответствии с аспектом настоящего изобретения.
Фиг.8 - блок-схема, иллюстрирующая подходящую рабочую среду в соответствии с аспектом настоящего изобретения.
Фиг.9 - блок-схема иллюстративной вычислительной среды, с которой может взаимодействовать настоящее изобретение.
Детальное описание изобретения
Настоящее изобретение относится к системе и методике для обеспечения манипулирования файлом как неструктурированным потоком байтов и структурированным объектом, посредством обеспечения их согласованности, когда один обновляется независимо от другого, через специальные интерфейсы прикладного программирования.
Обработчик свойств файла манипулирует неструктурированными свойствами в файле в соответствии с одним или несколькими свойствами структурированного объекта, ассоциированными с соответствующим отображаемым в файл элементом. Операция развертывания выполняется для обновления отображаемого в файл элемента со структурированными свойствами всякий раз, когда неструктурированный поток файла непосредственно обновляется. Подобным образом, если в отношении отображаемого в файле элемента выполнялось манипулирование и обновление с помощью интерфейсов прикладного программирования используемых в среде структурированных объектов, операция свертывания или обратного преобразования выполняется для обновления свойств в неструктурированном представлении файла.
Используемые в данном описании термины «компонент», «обработчик», «менеджер», «система» и другие подобные термины соответствуют относящейся к компьютеру сущности, т.е. либо аппаратному обеспечению, либо комбинации аппаратного и программного обеспечения, либо программному обеспечению, либо исполняющемуся программному обеспечению. Например, компонентом может быть, но не в ограничительном смысле, процесс, исполняющийся в процессоре, процессор, объект, исполняемый объект, поток исполнения, программа и/или компьютер. В качестве иллюстрации, как приложение, исполняющееся на сервере, так и сервер могут быть компонентом. Один или более компонентов могут находиться в пределах процесса и/или потока исполнения, и компонент может быть размещен на одном компьютере и/или распределен между двумя и более компьютерами.
Обратимся вначале к Фиг.1, где система 100 преобразования файла проиллюстрирована согласно концепции настоящего изобретения. Система 100 включает в себя систему или приложение 110, которая в типичном случае связана с одним или более неструктурированными файлами 120, при этом приложение 110 и файл в общем ассоциированы со средой неструктурированных файлов. Связующий модуль 130 и обработчик 140 свойств файла предоставлены для обеспечения взаимодействия и совместимости с системой или приложением 150 структурированных объектов, которое в общем ассоциировано со средой хранилища структурированных объектов. В данном примере приложение структурированной системы может быть ассоциировано с одним или несколькими схематизированными объектами 160, в типичном случае ассоциированными с кодом, таким например, как XML (расширяемый язык разметки).
Если в отношении файла должно было быть выполнено изменение, сохранение и/или манипулирование как неструктурированным файлом, связующий модуль или менеджер 130 свойств файла служит для управления преобразованием из неструктурированного файла в структурированный объект. Преобразование выполняется связующим модулем путем вызова обработчика 140 свойств файла, который, в свою очередь, выполняет операцию развертывания для преобразования неструктурированных свойств файла, в отношении которого не было выполнено управление, в структурированные свойства, ассоциированные с приложениями, которые работают в отношении структурированного хранилища 160. Если в отношении развертываемого объекта должно было быть выполнено манипулирование из приложения структурированного хранилища, тогда обработчик 140 свойств файла выполняет операцию свертывания, которая вызывает обратное преобразование свойств в свойства, которые затем обновляются в неструктурированном файле.
Согласно одному аспекту, развертывание выполняется, когда основывающееся на файлах приложение 110 продолжает изменять свойства посредством обновления потока файла, соответствующего структурированному объекту, также известному как отображаемый в файл элемент. Таким образом, развертывание может быть смоделировано как процесс обновления копии таких свойств, которые имеются в элементе в системе 160 структурированных объектов, и с целью того, чтобы элемент отражал изменения, сделанные при обновлении файла. В противоположность этому операция свертывания выполняется, когда новое приложение работает в отношении запросов структурированного хранилища и изменяет элементы, используя Интерфейс Прикладного Программирования (API) структурированных объектов, например, независимо от того, являются ли эти элементы отображаемыми в файл элементами или нет. В случае отображаемых в файл элементов некоторые из этих свойств (которые были ранее развернуты из файла) будут записаны обратно в файл. Указанный процесс назван свертыванием и является в сущности преобразованием, обратным развертыванию.
В отношении обработчика 140 свойств файла развертывание и свертывание достигаются путем вызова модуля кода, названного FPH (обработчик свойств файла), который определяет, как развертывать свойства из файла и/или свертывать свойства обратно в данный файл. FPH 140 обычно регистрируется для обработки одного или нескольких выбранных расширений файла. Заметим, что FPH 140 может принимать решение в ряде случае реализовать только функции развертывания и свертывания. Использованный ниже термин «средство развертывания» обозначает FPH, описываемый в контексте развертывания, и «средство свертывания» - как FPH в контексте свертывания.
Связующий компонент 130 (также именуемый менеджером свойств файла) взаимодействует с FPH 140 для обеспечения развертывания и свертывания. Таким образом, при приеме данных из очереди изменения развертывания (описываемую ниже), связующий компонент 130 вызывает соответствующий FPH 140 для файла с указателем на поток файла, подлежащего развертыванию. FPH 140 затем выполняет извлечение и преобразование (описываемое ниже) неструктурированных свойств в файле в структурированные свойства элемента, в отношении которого выполнено управление, который хранится в хранилище 160 структурированных объектов. В отношении свертывания API структурированных объектов вызывает средство свертывания, когда элемент обновляется в хранилище 160 структурированных объектов. Средство свертывания задействует обратное преобразование и код извлечения, чтобы записать обновленные свойства обратно в файл. Соответствующая извлечению часть FPH 140 использует API, являющийся специфическим для формата файла, с целью извлечения свойств. Заметим, что обычно имеется один зарегистрированный FPH 140, вызываемый для заданного файла.
Обратимся теперь к Фиг.2, где показана более детализированная система преобразования 200 согласно аспекту настоящего изобретения. Система 200 представляет логическую модель развертывания и/или свертывания. В данном случае один или несколько обработчиков FPH 210 размещены в управляемом коде. FPM 220 (Менеджер Свойств Файла) действует как компонент обеспечения возможности взаимодействия или связующий компонент для управляемых обработчиков FPH 210. FPM 220 обычно выполняется как отдельный процесс, отличающийся от процесса, поддерживающего реальное хранилище 230 объектов. Как показано далее, может быть обеспечен абстрактный класс BaseFilePropertyHandler, который определяет методы для развертывания и свертывания. Таким образом, обработчик 210 свойств файла моделируется как конкретный управляемый класс, производный от абстрактного класса BaseFilePropertyHandler, который реализует методы, подлежащие активации при развертывании и свертывании. Например, FPM 220 может создавать экземпляр этого класса для активации развертывания для файла с конкретным файловым расширением. Следующий код является примером, представляющим описание указанного класса:
using System;
using System. Storage;
using System.Storage.Base;
namespace System.Storage.FPM
{
struct FPMContext
{
ItemContext itmCtxt;
public string fileExtension;
};
abstract class BaseFilePropertyHandler
{
abstract public void Promote(
refItem | item, | //Файловый элемент (для записи) |
FileStream | fStream, | //Поток файла (для чтения) |
PromotionContext | ctx); | //Контекст Развертывания |
abstract public void Demote (
Item | existingItm, | //Файловый элемент (для чтения) |
FileStream | fStream, | //Поток файла (для записи) |
PromotionContext | etx); | //Контекст Развертывания |
abstract public void FirstPromote(
refItem | item, | //Файловый элемент (для записи) |
FileStream | fStream, | //Поток файла (для записи) |
PromotionContext | ctx); | //Контекст Развертывания |
abstract public void StoreSerializedItem(
Item | existingItm, | //Файловый элемент (для чтения) |
FileStream | fStream, | //Поток файла (для записи) |
PromotionContext | ctx); | //Контекст Развертывания |
abstract public void RetrieveSerializedItem(
refItem | itm, | //Файловый элемент (для записи) |
FileStream | fStream, | //Поток файла (для чтения) |
PromotionContext | ctx); | //Контекст Развертывания |
};
}
Развертывание активируется, когда приложения, которые работают с файлами, изменяют поток файла, отображаемого в файл элемента с использованием предназначенного для работы с файлами API (File). Таким образом, развертывание следует активировать, когда такое приложение используется для изменения файла в пространстве имен структурированного хранилища. Обычно не выполняется какое-либо развертывание для файлов, которые не перемещаются в пространство структурированного хранилища и которые продолжают существовать в среде неструктурированных файлов. Когда файл в пространстве имен структурированного хранилища изменяется приложением, использующим API File, менеджер 220 или служба развертывания файла асинхронно активирует FPH 210 в отношении этого файла для обновления элемента, соответствующего данному файлу. Обычно один FPH 210 зарегистрирован на каждое расширение файла. Когда имеется ожидающее обработки развертывание на отображаемом в файл элементе, флажок 'promotionStale' устанавливается в 1.
Как показано на Фиг.2, если приложение, работающее с неструктурированными файлами 200, изменяет файл 240 в пространстве структурированного хранилища 230, то FPH 210 выполняет извлечение и преобразование 250 неструктурированных свойств, перед тем как возвратить развернутый элемент, подлежащий сохранению в 230. В противоположность этому свертывание обычно активируется, когда отображаемый в файл элемент обновляется посредством API 200 структурированного хранилища. API 200 структурированного хранилища позволяет приложениям изменять один или несколько отображаемых в файл элементов или частей таких элементов. После выполнения изменения, когда приложение пытается сохранить измененный элемент(ы), используя API структурированного хранилища, метод API структурированного хранилища, который вызывается для выполнения сохранения осуществляет следующее (Метод в API структурированного хранилища, выполняющий функцию сохранения элемента, концептуально именуется здесь как метод «сохранение», хотя точное имя метода зависит от реализации).
Если отображаемый в файл элемент или его часть изменяются посредством API 200 структурированного хранилища, метод «сохранение» API структурированного хранилища осуществляет поиск средства свертывания, соответствующего отображаемому в файл элементу (на основе расширения файла) и вызывает его. Средство свертывания берет элемент (или его часть) для чтения-записи и файловый поток для записи и обновляет содержимое файла на основе изменений элемента. Свертывание обычно является синхронной операцией, так как оно активируется во время операции, которая пытается сохранить элемент в структурированном хранилище. Метод «сохранение», описанный выше, обновляет файл 240 с помощью вызова средства свертывания, а также записывает соответствующие свойства в элемент в структурированном хранилище данных.
Фиг.3-6 иллюстрируют автоматизированные процессы развертывания и свертывания для обработчиков свойств файла и менеджеров свойств файла в соответствии с аспектом настоящего изобретения. Хотя с целью упрощения изложения методики будут показаны и описаны как последовательности действий, при этом следует понимать, что настоящее изобретение не ограничено порядком действий, поскольку некоторые действия, согласно настоящему изобретению, могут происходить в другом порядке и/или параллельно с другими действиями, отличными от показанных и описанных здесь. Например, для специалиста в данной области техники должно быть ясно, что данная методика в альтернативном варианте может быть представлена как последовательность взаимосвязанных состояний и событий, (например, на диаграмме состояний). Более того, не все проиллюстрированные действия могут потребоваться для реализации методики согласно настоящему изобретению.
Фиг.3 и 4 обсуждаются одновременно, причем Фиг.3 представляет процессы для менеджера свойств файла (FPM) во время развертывания, а Фиг.4 представляет процессы для обработчика свойств файла (FPH) во время развертывания. Обычно файлы организуются в очередь для развертывания, упоминаемую как Очередь Изменения (ChangeQueue). Ниже приведены действия, используемые при развертывании после того, как менеджер свойств файла принимает отображаемый в файл элемент из Очереди Изменения. На этапе 310 FPM осуществляет поиск FPH для файла, просматривая регистрационную информацию FPH из структурированного хранилища, которому соответствует этот файл. На этапе 320 FPM загружает подходящий FPH. Например, этого можно достичь загрузкой компоновки FPH из Глобального Кэша Компоновки (Global Assembly Cache) для соответствующей машины и извлечением экземпляра класса FPH. На этапе 330 FPM начинает транзакцию и извлекает элемент из Очереди Изменения. На этапе 340 FPM извлекает элемент структурированного хранилища (I1), соответствующий файлу, который был изменен. На этапе 350 FPM выполняет развертывание путем вызова подходящего метода(ов) FPH.
После этапа 350 процесс переходит к этапу 410 по Фиг.4, относящемуся к выполняемой FPH обработке. В этой точке FPH может впервые изменить структуру элемента. На этапе 420 FPH извлекает свойства и обновляет элемент на основе этих свойств. На этапе 430 FPH помечает измененные части элемента как развернутые. После этапа 430 процесс переходит обратно к этапу 360 по Фиг.3 для последующей обработки, выполняемой FPM. На этапе 360 FPM помечает элемент как не являющийся promotionStale. На этапе 370 FPM применяет изменения к хранилищу структурированных объектов. На этапе 380 FPM выполняет фиксацию/откат транзакции и закрывает описатель файла.
Фиг.5 и 6 рассматриваются совместно, где Фиг.5 представляет процессы для функции «сохранить» структурированного хранилища (определенной ранее) во время свертывания. Фиг.6 представляет процессы для обработчика свойств файла (FPH) во время свертывания. Согласно Фиг.5, следующие действия выполняются для элемента, который был изменен. На этапе 510 функция обновления проверяет, является ли элемент отображаемым в файл элементом. Если это не так, тогда код свертывания обходится и начинается нормальная обработка для элемента, не являющегося отображаемым в файл элементом, в противном случае определяется соответствующий элемент для обновлений, выполняемых только в отношении частей элемента, которые являются отображаемыми в файл. Этого можно достичь просмотром поиска бита isFileBacked, который ассоциирован с элементом в хранилище структурированных объектов.
На этапе 520 функция «сохранить» запрашивает хранилище, где размещен отображаемый в файл элемент (он может быть и на другой машине в случае удаленного файла), с целью проверки на предмет FPH, зарегистрированного для этого расширения файла. При этом в результате выдаются подробности (например, имя и номер версии компоновки) для FPH, который развертывал файл. На этапе 530 функция «обновить» загружает соответствующий FPH (например, он может быть зарегистрирован в Глобальном Кэше Компоновки соответствующей машины) на основе указанной выше информации. На этапе 540 функция «сохранить» вызывает метод(ы) FPH для выполнения свертывания. Измененный элемент также содержит запись изменений, которые были сделаны в Элемент. Эти изменения отслеживаются API структурированного хранилища.
После этапа 540 процесс переходит к этапу 610 по Фиг.6 для последующей выполняемой FPH обработки. На этапе 610 FPH просматривает отслеженные изменения в элементе с целью идентификации того, какие поля должны быть свернуты. На этапе 620 FPH считывает изменения из элемента и записывает в свойства файла. При этом может быть также использован вызов API структурированного хранилища, чтобы прочитать другую информацию из хранилища. На этапе 630 FPH устанавливает флаг «развернут» в 1 на элементе или его частях, которые свернуты. Затем процесс переходит обратно к этапу 550 по Фиг.5 для последующей обработки, выполняемой функцией «сохранить». На этапе 550 функция «сохранить» применяет изменения, сделанные в элементе, к хранилищу. На этапе 560 функция «сохранить» закрывает поток и фиксирует транзакцию для файла.
Как указано выше, обработка может отличаться для «первого развертывания». Действие первого развертывания обычно отличается от других развертываний. Это может быть обусловлено тем, что при первом развертывании может понадобиться приведение элемента и файла в синхронизм друг с другом.
Фиг.7 иллюстрирует диаграмму состояний 700 для отображаемого в файл элемента в соответствии с аспектом настоящего изобретения. Принимая во внимание приведенное выше обсуждение, состояния для отображаемого в файл элемента представлены на диаграмме 700. API структурированного хранилища не может обновлять отображаемый в файл элемент с promotionStale=1. Бит 'promotionStale' элемента имеет значение «истина», если это отображаемый в файл элемент и имеется развертывание, ожидающее обработки в отношении данного элемента, в 710. Приложение, которое желает обновить отображаемый в файл элемент, используя API структурированного хранилища, и таким образом активирует выполнение свертывания, может действовать следующим образом:
1) Извлечение элемента.
2) Запрос в отношении того, является ли элемент 'promotionStale'.
3) Если это так
- вызов метода SynchronousPromote в API, чтобы привести элемент к соответствующему текущему моменту состояния.
Замечание: 2 или 3 являются необязательными.
4) Обновление извлеченного элемента.
5) Вызов метода «сохранить» API структурированного хранилища с целью сохранения элемента.
6) Если при сохранении свертывание успешно, то выполнение завершено.
7) Иначе.
8) Если возвращен код ошибки «Элемент является PromotionStale» (это имеет место, если приложением не выполнялись вышеописанные шаги 2 и 3).
- Вызов метода SynchronousPromote в API, чтобы привести элемент к соответствующему текущему моменту состоянию. Выдача updatedItem.
- Переход к 4, чтобы применить изменения на updatedItem.
9) Если возвращен код ошибки «Элемент обновлен»
- перейти к 4.
Обычно один FPH зарегистрирован на каждый тип файла. Однако в случае, когда формат файла расширяемый, новые свойства могут быть добавлены к неструктурированным свойствам в файле, которые не были известны FPH, когда он разрабатывался. Имеются разные схемы расширения, которые поддерживаются системой для обеспечения FPH для данного типа файла возможности расширения с целью развертывания/свертывания новых или специальных свойств, добавленных поставщиками программного обеспечения решений, отличающимися от создателей FPH, либо конечными пользователями. Это делает возможным преобразовать вновь добавленные неструктурированные свойства файла также и в новые структурированные свойства элемента. Примерные схемы расширения описаны ниже:
1. Поставщик программного обеспечения решений, который добавляет простые неструктурированные свойства к файлу и желает преобразовать их в простые структурированные свойства элемента, может сделать следующее:
а) добавить соответствующие новые простые структурированные свойства к элементу и
б) декларативно специфицировать, используя XML-схему, каким образом новые добавленные неструктурированные свойства должны быть преобразованы в новые добавленные структурированные свойства элемента.
Главный FPH, зарегистрированный для типа файла, будет реализовывать такие преобразования (как для развертывания, так и для свертывания), так что поставщику, расширяющему файл, не потребуется писать новый код.
2. Поставщик программного обеспечения решений, который добавляет неструктурированные свойства к файлу и желает преобразовать их в более сложные структурированные свойства элемента или установить отношения между элементами, может сделать следующее:
а) добавить соответствующие сложные свойства к элементу и
б) написать код, который использует API структурированного хранилища,чтобы преобразовать неструктурированные свойства в новые добавленные структурированные свойства элемента, или устанавливает отношения между элементами. Такой код будет аналогичен реализации главного FPH для данного типа файла.
3. Конечные пользователи могут добавить новые свойства к файлу. Эти свойства могут быть развернуты и свернуты в набор используемых по умолчанию свойств представления файла в виде структурированного элемента.
Согласно Фиг.8 иллюстративная среда 810 для реализации различных аспектов данного изобретения включает в себя компьютер 812. Компьютер 812 включает в себя блок 814 обработки данных, системную память 816 и системную шину 818. Системная шина 818 связывает системные компоненты, включая, но не в ограничительном смысле, системную память 816, с блоком 814 обработки данных. Блок 814 обработки данных может быть любым из разнообразных доступных процессоров. Сдвоенные микропроцессоры и другие мультипроцессорные архитектуры также могут быть использованы в качестве блока 814 обработки данных.
Системная шина 818 может относиться к любому из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину или внешнюю шину, и/или локальную шину, используя любую из разнообразия доступных шинных архитектур, включая, но не в ограничительном смысле, 16-битовую шину, шину Стандартной Промышленной Архитектуры (ISA), шину Микроканальной Архитектуры (МСА, Расширенную шину ISA (EISA), встроенный интерфейс накопителей (IDE), Локальную шину VESA (VLB), шину Межсоединения Периферийных Компонентов (PCI), Универсальную Последовательную Шину (VSB), Усовершенствованный Графический Порт (AGP), шину Международной Ассоциации Карт Памяти Персональных Компьютеров (PCMCIA) и SCSI Интерфейс Малых Компьютерных Систем (SCSI).
Системная память 816 включает в себя энергозависимую память 820 и энергонезависимую память 822. Базовая система ввода/вывода (BIOS), содержащая базовые процедуры для переноса информации между элементами компьютера 812, например, во время запуска, хранится в энергонезависимой памяти 822. В качестве иллюстрации, но не ограничения, энергонезависимая память 822 может включать в себя постоянное запоминающее устройство (ПЗУ, ROM), программируемое ПЗУ (PROM), электрически программируемое ПЗУ (EPROM), электрически стираемое программируемое ПЗУ (EEPROM) или флэш-память. Энергозависимая память 820 включает в себя оперативное запоминающее устройство (ОЗУ, RAM), которое действует как внешняя кэш-память. В качестве иллюстрации, но не ограничения, ОЗУ доступно во многих формах, таких как синхронное ОЗУ (SRAM), динамическое ОЗУ (DRAM), синхронное DRAM (SDRAM), SDRAM с удвоенной скоростью передачи данных (DDR SDRAM), усовершенствованное SDRAM (ESDRAM), Sinchlink DRAM (SLDRAM) и Direct Rambus RAM (DRRAM).
Компьютер 812 также включает в себя съемный/несъемный, энергозависимый/энергонезависимый компьютерный носитель данных. Фиг.9 иллюстрирует, например, дисковое устройство 824 хранения данных. Дисковое устройство 824 хранения данных включает в себя, но не в ограничительном смысле, устройства, подобные магнитному дисководу, дисководу для гибких дисков, устройству для магнитной ленты, дисководу Jaz, дисководу ZIP, дисководу LS-100, карте флэш-памяти или модулю памяти стандарта Memory Stick. Дополнительно, дисковое устройство 824 хранения данных может включать в себя носители данных отдельно или в комбинации с другими носителями данных, включая, но не в ограничительном смысле, дисковод для оптического диска, такой как устройство для ПЗУ компакт-диска (CDROM), дисковод для записываемого CD (CD-R), дисковод для перезаписываемого CD (CD-RW) или дисковод для цифрового многофункционального диска (DVD-ROM). Для обеспечения подсоединения дисковых устройств 824 хранения данных к системной шине 818 обычно используется интерфейс съемной или несъемной памяти, такой как интерфейс 826.
Следует понимать, что Фиг.8 описывает программное обеспечение, которое действует как посредник между пользователями и основными компьютерными ресурсами, описанными в подходящей рабочей среде 810. Такое программное обеспечение включает в себя операционную систему 828. Операционная система 828, которая может храниться в дисковом устройстве 824 хранения данных, функционирует для управления и распределения ресурсов компьютерной системы 812. Системные приложения 830 используют преимущество управленяи ресурсами операционной системой 828 посредством программных модулей 832 и программных данных 834, хранимых либо в системной памяти 816, либо в дисковом устройстве 824 хранения данных. Следует понимать, что настоящее изобретение может быть использовано с различными операционными системами или комбинациями операционных систем.
Пользователь вводит команды или информацию в компьютер 812 через устройства 836 ввода. Устройства 836 ввода включают в себя, но не в ограничительном смысле, указательное устройство, такое как мышь, шаровой манипулятор, перо, сенсорную панель, клавиатуру, микрофон, джойстик, игровую панель, спутниковую тарелку, сканер, карту ТВ-тюнера, цифровую камеру, цифровую видеокамеру, web-камеру и т.п. Названные и другие устройства ввода подсоединяются к блоку 814 обработки данных через системную шину 818 посредством интерфейсного порта(ов) 838. Интерфейсный(е) порт(ы) 838 включает в себя, например, последовательный порт, параллельный порт, игровой порт и универсальную последовательную шину (USB). Устройства 840 вывода используют некоторые из тех же самых типов портов, что и устройства 836 ввода. Так, например, USB-порт можно использовать для обеспечения ввода в компьютер 812 и для вывода информации из этого компьютера на устройство 840 вывода. Выходной адаптер 842 обеспечивает иллюстрацию того, что имеются некоторые устройства 840 вывода, подобные мониторам, динамикам и принтерам, а среди прочих устройств 840 вывода, для которых могут требоваться специальные адаптеры. Выходные адаптеры 842 включают в себя, в качестве иллюстрации, но не ограничения, видео- и звуковые карты, которые обеспечивают средства соединения между устройствами 840 вывода и системной шиной 818. Можно заметить, что другие устройства и/или системы устройств обеспечивают возможности как ввода, так и вывода данных, например удаленный компьютер(ы) 844.
Компьютер 812 может функционировать в сетевой среде, используя логические соединения с одним или несколькими удаленными компьютерами, таким как удаленный компьютер(ы) 844. Удаленный компьютер(ы) 844 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, рабочей станцией, устройством на базе микропроцессора, одноранговым устройством или другим обычным сетевым узлом, и в типичном случае включает в себя многие или все из элементов, раскрытых в связи с компьютером 812. Для простоты только запоминающее устройство 846 проиллюстрировано с удаленным компьютером(ами) 844. Удаленный компьютер(ы) 844 логически соединен с компьютером 812 через сетевой интерфейс 848 и физически соединен посредством коммуникационного соединения 850. Сетевой интерфейс 848 относится к сетям связи, таким как локальная сеть (LAN) и глобальная сеть (WAN). LAN-технологии включают в себя Распределенный Интерфейс Передачи Данных по Оптоволоконным каналам (FDDI), Распределенный Интерфейс Передачи Данных по Проводам (CDDI), Ethernet/IEEE 1102.3, TokenRing/IEEE 1102.5 и т.п. WAN-технологии включают в себя, но не в ограничительном смысле, линии связи «точка-точка», сети с коммутацией каналов, подобные Цифровой Сети Связи с Комплексными Услугами (ISDN) и ее различным вариациям, сети с коммутацией пакетов и Абонентские Цифровые Линии (DSL).
Коммуникационное соединение(я) 850 относится к аппаратному/программному обеспечению, используемому для подсоединения сетевого интерфейса 848 к шине 818. Хотя коммуникационное соединение 850 для простоты показано внутри компьютера 812, оно также может быть внешним по отношению к компьютеру 812. Аппаратное/программное обеспечение, необходимое для подключения к сетевому интерфейсу 848, включает в себя, исключительно в качестве принтера, внутренние и внешние технологии, такие как модемы, включая модемы для обычных телефонных линий, кабельные модемы, DSL-модемы, ISDN-адаптеры, Ethernet-карты.
Фиг.9 представляет блок-схему примерной вычислительной среды 900, с которой может взаимодействовать настоящее изобретение. Система 900 включает один или более клиентов 910. Клиенты 910 могут быть аппаратурой и/или программным обеспечением (например, потоки, процессы, вычислительные устройства). Система 900 также содержит один или несколько серверов 930. Серверы 930 могут вмещать потоки для выполнения преобразований посредством использования, например, настоящего изобретения. Один возможный обмен данными между клиентом 910 и сервером 930 может быть в форме пакета, адаптированного для передачи между двумя или более вычислительными процессами. Система 900 включает в себя коммуникационную инфраструктуру 950, которая может быть использована для обеспечения обмена данными между клиентами 910 и серверами 930. Клиенты 910 в рабочем состоянии соединены с одним или несколькими хранилищами данных 960 клиентов, которые могут быть использованы для хранения локальной информации клиентов 910. Аналогично, серверы 930 в рабочем состоянии соединены с одним или несколькими хранилищами данных 940 серверов, которые могут использоваться для хранения локальной информации серверов 930.
Все раскрытое выше включает примеры настоящего изобретения. Конечно, нет никакой возможности описать каждую мыслимую комбинацию компонентов или методик для целей описания настоящего изобретения, но специалисты в данной области техники могут легко представить многие возможные комбинации и перестановки, относящиеся к настоящему изобретению. Соответственно, подразумевается, что настоящее изобретение охватывает все такие альтернативы, модификации и вариации, которые попадают в рамки объема, определяемого прилагаемой формулой изобретения. Более того, в той мере, в которой термин «включает» используется либо в детальном описании, либо в формуле изобретения, он является включительным, подобно термину «содержащий», в той мере как «содержащий» интерпретируется при использовании в качестве переходного слова в формуле изобретения.
Класс G06F17/20 манипулирование данными, представленными на естественном языке
Класс G06F17/30 информационный поиск; структуры баз данных для этой цели