Синхронизация в реальном времени данных xml между приложениями

Иллюстрации

Показать все

Изобретение относится к компьютерной технике, конкретнее к системе синхронизации данных. Техническим результатом является обеспечение возможности бесконфликтного сохранения данных, ассоциированных с документами, за счет синхронизации. Система содержит: внутренний потребитель данных, который конфигурирован для создания и редактирования документа, и взаимодействия со структурированными элементами данных, внутренний стек отмены, ассоциированный с внутренним потребителем данных, внешние потребители данных, которые конфигурированы для взаимодействия со структурированными элементами данных, множество внешних стеков отмены, причем каждый внешний стек отмены ассоциирован с каждым внешним потребителем данных, хранилище данных, которое конфигурировано для хранения структурированных элементов данных, причем хранилище данных содержит: API-брокер, который конфигурирован для взаимодействия с внешними потребителями данных и внутренним потребителем данных. 3 н. и 16 з.п. ф-лы, 8 ил.

Реферат

Предпосылки изобретения

Пользователи компьютеров привыкают к дружественным пользователю приложениям программного обеспечения, которые помогают им осуществлять запись, вычисления, организацию, подготавливать презентации, посылать и принимать электронную почту, создавать музыку и т.д. Например, приложения по обработке текстов позволяют пользователям подготавливать множество полезных документов. Приложения электронных таблиц позволяют пользователям вводить данные, манипулировать данными и организовывать данные. Приложения презентаций слайдов позволяют пользователям создавать различные презентации слайдов, содержащие текст, изображения, данные или другие полезные объекты.

Однако документы, создаваемые такими приложениями (например, документы текстовой обработки, электронные таблицы, документы представления слайдов), имеют ограниченные возможности для хранения/транспортировки контента произвольных метаданных, требуемых контекстом документов. Например, решение, построенное на основе документа текстовой обработки, может потребовать хранения данных технологического потока, которые описывают различные состояния документа, например, предыдущие состояния утверждения технологического потока (даты, времена, имена), текущие состояния утверждения, будущие состояния утверждения технологического потока перед завершением, имя и адрес офиса автора документа, изменения документа и т.п. Опции для хранения этой информации главным образом ограничены использованием переменных документов или существующих пользовательских свойств документов, связывающих и встраивающих объекты (OLE), которые имеют ограничения. Например, иерархические данные не могут быть сохранены; длина символа ограничена и т.п. Свойства для таких методов сохранены в отдельном хранилище, например хранилище OLE-свойств, что означает, что свойства имеют возможность конфликтования. Кроме того, такие сохраненные свойства не имеют подтверждения истинности данных. Для пользователей таких приложений и связанных документов является затруднительным сохранять произвольные данные с документами, что является общей потребностью многих пользователей.

Сущность изобретения

Данное краткое описание сущности изобретения предоставлено для введения выбора концепций в упрощенной форме, которые далее детализированы в последующем детальном описании. Настоящее краткое описание сущности изобретения не предназначено для идентификации ключевых особенностей или существенных признаков заявленного изобретения и не предполагается для использования при определении объема заявленного изобретения.

Одно или более хранилищ данных поддерживаются отдельно от основного запоминающего устройства (ЗУ) презентации в документе для хранения, связывания и для разрешения использования произвольных данных, которые ассоциированы с генерированным компьютером документом, между множеством потребителей данных. Данные для структурирования информации, ассоциированной с документом, такие как метаданные документа, поддерживаются в хранилище данных, где поддерживаются соотношения между различными частями данных. Хранилище данных предоставляет интерфейсы программирования приложений (API) для различных частей данных в хранилище данных для разрешения различным потребителям данных получать доступ и работать с одной или более частями данных в реальном времени. Множество потребителей данных могут получать доступ и редактировать те же самые части данных одновременно, и любые конфликтующие изменения в отношении данной части данных разрешаются. Каждый потребитель данных может принимать или отклонять изменения, а также выполнять дополнительные изменения побочных эффектов как результат исходного изменения. Таким способом данные могут быть синхронизированы в реальном времени среди потребителей данных.

Части данных могут быть структурированы в соответствии с языком разметки, таким как расширенный язык разметки (XML). Схемы XML могут быть ассоциированы с каждой частью данных, и хранилище данных может автоматически подтверждать структуру данных XML на основе схемы XML, ассоциированной с данной частью данных. Это способствует тому, что недействительные изменения не допускаются для ввода в систему.

Краткое описание чертежей

Фиг.1 - примерная вычислительная архитектура для компьютера;

Фиг.2 - блок-схема, иллюстрирующая соотношение между одним или более клиентских приложений и одним или более хранилищ данных и контентом хранилищ данных;

Фиг.3 - блок-схема, показывающая взаимодействие между внутренними и внешними потребителями данных с хранилищами данных XML;

Фиг.4 - иллюстрация примера синхронизации реального времени;

Фиг.5 - иллюстрация взаимодействия между двумя клиентами и хранилищем данных XML;

Фиг.6 - блок-схема, показывающая взаимодействие между двумя внешними потребителями данных и изменением в хранилище данных XML;

Фиг.7 - процесс, связанный с множеством изменений побочных эффектов; и

Фиг.8 - процесс, показывающий, что побочные эффекты запрашивающей стороны исполняются последними, в соответствии с аспектами настоящего изобретения.

Детальное описание

Со ссылками на чертежи, на которых одинаковые ссылочные позиции представляют подобные элементы, ниже описаны различные аспекты настоящего изобретения. В частности, фиг.1 и соответствующее описание предназначены для предоставления краткого, обобщенного описания подходящей вычислительной среды, в которой могут быть реализованы варианты осуществления настоящего изобретения.

В общем случае программные модули включают в себя стандартные программы, программы, объекты, компоненты, структуры данных и т.п. для выполнения конкретных задач или реализации конкретных абстрактных типов данных. Другие конфигурации вычислительных систем могут также использоваться, включая портативные устройства, мультипроцессорные системы, основанные на микропроцессорах системы или программируемую бытовую электронику, миникомпьютеры, универсальные компьютеры (мэйнфреймы) и т.п. Также могут использоваться распределенные вычислительные среды, где задачи выполняются удаленными устройствами обработки, которые связаны коммуникационной сетью. В распределенной вычислительной среде программные модули могут располагаться как на локальных, так и на удаленных запоминающих устройствах.

В описании и формуле изобретения следующие термины имеют значение, ассоциированное с ними в данном документе, если только контекст термина не диктует иное.

Термин «презентация» относится к просматриваемой части документа, такой как текст и компоновка, которые представлялись бы, если бы документ был распечатан.

Термин «тег» относится к символам, вводимым в документ, который ограничивает элементы в документе XML. Каждый элемент может иметь не более двух тегов: начальный тег и конечный тег. Возможно иметь пустой элемент (без контента), и в этом случае допустим один тег.

Термины «язык разметки» или «ML» относятся к языку для специальных кодов в документе, которые определяют, как интерпретировать части документа приложением. В файле текстового процессора язык разметки определяет, каким образом текст должен быть сформатирован или скомпонован.

Термин «элемент» относится к базовому блоку документа XML. Элемент может содержать атрибуты, другие элементы, текст и другие области контента для документа XML.

Контент XML между тегами рассматривается как «потомок» элемента. Следовательно, другие элементы, вложенные в контент элемента, называются «дочерними элементами» или «дочерними узлами» элемента. Текст, встроенный прямо в контент элемента, рассматривается как «дочерние текстовые узлы» элемента. Совместно дочерние элементы и текст в элементе образуют «контент» элемента.

Термин «атрибут» относится к дополнительному свойству, установленному на конкретное значение и ассоциированному с элементом. Элементы могут иметь произвольное число настроек атрибутов, ассоциированных с ними, включая их отсутствие. Атрибуты используются для ассоциирования дополнительной информации с элементом, который не будет содержать дополнительных элементов или будет интерпретироваться как текстовый узел.

Термин «XPath» является оператором, который использует выражение шаблона для идентификации узлов в документе XML. Шаблон XPath является отделенным слэшем списком имен дочерних элементов, который описывает путь через документ XML. Шаблон «выбирает» элементы, которые согласуются с путем.

Термин «изменение побочного эффекта» относится к изменению, которое делается в ответ на другое изменение.

Термин «документ» может состоять из произвольного XML, который описывает свойства, которые определены в ассоциированном типе контента, а также других языков разметки, которые могут использоваться для описания действительного наружного содержания документа.

Термин «хранилище данных XML и/или хранилище данных» относится к контейнеру в документе, таком как документ текстового процессора, документ электронной таблицы, документ представления слайдов и т.д., который предоставляет доступ для хранения и модифицирования данных (например, в формате XML), сохраненных в документе, когда файл открыт. Дополнительное определение хранилища данных XML предоставлено ниже со ссылкой на фиг.2.

Со ссылкой на фиг.1, примерная система для реализации изобретения включает в себя вычислительное устройство, такое как вычислительное устройство 100. В самой основной конфигурации вычислительное устройство 100 в типовом случае содержит, по меньшей мере, один процессорный блок 102 и системную память 104. В зависимости от точной конфигурации и типа вычислительного устройства системная память 104 может быть энергозависимой (такой как ОЗУ), энергонезависимой (такой как ПЗУ, флэш-память и т.д.) или некоторой комбинацией обоих типов. Системная память 104 в типовом случае содержит операционную систему 105, одну или более прикладных программ 106 и может включать в себя программные данные 107. В одном варианте осуществления прикладная программа 106 может включать в себя приложение 120 текстового процессора. Эта базовая конфигурация иллюстрируется на фиг.1 компонентами в пределах пунктирного контура 108.

Вычислительное устройство 100 может содержать дополнительные признаки или функциональные средства. Например, вычислительное устройство 100 может также содержать дополнительные ЗУ данных (съемные или несъемные), такие, например, как магнитные диски, оптические диски, магнитная лента. Такое дополнительное ЗУ иллюстрируется на фиг.1 съемным ЗУ 109 и несъемным ЗУ 110. Компьютерные носители для хранения данных могут включать в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым методом или технологией для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули и другие данные. Системная память 104, съемное ЗУ 109 и несъемное ЗУ 110 являются примерами компьютерных носителей для хранения данных. Компьютерные носители для хранения данных включают в себя, без ограничения указанным, ОЗУ, ПЗУ, ЭСППЗУ, флэш-память и другие технологии памяти, ПЗУ на компакт-дисках (CD-ROM), цифровые многофункциональные диски (DVD) или другие устройства памяти на оптических дисках, магнитные кассеты, магнитную ленту, устройства памяти на магнитных дисках или другие магнитные запоминающие устройства, или любые другие носители, которые могут быть использованы для хранения полезной информации, и к которым может обращаться вычислительное устройство 100. Любые такие компьютерные носители для хранения данных могут быть частью устройства 100. Вычислительное устройство 100 может также включать в себя устройства ввода 112, такие как клавиатура, мышь, перо, устройство речевого ввода, устройство сенсорного ввода и т.д. Также могут быть включены устройства 114 вывода, такие как дисплей, динамики, принтер и т.д. Эти устройства хорошо известны в технике и не требуют детального описания.

Вычислительное устройство 100 может также содержать коммуникационные соединения 116, которые позволяют устройству осуществлять связь с другими вычислительными устройствами 118, например, через сеть. Коммуникационные соединения 116 являются примером коммуникационных сред. Коммуникационные среды в типовом случае воплощают считываемые компьютером команды, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущее колебание или другой транспортный механизм, и включают в себя любую среду доставки информации. Термин «модулированный сигнал данных» означает сигнал, у которого одна или более из его характеристик установлена или изменяется таким способом, чтобы кодировать информацию в сигнале. В качестве примера, но не ограничения, коммуникационные среды включают в себя проводные среды, такие как проводные сети или прямые проводные соединения, и беспроводные среды, такие как акустические, радиочастотные и инфракрасные и другие беспроводные среды. Термин «машиночитаемые носители», как он используется в настоящем документе, включает в себя как носители для хранения данных, так и коммуникационные среды.

Ряд программных модулей и файлов данных могут быть сохранены в системной памяти 104 вычислительного устройства 100, включая операционную систему, подходящую для управления работой соединенного в сеть персонального компьютера, такую как операционная система WINDOWS от корпорации MICRОSOFT (Redmond, Washington). Системная память 104 также может хранить один или более программных модулей, таких как приложение 120 текстового процессора, и других, описанных ниже. Приложение 120 текстового процессора действует для предоставления функциональности для создания, редактирования и обработки электронных документов.

Согласно одному варианту осуществления изобретения приложение 120 текстового процессора содержит программу WORD от корпорации MICRОSOFT. Однако понятно, что могут быть использованы другие приложения текстовых процессоров от других производителей. Иллюстрация приложения текстового процессора приведена только в качестве примера и не ограничивает другие типы приложений, которые могут создавать документы и воздействовать на них. Например, другие прикладные программы 106, которые способны обрабатывать различные формы контента (например, текст, изображения, картинки и т.д.), такие как прикладные программы электронных таблиц, прикладные программы баз данных, прикладные программы представлений слайдов, прикладные программы рисования или автоматизированные прикладные программы и т.д., применимы равным образом. Примером прикладной программы 106, которая создает и обрабатывает различные документы разных типов, является OFFICE от корпорации MICRОSOFT.

Варианты осуществления могут быть реализованы как компьютерный процесс, вычислительная система или как изделие производства, такое как компьютерный программный продукт или машиночитаемые носители. Компьютерный программный продукт может быть компьютерным носителем для хранения данных, считываемым компьютерной системой и кодирующим компьютерную программу инструкций для исполнения компьютерного процесса. Компьютерный программный продукт может также быть распространяемым сигналом на несущей, считываемым вычислительной системой и кодирующим компьютерную программу инструкций для исполнения компьютерного процесса.

На фиг.2 показана блок-схема, иллюстрирующая соотношение между одним или более клиентских приложений и одним или более хранилищ данных и контентами хранилищ данных. Описывая в обобщенном виде, одно или более хранилищ данных поддерживаются отдельно из основного ЗУ презентации в документе для хранения, связывания или для разрешения использования произвольных данных среди потребителей данных, которые ассоциированы с созданным компьютером документом. Данные для структурирования информации, ассоциированной с документом, такие как метаданные документа, поддерживаются в хранилище данных, где поддерживаются соотношения между различными частями данных. Хранилище данных открывает интерфейсы программирования приложений (API) к различным частям данных в хранилище данных, чтобы позволить различным приложениям получать доступ и обрабатывать одну или более частей данных. Как использовано в настоящем документе, термины «потребители данных», «приложения» и «процессы» могут использоваться взаимозаменяемым образом, если только из контекста явно не следует иное.

Части данных могут быть структурированы в соответствии с языком разметки, таким как расширяемый язык разметки (XML). Схемы XML могут быть ассоциированы с каждой частью данных, и хранилище данных может подтверждать подлинность структуры XML, применяемой для данных, на основе схемы XML, ассоциированной с конкретной частью данных, чтобы обеспечивать действительность для каждого запроса. Хранилища данных могут содержать любое число произвольных элементов данных, например, метаданных, структурированных в соответствии с расширяемым языком разметки (XML). Соответственно, провайдеры решений документов могут хранить произвольные метаданные как XML с данным документом и иметь информацию, обработанную данным решением, получая доступ к данным после возникновения события, такого как удаление или загрузка данных в хранилище данных, и/или когда документ открывается/редактируется/сохраняется пользователем.

Программируемый доступ также обеспечивается к данным в их форме XML, когда документ редактируется. В соответствии с одним вариантом осуществления предоставляется стандартный механизм, который знаком разработчикам решений, посредством которого к данным может быть получен доступ, и они могут быть модифицированы программным образом, когда документ открыт. Этот программный доступ предназначен для имитации стандартных API XML. Программный доступ к данным обеспечивается посредством интерфейсов программирования приложений к одному или более клиентских приложений редактирования (например, приложений создания или редактирования документов и/или расширительных решений приложений третьей стороны и т.д.). Соответственно, множество клиентских приложений могут получать доступ и редактировать ту же самую часть данных, причем любые конфликтующие изменения для конкретной части данных разрешаются. Потребители данных могут осуществлять изменения побочных эффектов в ответ на любое данное изменение. Например, в ответ на установку имени компании на «Microsoft», потребитель данных может изменить символ акций (стандартное обозначение) на «MSFT». В дополнение, изменения данных и ассоциированные побочные эффекты могут быть «скомплектованы» хранилищем данных так, что отмена одного или более изменений реверсирует все связанные изменения. Это помогает в устранении затрат на разработку у самого потребителя данных, чтобы гарантировать, что он реверсировал все изменения, когда пользователь инициирует операцию отмены исходного изменения из наружного представления документа, например, посредством ввода команды «отмена».

Стандартные схемы XML (XSD) могут также использоваться для определения контентов любой из частей пользовательских данных XML, ассоциированных с метаданными документа, чтобы гарантировать, что данные XML, применимые к данным документа, действительны. Эти схемы могут быть присоединены к любому экземпляру данных XML, сохраненных в документе, и хранилище данных может быть конфигурировано для запрета любого изменения данных XML, которое привело бы к тому, что структура XML (то есть теги XML, в противоположность их контентам) для этих данных стала недействительной. Это помогает гарантировать, что разработчик решения может прикрепить конкретную часть метаданных XML к документу и обеспечить то, что данные XML будут продолжать оставаться структурно «корректными» в соответствии с ассоциированной схемой, независимо от того, какие потребители данных (например, расширения) использованы для модифицирования этих данных. Схема может быть сохранена на машиночитаемом носителе, например, в файле или в накопителе на жестком диске.

Согласно фиг.2 данные 220 документа включают в себя данные структуры XML и ассоциированные данные документа, представляющие «поверхность» или представление уровня презентации документа. Например, данные 220 документа могут включать в себя структуру XML (например, теги заголовка, теги тела, теги вывода) и ассоциированные данные представления поверхности (наружного вида) (например, слова, предложения, абзацы) документа текстовой обработки, документа электронной таблицы, документа представления слайда и т.д.

Хранилище 208 данных является хранилищем данных документа для хранения одной или более частей структурированных данных, ассоциированных с одним или более типами данных, ассоциированных с данным документом. Хотя показано только одно хранилище данных, может использоваться более одного хранилища данных. Метаданные 225 (элемент структурированных данных) могут включать в себя структуру данных XML и ассоциированные данные для первой части метаданных, ассоциированных с документом. Например, метаданные 1 (225) могут включать в себя данные структуры XML (например, теги данных, теги имени и т.д.), перечисляющие автора документа, дату создания документа, дату последнего изменения/сохранения документа и т.д. Метаданные 2 (230) (элемент структурированных данных) могут включать в себя данные структуры XML (теги) и ассоциированные метаданные, представляющие вторую часть метаданных, ассоциированных с документом. Метаданные 1 и метаданные 2 приведены только для примера, но не в качестве ограничения различного числа разных типов данных, которые могут поддерживаться в хранилище 208 данных в связи с данным документом. Например, как описано здесь, произвольные данные могут быть структурированы и добавлены в документ посредством одного или более приложений программного обеспечения, как это желательно разработчикам решений или пользователям, имеющим доступ к данным документа.

Файл 240, 245 схемы может факультативно присоединяться к каждой части данных, сохраненных в хранилище 208 данных, для определения синтаксиса или правил подтверждения подлинности, ассоциированных с данными XML, применимыми к каждой части данных 225, 230. Файлы схемы XML обеспечивают способ описания и подтверждения данных в среде XML. Файл схемы устанавливает, какие данные разметки XML, включая элементы и атрибуты, используются для описания контента в документе XML, и файл схемы определяет синтаксис разметки XML, включая то, где каждый элемент разрешен, какие типы контента разрешены в элементе, и какие элементы могут появляться в других элементах. Использование файлов схемы гарантирует, что документ (или индивидуальная часть данных) структурирован непротиворечивым и предсказуемым образом. Файлы 240, 245 схемы могут быть созданы пользователем и в общем поддерживаться ассоциированным языком разметки, таким как XML.

Эта схематизация документа позволяет хранилищу данных обеспечивать возможность «гарантировать» структурную подлинность документа путем отклонения любых изменений, которые нарушают данную схему файла на уровне хранилища данных. Согласно одному варианту осуществления хранилище 208 данных использует модуль 260 подтверждения правильности схемы для подтверждения правильности структуры XML, добавленной к конкретной части данных, или изменений, внесенных в конкретную часть данных, по отношению к ассоциированному файлу схемы. Например, если создатель или редактор документа выполняет структурные изменения XML в конкретной части данных, например, метаданных 1, причем редактор добавляет или удаляет заданный тег XML, то хранилище 208 данных будет использовать модуль 260 подтверждения правильности схемы для проверки структурных изменений XML по отношению к ассоциированному файлу схемы, чтобы гарантировать действительность изменения. Если изменение не действительно, то для редактора может быть сформировано сообщение об ошибке. Понятно, что такой контроль структуры XML, примененный к конкретной части данных, обеспечивает структурную непротиворечивость и предсказуемость, которые особенно важны для обеспечения возможности приложениям клиента и третьей стороны взаимодействовать с ассоциированными данными. Любой потребитель данных может обеспечить схему, которая может быть использована для проверки правильности данных.

Хранилище 208 данных обеспечивает один или более интерфейсов программирования приложений (API) 270, к которым могут обращаться клиентские приложения 205 (например, приложения текстовой обработки, приложения электронных таблиц, приложения презентации слайдов и т.д.), а также приложения 210, 215 третьей стороны через модели объектов (ОМ) соответствующих приложений 210, 215. Эти API позволяют клиентским приложениям и приложениям третьей стороны загружать любой существующий файл XML в хранилище 208 данных конкретного документа, тем самым обеспечивая, что данные теперь становятся частью документа и будут перемещаться внутри этого документа в течение его срока жизни (например, во время открытия/редактирования/сохранения/ переименования и т.д.) или до тех пор, пока данные не будут удалены из хранилища. Соответственно одному варианту осуществления изобретения, данные в хранилище данных доступны в их формате XML, даже если исходное приложение для конкретной части данных 225, 230 закрыто или иным образом не доступно. То есть доступ к конкретной части данных 225, 230 может быть получен через набор API. Как описано ниже, API также позволяют приложениям клиента и третьей стороны выполнять изменения в данных разметки XML, применительно к элементам данных 225, 230.

Как только данные 225, 230 XML загружены в хранилище данных для ассоциирования с документом 220, ими можно манипулировать, как стандартным XML

с использованием интерфейсов хранилища данных, предназначенных для предоставления подобных методов для существующих интерфейсов редактирования XML, чтобы сбалансировать существующие знания разработчиков стандарта программирования XML. Это позволяет пользователям выполнять стандартные операции XML над данными XML, добавленными к хранилищу данных для документа, такими как добавление элементов и атрибутов, удаление элементов и атрибутов, изменение значения существующих элементов и атрибутов и считывание значений любой существующей части ассоциированного дерева XML. С использованием этих стандартных операций XML решения могут хранить структурированные комплексные метаданные с документом. Например, приложение 215 третьей стороны может быть написано для нахождения и извлечения имен авторов документов и дат создания документов из ряда документов путем считывания метаданных 225, добавленных к хранилищу 208 данных для каждого документа. Примерное приложение третьей стороны может быть приложением, запрограммированным для создания списка имен авторов документов и дат создания документов из всех документов, созданных конкретной организацией. В соответствии с вариантами осуществления настоящего изобретения приложение третьей стороны может использовать структуру XML, примененную к метаданным, для эффективного нахождения и извлечения желательных данных. Например, приложение третьей стороны может быть написано для анализа структуры XML файла метаданных для нахождения тегов XML, таких как <docauthor> (автор документа) <doccreationdate> (дата создания документа) для получения и использования данных, связанных с этими тегами. Можно понять, что приведенное выше является только примером множества способов, которыми одно или более приложений может взаимодействовать со структурированными данными, которые ассоциированы с документом в хранилище 208 данных.

Кроме того, хранилище 208 данных обеспечивает любое число API 270 для любой индивидуальной части данных XML 220, 225, 230 (также известных как элемент хранения) для обеспечения возможности множеству приложений 205, 210, 215 работать с одними и теми же частями данных. Например, различные решения, такие как клиентское приложение (например, приложение текстовой обработки), и решения приложений третьей стороны (например, описанные выше приложения третьей стороны), могут работать с одним и тем же набором свойств документа (например, свойствами, содержащимися в файле метаданных 2 230). Используя хранилище 208 данных, каждое из этих приложений получает отдельный доступ к желательным данным XML 230 через свой собственный API 270 с хранилищем данных для обеспечения возможности каждому приложению осуществлять информационный обмен с данными через своего собственного администратора объектов, без необходимости учитывать сложность, обусловленную присутствием множества потребителей данных, получающих доступ к той же самой части данных.

Для того чтобы позволить этому множеству приложений 205, 210, 215 получать доступ к тем же самым данным, хранилище 208 данных уведомляет каждое их этих приложений, если какая-либо часть данных XML была изменена другим приложением, так что данное приложение может ответить на это изменение (как внутренним образом к своему собственному процессу, так и внешним образом посредством других изменений тех же самых данных). Если одно приложение запрашивает изменение для конкретного элемента данных, этот запрос автоматически посылается ко всем другим приложениям, чтоб позволить им принять решение, каким образом отвечать или отвечать ли на запрошенное изменение. Согласно одному варианту осуществления это выполняется путем разрешения каждому приложению регистрировать «прослушивание» любой части данных XML, с которой оно имеет интерфейс, так что конкретное решение приложения/программа принимает только те сообщения, которые соответствуют его собственной логике. Например, одному типу приложения 210 может быть желательным регистрировать прослушивание всех изменений, выполненных для конкретных данных XML, чтобы обеспечить детальные логические возможности бизнеса для решения третьей стороны, но другому типу приложения 215 может быть желательным прослушивать только изменения одного или двух конкретных элементов XML в тех же самых данных, поскольку его логика безразлична к изменениям в любых других частях данных XML.

Согласно этому варианту осуществления множество приложений 205, 210, 215 могут обращаться и редактировать одни и те же части данных документа, и любые конфликтующие изменения в конкретной части данных разрешаются. Например, «побочные эффекты» для любого данного изменения могут быть выполнены, если одно изменение посредством одного приложения вызывает изменение побочного эффекта другим приложением. Например, первое приложение 210 может иметь задачу извлечения имен компаний из одного или более элементов данных 225, 230, ассоциированных с конкретным документом, для преобразования этих имен в символы акций, если доступно, для составления списка символов акций компании, относящегося к данному документу. Если второе приложение 215 вызывает добавление имени конкретной компании в конкретной части метаданных или его изменение, например, изменение имени компании с «компании АВС» на «компанию XYZ», то первое приложение может прослушать это изменение для автоматического обновления своего списка символов акций для включения символа акций для «компании XYZ» вместо «компании АВС». Кроме того, такие изменения и любые ассоциированные побочные эффекты могут быть скомплектованы хранилищем 208 данных так, что отмена одного или более изменений реверсирует все связанные изменения.

Фиг.3 иллюстрирует блок-схему, показывающую взаимодействие между внутренними и внешними потребителями данных с хранилищами данных XML. Как показано, система 300 содержит документ 315, хранилище 302 данных, уровень 304 презентации, хранилища 1-N (306) XML в хранилище 302 данных, каждое из которых содержит хранилище ошибки и хранилище отмены, хранилище 308 глобального изменения, факультативное глобальное хранилище 310 отмены, внутренний брокер 312, который связан с внутренними потребителями 1-N 314 данных, внешнее хранилище 320 XML и внешний брокер 316, который связан с внешними потребителями 1-N 318 данных.

Используя хранилище 302 данных и хранилища 306 данных XML, документы могут содержать любое количество произвольных элементов данных (если каждый соответствует стандартному синтаксису XML). Произвольные метаданные могут быть сохранены как XML в документе, и эта информация может быть автоматически предоставлена и возвращена, когда документ открывается, редактируется и сохраняется пользователем.

Как описано выше, программный доступ к этим данным обеспечивается через API, который может быть использован, когда документ редактируется, предоставляя стандартный механизм, знакомый разработчикам решения, через который к этой информации можно обращаться и изменять ее программным образом, когда документ открыт. Соответственно одному варианту осуществления этот программный доступ предназначен для имитации стандартных интерфейсов XML. Используя API, данные можно добавлять/удалять при выполнении приложения, такого как текстовая обработка; данные можно заполнять в элемент хранилища (часть в хранилище данных); данными можно манипулировать с использованием стандартных конструкций XML; схемы могут быть ассоциированы с любыми произвольными данными XML в хранилище данных; схемы можно добавлять, удалять, изменять после ассоциирования с элементом хранилища данных; и изменения XML могут быть сообщены любым прослушивающим клиентам. Как иллюстрируется, API содержит внешний брокер 316, который обеспечивает интерфейс для внешних потребителей 318 данных, и внутренний брокер 312, который обеспечивает интерфейс для внутренних потребителей 314 данных, которые взаимодействуют с хранилищем 302 данных.

Манипуляции в отношении хранилища 302 данных могут происходить в реальном временим. Как описано выше, хранилища 302 и 306 данных могут содержать один или более типов данных. Например, одна компания может иметь одно хранилище данных, которое используется для хранения всех различных типов данных, которые желательно хранить в одном хранилище 302 данных, в то время как другой компании может быть желательно хранить данные разных типов данных в разных хранилищах данных.

Потребитель данных (внутренний 314 и/или внешний 318) может регистрировать события, которые относятся к действиям относительно данных в хранилищах данных. Например, потребитель данных может регистрироваться для приема события, когда любой тип изменения осуществляется для одного или более хранилищ данных. Другой потребитель данных может регистрироваться для изменений, которые происходят для некоторого элемента или набора элементов в хранилище данных. Обычные события включают в себя добавление элемента, изменение элемента, удаление элемента из одного из хранилищ данных. Когда событие происходит, то каждый потребитель данных, который зарегистрировался, может реагировать на изменение, причем состояние хранилищ данных поддерживается соответственно. Во многих случаях потребитель данных не будет выполнять никаких действий, когда произошло изменение. В других случаях потребитель данных будет выполнять некоторое(ые) действие(я) в ответ на событие. Например, потребитель данных может выполнить некоторые другие изменения в хранилище данных в ответ на такое изменение, например, в ответ на изменение названия, обновляя заголовки в документе. Потребитель данных может также выполнить некоторые другие операции, которые не влияют на документ. Например, если введен символ акций (аббревиатура ценной бумаги), то потребитель данных может извлечь данные, которые ассоциированы с этим символом акций, даже если все извлеченные данные могут не отображаться в документе на уровне презентации. Потребитель данных может также отклонить изменение с использованием своей собственной логики проверки правильности. Например, если потребитель данных 1 получает изменение, которое он не принимает, то потребитель данных может возвратить брокеру флаг, указывающий, что изменение не принято. Если изменение не принято, то для изменения выполняется откат назад, вместе с любыми побочными эффектами, так что изменение не возникает вообще. Каждое хранилище 306 XML может использовать свое хранилище отмены для отмены изменений, которые оно выполнило. Аль