BRPI0615679B1 - sincronização em tempo real de dados de xml entre aplicações - Google Patents

sincronização em tempo real de dados de xml entre aplicações Download PDF

Info

Publication number
BRPI0615679B1
BRPI0615679B1 BRPI0615679A BRPI0615679A BRPI0615679B1 BR PI0615679 B1 BRPI0615679 B1 BR PI0615679B1 BR PI0615679 A BRPI0615679 A BR PI0615679A BR PI0615679 A BRPI0615679 A BR PI0615679A BR PI0615679 B1 BRPI0615679 B1 BR PI0615679B1
Authority
BR
Brazil
Prior art keywords
data
change
memory
xml
consumers
Prior art date
Application number
BRPI0615679A
Other languages
English (en)
Inventor
Taleghani Ali
M Jones Brian
Barac Dragos
Sawicki Marcin
A Little Robert
Cupala Shiraz
Original Assignee
Microsoft Corp
Microsoft Technology Licensing Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=37836499&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=BRPI0615679(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Microsoft Corp, Microsoft Technology Licensing Llc filed Critical Microsoft Corp
Publication of BRPI0615679A2 publication Critical patent/BRPI0615679A2/pt
Publication of BRPI0615679B1 publication Critical patent/BRPI0615679B1/pt
Publication of BRPI0615679B8 publication Critical patent/BRPI0615679B8/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Abstract

sincronização em tempo real de dados de xml entre aplicações uma ou mais memórias de dados são mantidas separa- damente de um armazenamento de apresentação primário dentro de um documento para armazenar, relacionar e para permitir o uso de dados arbitrários que são associados com um documento gerado pelo computador entre múltiplos consumidores de dados. a memória de dados expõe as interfaces de programação da aplicação (api) para os vários pedaços de dados na memória de dados para permitir que consumidores de dados diferentes acessem e operem em um ou mais dos pedaços de dados em tempo real. múltiplos consumidores de dados podem acessar e editar o mesmo pedaço de dados simultaneamente e quaisquer mudanças conflitantes em um dado pedaço de dados são resolvidas. cada consumidor de dados pode aceitar ou rejeitar a mudança, bem como fazer mudanças adicionais de efeito colateral como um resultado da mudança original. dessa maneira, os dados podem ser sincronizados em tempo real através dos consumidores de dados.

Description

(54) Título: SINCRONIZAÇÃO EM TEMPO REAL DE DADOS DE XML ENTRE APLICAÇÕES (51) Int.CI.: G06F 17/00 (30) Prioridade Unionista: 09/09/2005 US 60/715,986, 13/01/2006 US 11/332,468 (73) Titular(es): MICROSOFT TECHNOLOGY LICENSING, LLC (72) Inventor(es): ALI TALEGHANI; BRIAN M. JONES; MARCIN SAWICKI; ROBERT A. LITTLE; SHIRAZ CUPALA; DRAGOS BARAC (85) Data do Início da Fase Nacional: 05/03/2008
Figure BRPI0615679B1_D0001
SINCRONIZAÇÃO EM TEMPO REAL DE DADOS DE XML ENTRE APLICAÇÕES
ANTECEDENTES
Figure BRPI0615679B1_D0002
Os usuários de computador cresceram acostumados com aplicações de software convenientes para os usuários que os ajuda a escrever, calcular, organizar, preparar apresentações, enviar e receber correio eletrônico, fazer música e semelhantes. Por exemplo, aplicações de processamento de texto permitem que os usuários preparem uma variedade de documentos úteis. Aplicações de planilha permitem que os usuários insiram, manipulem e organizem dados. Aplicações de apresentação de slide permitem que os usuários criem uma variedade de apresentações de slide contendo texto, imagens, dados ou outros objetos úteis.
Os documentos criados por tais aplicações (por exemplo, documentos de processamento de texto, planilhas, documentos de apresentação de slide), entretanto, têm uma facilidade limitada para armazenar/transportar os conteúdos de metadados arbitrários requeridos pelo contexto dos documentos. Por exemplo, uma solução construída em cima de um documento de processamento de texto pode requerer o armazenamento de dados de fluxo de trabalho que descrevem vários estados do documento, por exemplo, estados de aprovação prévios do fluxo de trabalho (datas, horas, nomes), estados de aprovação atuais, estados de fluxo de trabalho futuros antes da conclusão, nome e endereço do escritório do autor do documento, mudanças no documento e semelhantes. As opções para armazenar essa informação são primariamente limitadas ac uso
Figure BRPI0615679B1_D0003
Figure BRPI0615679B1_D0004
Figure BRPI0615679B1_D0005
—_ d cí Ç 3.0 td i 11U U Γ C Ü Σ □ Ç α ü il jU '61^ ( viu t ; UÇÍõOhsii^üd^ ΰ X _ i tentes que têm limitações. Por exemplo, os dados hierárquicos podem nào ser armazenados, o comprimento do caractere é limitado e semelhantes. As propriedades para tais métodos são armazenadas em uma única memória, por exemplo, uma memória de propriedades de OLE, o que significa que as propriedades têm uma possibilidade de conflito. Além disso, tais propriedades armazenadas não têm validação de dados. É difí10 cil para os usuários de tais aplicações e documentos relacionados armazenar dados arbitrários com documentos, que é uma necessidade comum de muitos usuários.
SUMÁRIO
Esse sumário é provido para apresentar uma seleção de conceitos em uma forma simplificada que são também descritos abaixo na descrição detalhada. Esse sumário não é planejado para identificar aspectos chaves ou aspectos essenciais da matéria exposta reivindicada, nem ele é planejado para ser usado como uma ajuda na determinação do escopo da matéria exposta reivindicada.
Uma ou mais memórias de dados são mantidas separadamente de um armazenamento de apresentação primário dentro de um documento para armazenar, relacionar e para permitir o uso de dados arbitrários que são associados com um documento gerado pelo computador entre múltiplos consumidores de dados. Os dados para estruturar a informação associada com um documento, tal como metadados do documento, são mantidos em uma memória de dados onde as relações entre pedaços diferen-
Figure BRPI0615679B1_D0006
Figure BRPI0615679B1_D0007
.óL-ulCõ de pl·'QCj Γ díTld Çci ü dd âpi LCuyaC (A?ÍS; pd±73 OS VuílCS pedaços de dados na memória de dados para permitir que consumidores de dados diferentes acessem e operem em um ou mais des pedaços de dados em tempo real. Múltiplos consumidores de dados podem; acessar e editar o mesmo pedaço de dados simultaneamente e quaisquer mudanças conflitantes para um dado pedaço de dados são resolvidas. Cada consumidor de dados pode aceitar ou rejeitar a mudança, bem como fazer mudanças adicionais de efeito colateral como um resultado da mudança original. Dessa maneira, os dados podem ser sincronizados em tempo real através dos consumidores de dados.
Os pedaços de dados podem ser estruturados de acordo com uma linguagem de marcação tal como a linguagem de marcação extensível (XML). Esquemas da XML podem ser associados com cada pedaço de dados e a memória de dados pode automaticamente validar a estrutura da XML dos dados com base em um esquema da XML associado com um dado pedaço de dados. Isso ajuda a impedir que mudanças inválidas tenham permissão para entrar no sistema.
BREVE DESCRIÇÃO DOS DESENHOS
A figura 1 ilustra uma arquitetura de computação exemplar para um computador,
A figura 2 é um diagrama de blocos ilustrando uma relação entre uma ou mais aplicações de cliente e uma ou mais memória(s) de dados e os conteúdos da(s) memória(s) de dados
A figura 3 ilustra um diagrama de sistema mostran4
Figure BRPI0615679B1_D0008
do a interação entre os consumidores de dados interno e externo com as memórias de dados da XML,
A figura 4 ilustra um exemplo da sincronização ativa,
A figura 5 ilustra a interação entre dois clientes e uma memória de dados da XML,
A figura 6 mostra a interação entre dois consumidores de dados externos e uma mudança na memória de dados da
XML,
A figura 7 mostra um processo envolvendo múltiplas mudanças de efeito colateral e
A figura 8 ilustra um processo mostrando que os efeitos colaterais do chamador são executados por último, de acordo com aspectos da presente invenção.
DESCRIÇÃO DETALHADA
Com referência agora os desenhos, nos quais numerais semelhantes representam elementos semelhantes, vários aspectos da presente invenção serão descritos. Em particular, a figura 1 e a discussão correspondente são planejados para prover uma breve descrição geral de um ambiente de computação adequado no qual modalidades da invenção podem ser implementadas.
De forma gerai, módulos do programa incluem rotinas, programas, componentes, estruturas de dados e outros tipos de estruturas que executam tarefas particulares ou implementam tipos de dados abstratos particulares. Outras configurações do sistema de computador podem também ser usadas, incluindo dispositivos de mão, sistemas de muitiprocessador,
Figure BRPI0615679B1_D0009
-L_ L—' J— õ J J . J d '\_A ·. s__J 1 2 ·—X J. L L _L —Λ -O 1 <_> ϊ . I L_, CJ iÇj AJ --- 2 l L x ·. L —L· x — J_ '^2 2 _L— '·--' —-· -—- t-O· d *_^l J_ ·—' '—K ρ X O C2 ama Vθ r f .'/[ i .'/ 1 ·.' OlCp . ...,- QO Γ6 £ , k.:ΟΠ, O U L U'—. .--1.- S grande p Ο r - i e semelhantes. Ambientes de computação distribuídos podem também ser usados onde as tarefas são executadas por dispo5 sitivos de processamento remoto que são ligados através de uma rede de comunicações. Em um. ambiente de computação distribuído, módulos de programa podem ficar localizados em ambos os dispositivos de armazenamento de memória locais e remotos ,
Por todo o relatório descritivo e reivindicações, os seguintes termos adotam os significados associados aqui, a menos que o contexto do termo dite de outra forma.
O termo apresentação se refere à porção visível do documento tais como o texto e o leiaute que apareceríam se o documento fosse impresso.
O termo marca se refere aos caracteres inseridos em um documento que delineiam os elementos dentro de um documento da XML. Cada elemento não pode ter mais do que duas marcas: a marca de início e a marca de fim. É possível ter um elemento vazio (sem conteúdo) em cujo caso uma marca é permitida.
Os termos linguagem de marcação ou ML se referem a uma linguagem para códigos especiais dentro de um documento que especificam como as partes do documento devem ser interpretadas por uma aplicação. Em um arquivo de processador de texto, a linguagem de marcação especifica como o texto deve ser formatado ou disposto.
O termo elemento se refere à unidade básica de
Figure BRPI0615679B1_D0010
um documento da XML. O elemento pode conter atributos, outros elementos, texro e outras regiões de conreúdo para um documento da XML.
conteúdo da XML entre as marcas é considerado o secundário do elemento (ou descendentes). Portanto, outros elementos incorporados no conteúdo do elemento são chamados elementos secundários ou nós secundários ou o elemento.
texto incorporado diretamente no conteúdo do elemento é considerado os nós do texto secundário do elemento. Jun10 tos, os elementos secundários e o texto dentro de um elemento constituem o conteúdo desse elemento.
O termo atributo se refere a uma propriedade adicional estabelecida para um valor particular e associada com um elemento. Os elementos podem ter um número arbitrário de ajustes de atributo associados com eles, incluindo nenhum. Os atributos são usados para associar a informação adicional com um elemento que não conterá elementos adicionais ou será tratado como um nó do texto.
termo XPath é um operador que usa uma expres20 são padrão para identificar nós em um documento da XML. Um padrão de XPath é uma lista separada por traços oblíquos dos nomes do elemento secundário que descrevem uma trajetória através do documento da XML. 0 padrão seleciona elementos que igualam a trajetória.
O termo mudança de efeito colateral se refere a uma mudança que é feita em resposta a uma outra mudança.
O termo documento pode consistir da XML arbitrária que descreve as propriedades que são definidas no tipo
Figure BRPI0615679B1_D0011
oe ^cnteudo õssuCiàQL·, oem como dS outras .linguagens cie mar cação que podem ser asadas para descrever o conteúdo de superfície real· do· documento:
O termo memória de dados da XML e/ou memória de dados se refere a um recipiente dentro de um documento, tal como um documento de processador de texto, um documenpo de planilha, um documento de apresentação de slide, etc., que provê acesso para o armazenamento e modificação dos dados (no formato da XML, por exemplo) armazenados no documento enquanto o arquivo está aberto. Definição adicional da memória de dados da XML é provida abaixo com relação à figura 2.
Com referência à figura 1, um sistema exemplar para implementar a invenção inclui um dispositivo de computação, tal como dispositivo de computação 100. Em uma configuração muito básica, o dispositivo de computação 100 tipicamente inclui pelo menos uma unidade de processamento 102 e memória do sistema 104. Dependendo da configuração exata e do tipo do dispositivo de computação, a memória do sistema 104 pode ser volátil (tal como RAM), não volátil (tal como ROM, memória flash, etc.) ou alguma combinação das duas. A memória do sistema 104 tipicamente incluí um sistema operacional 105, uma ou mais aplicações 106 e pode incluir dados do programa 107. Em uma modalidade, a aplicação 106 pode incluir uma aplicação de processador de texto 120. Essa configuração básica é ilustrada na figura 1 por esses componentes dentro da linha tracejada 108.
dispositivo de computação 100 pode ter aspectos ou funcionalidade adicional. Por exemplo, o dispositivo de // / h í 1 computação iüO pode também incluir dispositivos de armazenamento de dados adicionais (removíveis e/ou não removíveis) tais como, por exemplo, discos magnéticos, discos óticos ou fita. Tal armazenamento adicional é ilustrado na figura 1 pelo armazenamento removível 109 e armazenamento não removível 110. Meios de armazenamento no computador podem incluir meios voláteis e não voláteis, removíveis e não removíveis implementados em qualquer método ou tecnologia para armazenamento de informação, tais como instruções legíveis por computador, estruturas de dados, módulos do programa ou outros dados. A memória do sistema 104, armazenamento removível 109 e armazenamento não removível 110 são todos exemplos de meios de armazenamento no computador. Meios de armazenamento no computador incluem, mas não são limitados a, RAM,
ROM, EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento ótico, cassetes magnéticos, fita magnética, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético ou qualquer outro meio que possa ser usado para armazenar a informação desejada e que possa ser acessado pelo dispositivo de computação 100. Quaisquer tais meios de armazenamento no computador podem ser parte do dispositivo 100. O dispositivo de computação 100 pode também ter dispositivo (s) de entrada 112 tais como teclado, mouse, caneta, dispositivo de entrada de voz, dispositivo de entrada por toque, etc. Dispositivo (s) de saída 114 tais como um monitor, alto-falantes, impressora, etc., podem também ser incluídos. Esses dispositivos são bem conhecidos na técnica e
Figure BRPI0615679B1_D0012
não precisam ser discutidos em maiores detalhes aqui .
dispositivo de computação 100 pode também conter conexões de comunicação 116 que permitem, que o dispositivo se comunique com outros dispositivos de computação 118, tal como através de uma rede. A cor.exão de comunicação 116 é um exemolo dos meios de comunicação. Os meios de comunicação podem ser tipicamente personificados por instruções legíveis por computador, estruturas de dados, módulos do programa ou outros dados em um sinal de dados modulado, tal como uma on10 da portadora ou outro mecanismo de transporte e inclui quaisquer meios de entrega de informação. O termo sinal de dados modulado significa um sinal que tem uma ou mais de suas características ajustadas ou alteradas em uma tal maneira de modo a codificar a informação no sinal. Por meio de exemplo, e não limitação, meios de comunicação incluem meios ligados por fiação tal como uma rede ligada por fiação ou conexão ligada por fiação direta e meios sem fio tais como meios sem fio acústicos, de RF, de infravermelho e outros. O termo meios legíveis por computador como usado aqui inclui ambos os meios de armazenamento e meios de comunicação.
Uma série de módulos do programa e arquivos de dados pode ser armazenada na memória do sistema 104 do dispositivo de computação 100, incluindo um sistema operacional 105 adequado para controlar a operação de um computador pes25 soai em rede, tal como os sistemas operacionais WINDOWS da MICROSOFT Corporation de Redmond, Washington. A memória do sistema 104 pode também armazenar um ou mais módulos do programa, tal como a aplicação do processador de texto 120, e
Figure BRPI0615679B1_D0013
outros descritos abaixo. A aplicação do processador de rpxto 120 é operativa para prover funcionalidade para criar, editar e processar documentos eletrônicos.
De acordo com uma modalidade da invenção, a apli5 cação do processador de texto 120 compreende o programa WORD da MICROSOFT CORPORATION. Deve ser verificado, entretanto, que programas de aplicação de processador de texto de outros fabricantes podem ser utilizados. A ilustração de uma aplicação de processamento de texto é com finalidades de exemplo somente e não está limitando outros tipos de aplicações que podem produzir e operar nos documentos. Por exemplo, outros programas de aplicação 106 que são capazes de processar várias formas de conteúdo (por exemplo, texto, imagens, desenhos, etc.), tais como programas de aplicação de planilha, programas de aplicação de base de dados, programas de aplicação de apresentação de slide, programas de aplicação auxiliados por computador ou de desenho, etc., são igualmente aplicáveis. Um programa de aplicação exemplar 106 que produz e opera em uma variedade de tipos diferentes de documentos inclui o OFFICE da MICROSOFT Corporation.
Modalidades podem ser implementadas como um processo de computador, um sistema de computação ou como um artigo de fabricação tal como um produto de programa de computador ou meios legíveis por computador. 0 produto de progra25 ma de computador pode ser meios de armazenamento no computador legíveis por um sistema de computador e codificação de um programa de computador das instruções para executar um processo no computador. 0 produto do programa de computador
X?
Figure BRPI0615679B1_D0014
pode também ser um sinal orooagado em uma pnrtaHnra 1 agí v<= 1 por um sistema de computação e codificação de um programa de computador das instruções para executar um processo do computador .
A figura 2 é um diagrama de blocos ilustrando uma
Figure BRPI0615679B1_D0015
mais memórias de dados e os conteúdos da(s) memória(s) de dados. Geralmente descrito, uma ou mais memórias de dados são mantidas separadamente de um armazenamento de apresenta10 ção primário dentro de um documento para armazenar, relacionar e para permitir o uso de dados arbitrários através de consumidores de dados que são associados com um documento gerado pelo computador. Dados para estruturar a informação associada com um documento, tal como metadados do documento, são mantidos em uma memória de dados onde as relações entre pedaços de dados diferentes são mantidas. A memória de dados expõe as interfaces de programação de aplicação (APIs) aos vários pedaços de dados na memória de dados para permitir que aplicações diferentes acessem e operem em um ou mais dos pedaços de dados. Como usado aqui, os termos consumidores de dados, aplicações e processos podem ser usados de maneira permutável a menos que o contexto claramente dite de outra forma.
Os pedaços de dados podem ser estruturados de a25 cordo com uma linguagem de marcação tal como a linguagem de marcação extensível (XML). Esquemas da XML podem ser associados com cada pedaço dos dados e a memória de dados pode validar a estrutura da XML aplicada nos dados com base em um
Figure BRPI0615679B1_D0016
esctuema da XML associado com um dado oedaco dos dados para garantir a validade de cada solicitação. As memórias de dados podem conter qualquer número de itens de dados arbitrários, por exemplo, metadados, estruturados de acordo com a linguagem de marcação extensível (XML). Dessa maneira, prc-
Figure BRPI0615679B1_D0017
arbitrários como XML com um dado documento e ter essa informação processada por uma dada solução tendo acesso aos dados com a ocorrência de um evento tal como quando os dados são removidos ou carregados na memória de dados e/ou quando o documento é aberto/editado/salvo por um usuário.
O acesso programático é também provido para os dados na sua forma de XML enquanto o documento está sendo editado. De acordo com uma modalidade, um mecanismo padrão é provido que é familiar para desenvolvedores de solução via o qual os dados podem ser acessados e modificados de maneira programática enquanto o documento está aberto. Esse acesso programático é projetado para imitar APIs de XML padrões. O acesso programático aos dados é provido via interfaces de programação da aplicação para uma ou mais aplicações do cliente de edição (por exemplo, aplicações de edição ou criação de documento e/ou soluções de complemento da aplicação de terceiros e semelhantes). Dessa maneira, múltiplas aplicações de cliente podem acessar e editar o mesmo pedaço dos dados de documento e quaisquer mudanças conflitantes para um dado pedaço de dados são resolvidas. Consumidores de dados podem fazer mudanças de efeitos colaterais em resposta a qualquer dada mudança. Por exemplo, em resposta ao estabele13
Figure BRPI0615679B1_D0018
Figure BRPI0615679B1_D0019
;m consumidor de dados pode alterar um simboio de estoque para 'ΜΞΕΤ. Alé' iisso, mudanças em dados e quaisquer ereitcs colaterais associados podem ser agrupadas pela memória de dados, de modo que a anulação de uma ou mais mudanças inverte todas as mudanças relacionadas. Isso auxilia na remoção do fardo de desenvolvimento do próprio consumidor de dados para garantir que ele inverteu todas as mudanças quando o usuário inicia uma anulação da mudança original a partir da superfície do documento, por exemplo, pelo aperto de comando desfazer.
Esquemas de XML padrões (XSDs) podem também ser usados para definir os conteúdos de qualquer um dos pedaços dos dados de XML personalizados associados com metadados de documento a fim de garantir que os dados de XML aplicados nos dados do documento sejam válidos. Esses esquemas podem ser anexados a qualquer instância dos dados da XML armazenados no documento e a memória de dados pode ser configurada para proibir qualquer mudança nos dados da XML que resultaria na estrutura da XML (isto é, as marcas da XML em oposição aos seus conteúdos) desses dados se tornando inválida. Isso ajuda a garantir que o desenvolvedor da solução possa anexar um pedaço específico dos metadados da XML em um documento e garantir que os dados da XML continuarão a ser estruturalmente corretos de acordo com o esquema associado, a despeito de quais consumidores de dados (por exemplo, complementos) são usados para modificar esses dados. O esquema pode ser armazenado em um meio legível por computador, tal /
Figure BRPI0615679B1_D0020
como em um arquivo ou em uma unidade rígida.
Com referência agora à figura 2, os dados do documento 220 incluem dados de estrutura da XML e dados de documento associados representando a superfície ou visão do ní5 vel de apresentação de um. documento. Por exemplo, os dados do documento 220 podem incluir a estrutura da XML (por exemplo, marcas de cabeçalho, marcas de corpo, marcas de conclusão) e dados de visualização de superfície associados (por exemplo, palavras, frases, parágrafos) de um documento de processamento de texto, documento de planilha, documento de apresentação de slide e semelhantes.
A memória de dados 208 é um repositório dos dados do documento para armazenar um ou mais pedaços dos dados estruturados associados com um ou mais tipos de dados associa15 dos com um dado documento. Embora somente uma memória de dados seja ilustrada, mais do que uma memória de dados pode ser utilizada. Os metadadosl 225 (item de dados estruturados) podem incluir dados de estrutura da XML e dados associados para um primeiro pedaço dos metadados associados com o documento. Por exemplo, os metadadosl 225 podem incluir dados de estrutura da XML (por exemplo, marcas de data, marcas de nome, etc.) listando o autor do documento, data da criação do documento, data da última mudança/salvamento do documento e semelhantes. Os metadados2 230 (item dos dados es25 truturados) podem incluir dados da estrutura da XML (marcas) e metadados associados representando um segundo pedaço dos metadados associados com o documento. Os metadadosl e os metadadosl são para finalidades de exemplo e não estão limí15
Figure BRPI0615679B1_D0021
tando a varaedade e o número de íídos diferentes de ciados que poaem ser mantidos na memória de dados 208 em associação com um dado documento. Por exemplo, como descrito aqui, dados arbitrários podem ser estruturados e adicionados no do5 cumento por uma ou mais aplicações de software como desejado pelos orovedores de solução ou usuários c-io acesso aos dados do documento.
Um arquivo de esquema 240,245 pode ser opcionalmente anexado a cada pedaço dos dados armazenados na memória de dados 208 para ditar as regras de sintaxe e validação associadas com os dados da linguagem de marcação extensível (XML) aplicados em cada pedaço dos dados 225,230. Arquivos do esquema da XML provêem uma maneira para descrever e validar os dados em um ambiente da XML. Um arquivo de esquema declara quais dados de marcação da XML, incluindo elementos e atributos, são usados para descrever o conteúdo em um documento da XML e o arquivo do esquema define a sintaxe de marcação da XML, incluindo onde cada elemento é permitido, quais tipos de conteúdo são permitidos dentro de um elemento e quais elementos podem aparecer dentro de outros elementos. 0 uso dos arquivos de esquema garante que o documento (ou pedaço individual dos dados) seja estruturado em uma maneira consistente e previsível. Arquivos de esquema 240,245 podem ser criados por um usuário e geralmente suportados por uma linguagem de marcação associada, tal como XML.
Essa esquematização do documento permite que a memória de dados proveja a capacidade para garantir a validade estrutural do documento rejeitando qualquer mudança que
Figure BRPI0615679B1_D0022
viola um aaáo arquivo de esquema no nível da memória de dados. De acorao com uma modalidade, a memória de dados 208 utiliza um módulo de validação de esquema 260 para validar a estrutura da XML adicionada a ou as mudanças feitas em um dado pedaço dos dados contra um arquivo de esquema associado. Por exemolo, se um criador ou edjt-or do documento faz mudanças estruturais da XML em um dado pedaço dos dados, por exemplo, os metadadosl, onde o editor adiciona ou remove uma dada marca da XML, a memória de dados 208 utilizará o módulo de validação do esquema para verificar as mudanças estruturais da XML contra o arquivo de esquema associado para garantir a validade da mudança. Se a mudança não é válida, um erro pode ser gerado para o editor. Como é entendido, tal controle da estrutura da XML aplicada em um dado pedaço de dados permite a consistência estrutural e a capacidade de predição que são especialmente importantes para permitir que aplicações de cliente e terceiros interajam com os dados associados. Qualquer consumidor de dados pode prover um esquema que pode ser usado para validar os dados.
A memória de dados 208 provê uma ou mais interfaces de programação de aplicação (API) 270 que podem ser acessadas por aplicações do cliente 205 (por exemplo, aplicações de processamento de texto, aplicações de planilha, aplicações de apresentação de slide, etc.), bem como, aplicações de terceiros 210,215 e via os modelos de objeto (OM) das aplicações respectivas 205, 210, 215. Essas APIs permitem que as aplicações do cliente e aplicações de terceiros carreguem qualquer arquivo de XML existente na memória de
Figure BRPI0615679B1_D0023
dados ae um dado aocumento 203, assim garantindo que esses dados sejam agora parte do documento e percorrerão dentro desse documento por sua duração de vida (por exemplo, através de abrir/editar/salvar/renomear/etc.) ou até que os da5 dos sejam deletadcs da memória de dados. De acordo ccm uma modalidade, os dados na memória de dados ficam disponíveis no seu formato de XML mesmo quando uma aplicação fonte para um dado pedaço de dados 225, 230 é fechada ou de alguma forma não está disponível. Isto é, um dado pedaço dos dados
225, 230 pode ser acessado via um conjunto de APLs. Como descrito abaixo, as APIs também permitem que aplicações do cliente e de terceiros façam mudanças nos dados de marcação da XML aplicados nos itens de dados 225, 230.
Depois que os dados da XML 225, 230 são carregados na memória de dados para associação com um documento 220, eles podem ser manipulados como XML padrão usando as interfaces da memória de dados designadas para prover métodos similares para interfaces de edição de XML existentes de modo a alavancar o conhecimento existente dos desenvolvedores do padrão de programação da XML. Isso permite que os usuários executem operações de XML padrões em dados de XML adicionados na memória de dados para um documento, tal como a adição de elementos e atributos, remoção de elementos e atributos, mudança no valor dos elementos/atributos existentes e leitu25 ra dos valores de qualquer parte existente da árvore da XML associada. Usando essas operações padrões da XML, as soluções podem armazenar metadados complexos estruturados com um documento. Por exemplo, uma aplicação de terceiros 215 pode
Figure BRPI0615679B1_D0024
ser escrita para localizar e extrair nomes de antoi- de do,-i.·mento e datas de criação do documento de um número de documentos pela leitura dos metadadosl 225 adicionados na memória de dados 208 para cada documente. A aplicação de tercei5 res exemplar pode ser uma aplicação programada Dara fazer uma lista de nomes de autor de documenta e datas de criação de documento para todos os documentos criados por uma dada organização. De acordo com modalidades da presente invenção, a aplicação de terceiros pode utilizar a estrutura da XML aplicada nos metadadosl para eficientemente localizar e extrair os dados desejados. Por exemplo, a aplicação de terceiros pode ser escrita para analisar a estrutura da XML do arquivo de metadadosl para localizar marcas da XML, tais como <docauthor> e <doccreationdate> para obter e usar os da15 dos associados com essas marcas. Como deve ser verificado, o precedente é apenas um exemplo das muitas maneiras que uma ou mais aplicações podem interagir com os dados estruturados que são associados com o documento via a memória de dados
208.
Além disso, a memória de dados 208 provê qualquer número de interfaces da API 270 para qualquer pedaço individual de dados da XML 220, 225, 230 (também conhecidos como um item da memória) para possibilitar que múltiplas aplicações 205, 210, 215 funcionem com o mesmo pedaço de dados.
Por exemplo, várias soluções, tal como uma aplicação do cliente (por exemplo, aplicação de processamento de texto) e soluções de aplicação de terceiros (por exemplo, a aplicação de terceiros descrita acima), podem funcionar com o mesmo
Figure BRPI0615679B1_D0025
conjunto de propriedades de documento (por exemplo, propriedades contidas no arquivo de metadados2 230). Usando a memória de dados 208, cada uma dessas aplicações recebe acesso separado para os dados da XML desejados 230 através de sua própria interface API da memória de dados 270 para permitir qu P C 3. CeU L-. O 2_ _L r ' ci omil 1’ · gi θ s—· QTT' C7 3. ÇÍ Ά S Ί7ΐ - s ° 1 1 Ά .Λ p T -! ,o gerenciador de objeto sem ter que lidar com a complexidade de ter múltiplos consumidores de dados acessando o mesmo pedaço dos dados.
A fim de permitir que essas múltiplas aplicações 205, 210, 215 acessem os mesmos dados, a memória de dados 208 notifica cada uma dessas aplicações quando qualquer parte dos dados da XML é alterada por uma outra aplicação de modo que uma dada aplicação pode responder para essa mudança (tanto internamente ao seu próprio processo quanto externamente por outras mudanças nos mesmos dados). Quando uma aplicação solicita uma mudança para um dado item de dados, essa solicitação é automaticamente enviada para todas as outras aplicações .para permitir que as outras aplicações decidam como ou se responder para a mudança solicitada. De acordo com uma modalidade, isso é realizado permitindo que cada aplicação se inscreva para participar de qualquer parte dos dados da XML nos quais ele tem uma interface de modo que uma dada solução/programa de aplicação somente recebe essas mensagens que são pertinentes para sua própria lógica. Por exemplo, um tipo de aplicação 210 pode desejar se inscrever para participar de todas as mudanças feitas nos dados de uma dada XML de modo a prover capacidades detalhadas de lógica
Figure BRPI0615679B1_D0026
do negócio para uma solução de terceiros, mas um our.ro tipo de aplicação 215 pode desejar somente participar das mudanças em um ou dois elementos da XML específicos dentro dos mesmos dados porque sua lógica não se preocupa com as mudan5 ças em qualquer outra parte dos dados da XML.
De acordo com essa modalidade, as múltiplas aplicações 205, 210, 215 podem acessar e editar o mesmo pedaço dos dados de documento e quaisquer mudanças conflitantes para um dado pedaço de dados são resolvidas. Por exemplo, e10 feitos colaterais em qualquer dada mudança podem ser feitos quando uma mudança por uma aplicação causa uma mudança de efeito colateral por uma outra aplicação. Por exemplo, uma primeira aplicação 210 pode ser encarregada de extrair nomes de companhia de um ou mais itens de dados 225, 230 associa15 dos com um dado documento para traduzir esses nomes em símbolos de estoque correspondentes, se disponível, para compilar uma lista de símbolos de estoque da companhia relacionados com um dado documento. Se uma segunda aplicação 215 faz com que um dado nome de companhia em um dado pedaço dos me20 tadados seja adicionado ou seja alterado, por exemplo, mudando o nome da companhia de companhia ABC para companhia XYZ, a primeira aplicação pode participar dessa mudança para automaticamente atualizar a sua lista de símbolos de estoque para incluir o símbolo de estoque para a companhia 25 XYZ ao invés da companhia ABC. Além disso, tais mudanças e quaisquer efeitos colaterais associados podem ser agrupados pela memória de dados 208 de modo que a anulação de uma ou mais mudanças reverte todas as mudanças relacionadas.
Figure BRPI0615679B1_D0027
A figura 3 ilustra um diagrama de sistema mostrando a interação entre os consumidores de dados internos e externos com as memórias de dados da XML. Como ilustrado, o sistema 300 inclui documento 315, uma memória de dados 302, 5 uma camada de apresentação 304, memórias da XML 1-N 306 dentro da memória de dados 202 que incluem, cada uma, uma memória de erro e uma memória de anulação, uma memória de mudança global 308, uma memória de anulação global opcional 310, um agente interno 312 que é acoplado nos consumidores de da10 dos internos 1-N 314, memória externa da XML 320 e um agente externo 316 que é acoplado nos consumidores de dados externos 1-N 318.
Com o uso da memória de dados 302 e a(s) memória (s) de dados da XML 306, os documentos têm a capacidade de conter qualquer número de itens de dados arbitrários (contanto que cada um se conforme com a sintaxe da XML padrão) . Metadados arbitrários podem ser armazenados como XML dentro de um documento e essa informação pode ser automaticamente circulada quando o documento é aberto/editado/salvo pelo usuário.
Como discutido acima, o acesso programático a esses dados é provido via uma API que pode ser utilizada enquanto o documento está sendo editado, provendo um mecanismo padrão familiar para desenvolvedores de solução via o qual essa informação pode ser acessada e modificada de modo programático enquanto o documento está aberto. De acordo com uma modalidade, esse acesso programático é projetado para imitar as interfaces da XML padrões. Com o uso da API, os
Figure BRPI0615679B1_D0028
dados podem ser adicionados/removidos enquanto a aplicação, tal como uma aplicação de processamento de texto, está funcionando, os dados podem ser preenchidos dentro de um item da memória (uma parte dentro da memória de dados] , os dados podem ser manipulados usando construções da XML padrões, esquemas podem ser associados com quaisquer dados da XML arbitrários na memória de dados, esquemas podem ser adicionados/removídos/alterados uma vez associados com o item da memória de dados e mudanças da XML podem ser transmitidas para quaisquer clientes participantes. Como ilustrado, a API compreende um agente externo 316 que provê uma interface para os consumidores de dados externos 318 e um agente interno 312 que provê uma interface para quaisquer consumidores de dados internos 314 que interagem com a memória de dados 302.
As manipulações na memória de dados 302 podem ocorrer em tempo real. Como discutido acima, as memórias de dados 302 e 306 podem conter um ou mais tipos de dados. Por exemplo, uma companhia podería ter uma memória de dados que eles estão usando para armazenar todos os tipos diferentes de dados que eles desejam armazenar dentro de uma única memória de dados, enquanto uma outra companhia poderia querer armazenar tipos diferentes de dados dos dados através de diferentes memórias de dados.
Um consumidor de dados (interno 314 e/ou externo
318) pode se inscrever para eventos que se relacionam com ações com relação aos dados dentro das memórias de dados.
Por exemplo, um consumidor de dados pode se inscrever para receber um evento quando qualquer tipo de mudança é feita em
Figure BRPI0615679B1_D0029
uma ou mais das memórias de dados. Um nutro consumidor de dados pode se inscrever para mudanças que aconteceram em um certo elemento ou conjunto de elementos dentro de uma memória de dados. Eventos comuns incluem adicionar um item, rau5 dar um item e deletar um item de uma das memórias de dados.
Quando o evento ocorre, cada consumidor de dados que se inscreveu pode reagir à mudança enquanto o estado das memórias de dados é mantido consistentemente. Muitas vezes, um consumidor de dados não executará quaisquer ações quando uma mu10 dança é feita. Em outras vezes, o consumidor de dados executará algumas ações em resposta ao evento. Por exemplo, um consumidor de dados pode fazer algumas outras mudanças na memória de dados em resposta à mudança tal como, em resposta a uma mudança de título, atualizar cabeçalhos dentro do do15 cumento. O consumidor de dados pode também executar algumas outras operações que não afetam o documento. Por exemplo, se o símbolo registrador do estoque é inserido, o consumidor de dados pode recuperar os dados que são associados com esse símbolo do estoque mesmo embora todos os dados recuperados possam não ser exibidos dentro do documento na camada de apresentação. 0 consumidor de dados pode também rejeitar a mudança usando sua própria lógica de validação. Por exemplo, se o consumidor de dados 1 recebe uma mudança que eles não aceitam, esse consumidor de dados pode retornar um indicador para o agente indicando que a mudança não é aceita. Sempre que uma mudança não é aceita, a mudança é revertida, junto com quaisquer efeitos colaterais, tal que a mudança nunca ocorreu. Cada memória da XML 306 pode utilizar sua memória
Figure BRPI0615679B1_D0030
ae anuraçào para desfazer as mudanças qn^ Aa fez. AlternaUvamente, a memória de anulação global 310 pode ser utilizada para desfazer as mudanças feitas através das memórias de dados. Imagine que existem três consumidores de dados que estão interessados no que está acontecendo nas propriedades do documento, então cada um. desses consumidores de dados se inscreveu para receber um evento relacionado com uma mudança das propriedades. Quando uma mudança é feita, a memória de dados determina cada consumidor de dados que se inscreveu e informa cada um deles da mudança em uma ordem predeterminada. Cada consumidor de dados, por sua vez, pode executar alguma ação em resposta à mudança. Se a mudança, ou qualquer uma das mudanças feitas pelos consumidores de dados inscritos como um resultado da mudança, não é aceita por qualquer um dos consumidores de dados, todas as mudanças relacionadas com a mudança inicial são desfeitas.
A camada de interface de programação da aplicação do agente externo 316 provê acesso à memória de dados 302 pelos consumidores de dados externos 318 e permite que cli20 entes de terceiros interajam com a memória de dados 302 justo como os consumidores de dados internos que são associados com a aplicação interagem com a memória de dados. Cada uma das memórias de dados da XML 306 dentro da memória de dados
302 é provida com um ID único para finalidades de identifi25 cação. Isso ajuda na localização das memórias de dados da XML 306.
Em qualquer ponto no tempo, um consumidor de dados pode adicionar um esquema que é usado para validar os dados
5
Centro ae uma memória de dados. QnanHo -nm esquema é adicionado e um consumidor de dados tenta mudar qualquer um dos dados, a memória de dados determina se a mudança faz sentido com o esquema provido. Depois que um esquema é anexado, o agente se torna um objeto de validação.
Esquemas da XML definidos sob encomenda podem ser usados para prover marcação semântica ao redor de conteúdos dentro de um documento, tais como um documento de processamento de texto, um documento de planilha e semelhantes. Essa funcionalidade poderosa permite que os desenvolvedores criem soluções que alavancam essa incorporação da XML sob encomenda para funcionar diretamente contra a estrutura e o conteúdo de seus dados ao invés de requerer que a sua solução lide com as complexidades do formato de apresentação da aplicação subjacente.
Por exemplo, se o usuário fosse criar uma página de cobertura para uma nota de pesquisa de equidade em uma aplicação que não fosse capaz da XML, então a extração dos dados úteis (por exemplo, o nome da companhia, o símbolo re20 gistrador do estoque, a avaliação do estoque) exigiría o uso do modelo do objeto da aplicação que está intimamente ligado ao formato de apresentação do documento. Isso necessariamente significaria que a lógica da solução resultante estava também ligada ao formato de apresentação do documento e su25 jeita à falha se essa apresentação fosse para mudar. Por exemplo, se o código espera que o símbolo registrador esteja na coluna 3, linha 2 da primeira tabela, a adição de uma nova línha/coluna rompería essa lógica. Com aplicações habili26
Figure BRPI0615679B1_D0031
tadas em XML, entretanto, esse código nnde agora ser associado com a estrutura dos próprios dados do consumidor, removendo a necessidade da lógica ser ligada à apresentação. Essa mesma lógica poderia pesquisar os conteúdos do nó da XML <stockSymbol>, e encontrá-lo sempre que ele existisse no documento para editá-lo, mesmo se sua apresentação ccntextuai tivesse mudado drasticamente.
Um esquema da XML freqüentemente envolve vários tipos de dados, incluindo: metadados (por exemplo, dados do autor para armazenamento/processamento) , dados de corpo (por exemplo, a companhia sendo relatada) e dados de tabela (por exemplo, histórias de preço de estoque). Esses tipos de dados, entretanto, não são mutuamente exclusivos. Na realidade, eles são de forma geral regiões vastamente sobrepostas dentro do mesmo documento da XML. Idealmente, embora esses dados sejam todos expressos por um único esquema da XML, esses vários 'tipos' de dados poderíam ser editados cada um etc. em ambientes especificamente adequados para a expressão ótima desses dados. Por exemplo, um formulário poderia apa20 recer para permitir que o usuário facilmente editasse os metadados para o documento enquanto que o corpo do documento pode ser editado via uma aplicação de processamento de texto. Isso ocorre em tempo real, tal que o usuário poderia preencher partes do documento e formulário simultaneamente.
As memórias de dados podem também receber mais do que um elemento de cada vez. Prover os dados (XML) como um fluxo particular pode ajudar a satisfazer o esquema em algumas situações. Por exemplo, suponha que um esquema anexo diz
Figure BRPI0615679B1_D0032
que se os aaaos cio estoque existem, deve ter peV duos compannias. Se os dados de estoque fossem adicionados um por um, isso não seria válido.
De acordo com uma modalidade, uma única passagem é 5 usada para validar os dados. Ao invés de fazer duas passagens que pode resultar em uma mudança sendo feita na memória de dados, a validação é executada antes que os dados sejam submetidos à memória de dados. Isso ajuda a impedir que um consumidor de dados introduza erros na memória de dados.
Como discutido aqui, os dados da XML que são associados com um documento podem agora ser armazenados separadamente de qualquer documento de aplicação especifico em uma memória de dados da XML central 302. Múltiplos ambientes podem ser criados para a apresentação/edição de um pedaço dos dados da XML. As expressões desses dados são automaticamente sincronizadas através de suas conexões nos mesmos dados na memória de dados da XML. Como tal, múltiplas aplicações podem simultaneamente exibir os mesmos dados da XML subjacentes. Isso significa que o usuário é concedido com a capaci20 dade de editar os mesmos dados na aplicação que é 'a melhor ferramenta para a tarefa'. Por exemplo, um formulário para editar a informação dos metadados, uma superfície do documento de processamento de texto para editar as seções de formulário livre dos dados, etc. Isso também significa que o usuário pode editar os dados em múltiplas aplicações como desejado. Se a mesma informação aparece em múltiplas aplicações, o usuário pode editar esses dados em qualquer uma delas como desejado com base no seu contexto de edição atual.
Figure BRPI0615679B1_D0033
Embora cada aoi ·ί '-ar-ãr» arpra acesso simultâneo aos dados inteiros da XML que são associados com o documento, cada aplicação pode individualmente fazer a escolha de se exibir e editar qualquer parte desses dados. Isso sig5 nifica que cada aplicação precisa somente exibir as partes dos dados que são relevantes dentre desse contexto. Por exemplo, todos os dados da XML poderíam ser exibidos no documento, mas uma outra aplicação poderia somente estar interessada nos valores de um nó da XML dentro dos dados e, por10 tanto, precisa somente exibir essa parte dos dados sem se preocupar sobre o 'transporte' do resto da estrutura da XML para garantir o contexto.
O usuário pode editar os dados em qualquer aplicação exibindo a mesma informação da XML e imediatamente ter esses dados atualizados (junto com qualquer lógica de negócios aplicável} em todas as localizações que estão se referindo a essa parte dos dados. Essa capacidade de receber mensagens em tempo real para cada mudança da XML é útil, já que ela permite a criação de ambientes de edição que refle20 tem a natureza de sobreposição das várias exigências de edição dentro de um único documento da XML.
As aplicações podem também compartilhar informação de erro. Uma coleção definida pelo usuário de erros de conteúdo pode ser armazenada em cada memória de dados. Por e25 xemplo, a lógica do negócio pode ditar que um nó <startDate> deve ter um valor antes do nó <endDate>. A fim de permitir que múltiplos consumidores de dados compartilhem coletivamente os seus erros, uma memória de erro é incluída dentro
Figure BRPI0615679B1_D0034
de Cãdâ UITl<3. dss rnernórí 5S da VMT <7ua> a ΓΓΓ.Ξ 1923 listic ds r.óc na XML + um erro (consistindo de texto de erro e um nome) . Assim como as mudanças da XML, um cliente pode criar um erro e essa mudança de erro é difundida para cada cliente suces5 sivamente. Como tal, múltiplas aplicações podem contar com uma única implementação para a lógica de validação ser compartilhada contra todas as representações desses dados. Em outras palavras, a mesma lógica não precisa ser replicada em cada aplicação que está exibindo os dados da XML.
Uma memória de anulação pode ser uma memória de anulação global 310 e/ou as memórias de anulação podem ser incluídas com cada memória da XML. Solicitações de mudança de cada consumidor de dados podem ser concatenadas em uma única pilha de anulação, tal coma memória de anulação 310, que combina cada mudança com todas as mudanças relacionadas, de modo que cada uma pode ser desfeita como uma unidade. Isso permite que todos os clientes solicitem a 'anulação' da última mudança inteira, mantendo todo o documento em um estado bom conhecido.
A sincronização dos dados não é limitada a um grupo predefinido estabelecido de consumidores de dados. Em outras palavras, novos consumidores de dados podem se inscrever para notificação em qualquer momento, em quaisquer dados da XML e imediatamente ser capazes de editar os mesmos dados como todos os outros clientes. Por exemplo, inicialmente somente os consumidores de dados externos 1 e 2 podem estar compartilhando os dados. Em um momento posterior, um ou mais consumidores de dados podem se inscrever com a memória de dados e
OS daÓOS.
Figure BRPI0615679B1_D0035
começar a comoartirhar os dados.
Um consumidor ae dados age como o 'dcr.o' aos dados da XML e é responsável· por: manter a forma persistente des dados da XML, prover uma cópia dos dados para consumidores de dados soZicitantes, r-eceber solicitações de mudança para © -q q q ς rl cq η Ό R ’ ]Π·’ Ί p p r ρ ς rj Q Q 2 0 O ? R Γ ί 3 r Η ϊ <~Ή C C Θ S C 3 mudanças para os consumidores de dados inscritos. De acordo com uma modalidade, a memória de dados age como o dono e manipula toda a atualização e notificação para cada um dos consumidores de dados. A memória de dados da XML inclui um conjunto de interfaces que estão disponíveis para aplicações diferentes, tais como uma aplicação de processamento de texto, uma aplicação de planilha, um programa de apresentação de slide e outros consumidores de dados. As interfaces são direcionadas em: obter pedaços desejados dos dados da XML, notificar a memória de dados das mudanças que um consumidor de dados gostaria de fazer na memória de dados e inscrever para receber notificações da memória de dados da XML sobre mudanças feitas nesse item da memória por outros consumido20 res de dados.
Sempre que a memória de dados notifica um consumidor de dados sobre uma mudança, o consumidor de dados pode: não fazer nada e aceitar a mudança, solicitar uma ou mais mudanças de efeito colateral e rejeitar a mudança. As mudan25 ças de efeito colateral geralmente envolvem a adição de lógica que inicia mudanças em resposta a outras mudanças que são feitas na memória de dados. Por exemplo, um consumidor de dados que usa uma nota de pesquisa de equidade pode deseΖ t
Figure BRPI0615679B1_D0036
jar receber notificação ausr.oo o nc <srock3viaboi/> dentro ca memória de dados é alterado, e em resposta à mudança submete os cacos a um serviço oe rede e tt.ca . _.za a subarvore tstccKData/> que está dentro de uma memória de dados.
Mudanças de efeito colateral são agrupadas com. a mudança original coro as finalidades de desfarer/cancelar e elas são manipuladas diferentemente pela memória de dados. Elas são manipuladas diferentemente desde que as mudanças de efeito colateral são solicitadas em resposta a uma mudança que não foi ainda ela própria submetida à memória de dados da XML.
Se um consumidor de dados (314 e/ou 318) solicita uma mudança na memória de dados da XML 302, essa mudança pode ser rejeitada por razões diferentes, incluindo: a mudança é inválida (por exemplo, XML que não é bem formada) , a mudança foi rejeitada por alguma lógica dentro de um consumidor de dados e semelhantes.
Alguns consumidores de dados podem manter sua própria versão dos dados em uma memória 320 que é mantida separadamente da memória de dados da XML 302. Manter múltiplas cópias desses dados da XML pode levar a problemas, incluindo que as cópias podem sair de sincronismo (por exemplo, o 'título' no painel de propriedade não iguala o 'título exibido em linha no documento). Para tratar esse problema, uma única cópia mestre de cada pedaço dos dados da XML é mantida durante uma sessão. Essa cópia mestre é então usada por múltiplos consumidores de dados durante uma sessão. Quando a sessão termina, as outras cópias dos dados podem ser atualiza32
Figure BRPI0615679B1_D0037
das para refiemr o estado atual da memória de dados da XML. De acordo com uma modalidade, a memória de dados 302 é configurada para intercalar os mesmos itens das memórias de dados diferentes e depois salvar cada cópia de volta em um mo5 mento posterior. Quando uma solicitação para um item de dados comum é recebida, a memória de dados 302 encobre esses dois itens da memória de dados em um único nó principal, cria um XSD intercalado que importa os esquemas que são associados com cada item de dados e entrega a interface para esse item de memória para o consumidor de dados.
A memória de dados 302 é configurada para detectar recursão excessiva e quando detectada, causar uma falha automática se a memória de dados detecta um laço de efeitos colaterais em resposta a uma dada mudança. De acordo com uma modalidade, um laço que excede 16 níveis em profundidade ou
1000 efeitos colaterais totais é considerado excessivo. A memória de dados pode também ser configurada para rejeitar automaticamente qualquer mudança e seus efeitos colaterais, quando é verificado que a mudança é estruturalmente inválida pela memória de dados da XML. Isso significa que se uma mudança estrutural é solicitada por um usuário e verificada como sendo estruturalmente inválida, então a memória de dados se restaura para o último estado bom conhecido e produz um erro que pode ser passado para os outros consumidores de dados.
Cada consumidor de dados (interno 314/externo 318) pode também rejeitar mudanças inválidas. Por exemplo, um consumidor de dados pode incluir sua própria camada de vali3 3 dação. 3e uma mudança e soncuacta dentro de um consumidor de daaos que e inválido, essa mudança pode ser rejeitada por sua camada de validação existente e revertida de sua própria memória de dados sem notificar a memória de dados da XML. Se essa mudança se originou da memória de dados da XML, então o consumidor de dados retorna uma rejeição para o mmmo atirado pela memória de dados e a memória de dados inicia um cancelamento para seu 'último estado bom conhecido'.
No caso de mudanças solicitadas por outros consu10 midores de dados para a memória de dados, a memória de dados tenta validar essas mudanças se ela tem uma coleção de esquema da XML 305 associada com os dados atuais. Se esquemas estão presentes, então a memória de dados rejeita quaisquer inválidos estruturalmente.
A fim de suportar a ligação dos dados, o consumidor interno dos dados de aplicação, tal como o consumidor interno de dados 1 314, manipula a interação entre as ações na memória de dados da XML e na superfície do documento 315. Quando um usuário edita um campo ligado de dados, essa mu20 dança afeta o conteúdo do documento (assim adicionando um registro na pilha de anulação da aplicação), mas também afeta o conteúdo da XML da memória de dados (assim adicionando um registro na pilha de anulação da memória de dados). A fim de ajudar a garantir que a superfície e os dados permaneçam em sincronismo em todos os momentos, a pilha de anulação da aplicação (com a qual o usuário interage) é capaz de 'agrupar' mudanças de superfície em um registro de anulação, junto com uma referência de anulação da memória de dados da XML
Figure BRPI0615679B1_D0038
cor resoondente, garantindo aue a anulação do Έρο ςηροΗηκ em cada pilha mantenha a aplicação e a memória de dados em um estado idêntico.
Alternativas diferentes estão disponíveis para lidar com a anulação iniciada pelo usuário, incluindo: manter
Dilhas de anulação seoaradas rara cada consum.
incluindo a aplicação hospedeira, compartilhar uma pilha de anulação global e limitar a anulação para um consumidor de dados com base no foco atual.
Quando uma pilha de anulação global é usada, o consumidor de dados passa através das solicitações de anulação diretamente para a aplicação hospedeira, que então pega o último item fora da sua pilha de anulação (anulação seria a mesma a despeito de onde o foco estava no quadro da apli15 cação). Isso implica que todas as mudanças na memória de dados da XML são afuniladas sobre a pilha de anulação do hospedeiro com algum registro genérico (por exemplo, desfazer propriedade de edição). Por exemplo, se o usuário digita Microsoft Corp. no campo <company/> em uma aplicação de processamento de texto, então essa operação faz com que a pilha de anulação da memória de dados inclua essa ação. A seguir, se o usuário fosse pressionar desfazer na aplicação de processamento de texto para remover esse texto, a aplicação de processamento de texto desfaz a última operação na sua pilha de anulação (e notifica a memória de dados para desfazer a última operação na sua pilha), o que resultaria no outro cliente fazendo essa ação. Inversamente, se o usuário então tivesse digitado algum texto nao ligado na aplica35
Figure BRPI0615679B1_D0039
ção de processamento de texto e pressionado desfazer m painel, o outro cliente abandonaria essa solicitação para o hospedeiro, que removería a última ação da sua pilha de anulação (nesse caso, a edição para a superfície do documento):
Quando um consumidor de dados rejeita uma mudança enviada oela memória de dados da XML, 03 dados da XML podem terminar em um estado lógico de negócios 'ruim'. Por exemplo, assuma que exista lógica de negócios que executa verificações em um relatório de despesa. A lógica inclui verifi10 car se um item da linha está acima de $100; e se afirmativo, o consumidor de dados rejeita a atualização de ClineltemAmount/>. Se não, o consumidor de dados atualiza o total com a nova quantidade do item da linha. Se o total está acima de $500, então o consumidor de dados rejeita a atualização de <reportTotal/>. Agora usando a lógica acima, assuma que um usuário insere uma linha de fatura de $50 que move o total acima de $500, a primeira verificação da lógica é bem sucedida, mas a segunda verificação da lógica rejeita a atualização do total. Isso significa que se apenas a última mudan20 ça foi desfeita, então existiría uma fatura onde a soma dos itens da linha não iguala o total. Como um. resultado, de acordo com uma modalidade, todos os efeitos colaterais da mudança original são desfeitos.
A memória de dados 302 age como um mecanismo de transação que permite o agrupamento dessas transações com as finalidades de anulação. De acordo com a modalidade, três alternativas diferentes para manipular as 'rejeições' são usadas. Primeiro, a memória de dados pode emitir mudanças de <
Figure BRPI0615679B1_D0040
anulação para retornar para um esrado vglifp (i-At-pr chamado 'reversão'). Segundo, anulação e cancelamento não têm paridade e terceiro, nenhum cliente é capaz de cancelar.
A primeira alternativa é ter a memória de dados da 5 XML emitindo mudanças de anulação para retornar para um. estado válido. Isso essenciaimente desfaz todas as operações de volta para a mudança que disparou o erro da lógica do negócio. Nessa alternativa, a memória de dados da XML poderia emitir solicitações de mudança com um indicador de 'anula10 ção' ajustado para VERDADEIRO e ter o consumidor de dados executando essas mudanças por si próprio; e a memória de dados da XML poderia emitir solicitações de mudança com esse indicador de 'anulação' ajustado. O seguinte é um exemplo.
O usuário edita o nó A em um cliente 1 { (Cliente 1 faz a lógica interna)
Informar memória de dados da XML {
Armazenar atualizações
Informar cliente 2 sobre A {
Mudar B (
Enfileirar, retornar OK
Informar cliente 1 sobre B {
Lógica interna
Mudar C {
Lógica interna
Informar memória de dados da XML {
Enfileirar, retornar OK
Figure BRPI0615679B1_D0041
t
OAC }
}
Informar cliente 2 sobre C i
Mudar D 1
Enfileirar, retornar OK }
)
Informar cliente 1 sobre D ( Lógica interna **REJEIÇÃO**
Reverter mudança DOM para D
Retornar FALHA }
Informar cliente 2 para desfazer D
Informar cliente 2 para desfazer C
Informar cliente 1 para desfazer C - *desfazer en
quanto saindo depois de uma rejeição
Informar cliente 1 para desfazer B - *desfazer enquanto saindo depois de uma rejeição
Informar cliente 2 para desfazer B Informar cliente 2 para desfazer A
Retornar FALHA para solicitação de mudança inicial }
Essencialmente, o consumidor de dados aceita as duas chamadas da memória de dados da XML (solicitações para
Figure BRPI0615679B1_D0042
desfazer mudanças de B e C ennnantr, caindn de mudança principal A) ou senão os dois gerentes do objeto do documento da
XML saem de sincronísmo.
Uma outra alternativa é manter a disparidade atual 5 entre cancelar e desfazer, à medida que ter o consumidor de dados 'cancelando' a mudança atual pode deixar a solução em um estado lógico de negócios inválido. Nesse caso, a memória de dados da XML reverte *somente* a mudança que foi rejeitada/cancelada, desfazendo essa mudança, mas então apenas pa10 raria - não desfazendo quaisquer mudanças adicionais que estão na pilha de anulação da memória.
Consumidores de dados podem também manter suas próprias pilhas de anulação únicas. As aplicações, entretanto, devem ser 'inteligentes' sobre não adicionar ações adi15 cionais nas suas pilhas de anulação quando a ação mais superior na sua pilha iguala a operação solicitada do outro lado do limite de sincronísmo ativo. Por exemplo, se o usuário digita Microsoft Corp no campo <company/> na aplicação de processamento de texto, então essa operação será 'sincroní20 zada ativa' e resultará em uma ação de anulação aparecendo na pilha de anulação de cada consumidor de dados registrado. A seguir, se o usuário fosse pressionar desfazer na aplicação de processamento de texto para remover o texto que foi recentemente inserido, a aplicação de processamento de texto desfaria a última operação na sua pilha de anulação (e informaria a memória de dados para desfazer a última operação na sua pilha), mas nesse momento o consumidor de dados veria essa solicitação e adotaria a última ação da sua pilha de
Ο / Ό anulação (inciuindo quaisquer efeitos coiareraisi porque a pilha de anulação oa memória deve necessariamente igualar a memória de dados. Se o usuário tivesse então pressionado desfazer no consumidor de dados, o consumidor de dados removería a última ação da sua cilha de anulação e da aplicação de processamento de texto, an obter a ação de anulação da memória de dados, percebería que ela iguala a última ação na sua pilha de anulação e removería essa também. Inversamente, se o usuário tivesse então digitado algum texto não ligado na aplicação de processamento de texto (adicionando registros de anulação na aplicação de processamento de texto) antes que eles pressionassem desfazer no consumidor de dados, o cliente removería a última ação da sua pilha de anulação e a memória faria o mesmo, entretanto, a aplicação de processamento de texto adiciona uma outra ação (porque a última coisa na pilha de anulação não é a última mudança da XML) . Entretanto, a aplicação de processamento de texto armazenaria essa mudança junto com o fato que a memória precisa executar um refazer para retornar para o seu estado original.
Uma outra alternativa envolve tornar os consumidores de dados cientes um do outro. O controle de anulação poderia ser passado entre os consumidores de dados. Por exemplo, se o usuário edita o campo <company/> em uma aplicação, que é então difundida para um outro consumidor de dados, então a pilha de anulação se parecería com;
A Ο
Figure BRPI0615679B1_D0043
Figure BRPI0615679B1_D0044
dad^s da XML nãc hospedaria a transação. Preferivelmente, ele hospedaria um marcador que permitiría que ele passasse o controle para o cliente para completar a ação de anulação.
Assumindo que o usuário então fosse para a aplicação de processamento de texto e executasse uma anulação: a tela da aplicação atualizaria de volta e a seguir passaria o controle para a memória de dados. A memória de dados da XML tentaria desfazer a última transação, porém veria o marcador e passa10 ria o controle para o consumidor de dados para essa anulação. O consumidor de dados executaria a solicitação de anulação para a memória, que então a difundiría como uma anulação para todos os outros clientes. Isso significa que se o usuário executasse uma ação no cliente, seguido por uma ação em um campo diferente na aplicação de processamento de texto, as pilhas de anulação se pareceríam com:
Memória Aplicação Consumidor de dados 1
Marcador (passagem para Processo 1) Companhia -> Microsoft Corp. + desfazer memória Companhia -> Microsoft Corp
Data -> 20 de janeiro de 2005 Data -> 29 de janeiro de 2005 + desfazer memória marcador (passagem para hospedeiro)
Figure BRPI0615679B1_D0045
Nesse caso, se a próxima ação rin usuário fosse uma anulação na aplicação hospedeira, então o hospedeiro (e a memória de dados) faria a ação de anulação, que o consumidor de dados executaria no seu próprio DOM e se desfaria do mar5 cador de anulação, Se a próxima ação do usuário fosse uma anulação no consumidor de dados, então o consumidor de dados daria o controle para essa ação para o hospedeiro (porque a ação superior é apenas um 'marcador' ) e a mesma anulação do hospedeiro seria executada,
A figura 4 ilustra um exemplo da sincronização ativa. Em um dos casos mais simples, 'sincronização ativa' se refere à capacidade das edições do usuário dos dados da XML apresentados em uma localização (por exemplo, uma aplicação de processador de texto) serem refletidas na UI de uma outra localização/aplicação em tempo real. Enquanto o documento está sendo editado, mudanças que afetam os dados da XML são passadas para os outros consumidores de dados registrados que estão interessados nos dados, tal como ambos a aplicação de processamento de texto e o painel de propriedade. Isso ajuda a garantir que o conteúdo dos dados da XML de cada aplicação permaneça o mesmo.
Com referência à janela 400, um documento 415 é aberto para edição e um painel de propriedade 420 está mostrando. O título é mostrado em ambos o painel de propriedade
405, bem como no documento 410. Suponha que o título 405 na janela 400 é alterado de Data Binding - Live Sync Integration para Foo Bar Biz, como ilustrado no título 435 e título
440 dentro da janela 425. Tão logo o título seja atualizado
Figure BRPI0615679B1_D0046
dentro do titulo do painel Ho propriedade 4 35, 2 mudança ó enviada para a aplicação de processamento de texto tal que ela pode aceitar ou rejeitar a mudança. Nesse exemplo, a aplicação aceitou a mudança para o título que foi feita usan5 do a aplicação do painel de propriedade e o título 440 dentro do documento é atualizado.
As figuras 5-8 ilustram processos para sincronização em tempo real dos dados da XML entre consumidores de dados .
Quando lendo a discussão das rotinas apresentadas aqui, deve ser verificado que as operações lógicas de várias modalidades são implementadas (1) como uma seqüência de ações implementadas no computador ou módulos de programa funcionando em um sistema de computação e/ou (2) como circuitos lógicos de máquina interligados ou módulos de circuito dentro do sistema de computação. A implementação é uma questão de escolha dependente das exigências de desempenho do sistema de computação implementando a invenção. Dessa maneira, as operações lógicas ilustradas e compondo as modalidades do aqui descrito são citadas variavelmente como operações, dispositivos estruturais, ações ou módulos. Essas operações, dispositivos estruturais, ações e módulos podem ser implementados em software, em firmware, em lógica digital de uso especial e qualquer combinação desses.
A figura 5 ilustra a interação entre dois clientes e uma memória de dados da XML.
A memória de dados 520 recebe uma edição do usuário para o nó A feita usando a aplicação 510. O consumidor
Figure BRPI0615679B1_D0047
de aados 1 530 recebe a notificação da mudença para c nó A da memória de dados 520. Como nm resultado da mudança para o nó A, o consumidor de dados 1 solicita uma mudança de efeito colateral para o nó B. A memória de dados 520 enfíleira a mudança de efeito colateral B para execução pos-.eri.or, Depois que todas as mudanças de efeito colateral foram enfileiradas do consumidor de dados 1, a memória de dados 520 notifica o consumidor de dados 2 540 da mudança para o nó A. 0 consumidor de dados 2 solicita uma mudança de efeito cola10 teral para o nó C. Em resposta, a memória de dados enfileira a mudança do nó C para execução posterior. Nesse momento, o processamento relacionado com o nó A concluiu, mas ainda existem mudanças de efeito colateral pendentes para o nó B e para o nó C. Como o consumidor de dados 1 solicitou a mudan15 ça para o nó B, a memória de dados envia a notificação da mudança proposta de B para o consumidor de dados 2. O consumidor de dados 2 não faz quaisquer mudanças em resposta e aceita a mudança. Similarmente, o consumidor de dados 2 solicitou a mudança para o nó C, então a memória de dados en20 via a notificação da mudança do nó C para o consumidor de dados 1. 0 consumidor de dados 1 aceita a mudança. Nesse exemplo, todas as mudanças foram aceitas por todos os consumidores de dados interessados. Portanto, a memória de dados submete as mudanças para a memória de dados. Em resumo, a memória de dados permite que cada consumidor de dados execute quaisquer mudanças em resposta a uma mudança, a memória de dados executa e transmite mensagem, dessas mudanças na ordem que elas são recebidas, dessa maneira permitindo que e44
Figure BRPI0615679B1_D0048
las sejam transmitidas serialmente.
A figura 6 mostra a interação entre dois consumidores de dados externos e uma mudança na memória de dados da
XML.
No caso onde a mudança original foi gerada por um cliente interno, tal como a aplicação que criou c documento mostrado na figura 5, o consumidor de dados muda ligeiramente. Esse exemplo ilustra duas regras básicas de mudanças de múltiplos clientes. A primeira regra é que as mudanças de nível superior ocorrem primeiro. A segunda regra envolve o enfileiramento das mudanças de efeito colateral.
A primeira regra se refere ao fato que os efeitos colaterais de uma mudança acontecem antes que qualquer nova mudança possa ocorrer. Considere o exemplo seguinte, onde o consumidor de dados 1 executa uma função para fazer duas mudanças. A primeira mudança é feita no nó A e a segunda mudança no nó B.
Quando o consumidor de dados 1 630 solicita uma mudança no nó A, a notificação é enviada para o consumidor de dados 2 640 depois que a memória de dados da XML 620 recebe a solicitação para mudar o nó A. Em resposta, o consumidor de dados 2 solicita uma mudança de efeito colateral para o nó C que é enfileirada pela memória de dados para execução posterior. O consumidor de dados 1 então solicita uma mudança para o nó B que é enfileirada desde que a mudança para o nó A ainda não foi concluída. O consumidor de dados 2 aceita a mudança para o nó A, e em resposta, a memória de dados executa a mudança de efeito colateral enfileirada
Figure BRPI0615679B1_D0049
para C. 0 consumidor de dados 1 recebe a notificação ria mudança para o nó C e pode responder à mudança. Nesse exemplo, o consumidor de dados 1 aceita a mudança, A memória de dados então executou a mudança de efeito colateral enfileirada pa5 ra B que foi solicitada pelo consumidor de dados 1. 0 consumidor de dados 2 recebe a notificação da mudança B da memória de dados para a qual ele pode responder. 0 consumidor de dados 2 aceita a mudança e as mudanças são submetidas para a memória de dados.
Nesse caso, o consumidor de dados 2 responde primeiro para a mudança em A, de modo que as duas linhas seguintes do código disparam duas mudanças únicas:
doc.CustomXMLParts(1).SelectSingleNode{).AddNode( foo,bar) doc.CustomXMLParts(1).SelectSingleNode{).AddNode( foo2,bar)
Uma segunda regra se refere ao fato que os efeitos colaterais de uma mudança são enfileirados quando eles são solicitados e, portanto, múltiplas mudanças podem ser enfileiradas antes que os efeitos colaterais da primeira mudança ocorram.
A figura 7 mostra um processo envolvendo múltiplas mudanças de efeito colateral. O exemplo seguinte ilustra as mudanças seguintes. Suponha que o consumidor de dados 1 730, quando ele recebe uma notificação que o nó A é alterado, deseja executar mudanças de efeito colateral nos nós B e C. O
Figure BRPI0615679B1_D0050
consumidor ae dados 2 740, em resoosta à notificação da mudança para o nó B, deseja executar mudanças de efeito colateral nos nós D, E e F.
Com referência à figura 7, pode ser observado que o consumidor de dados 1 causa rodas as suas mudanças de efeito colateral como um resultado da notificação da mudança para o nó A antes que os efeitos colaterais relacionados com a mudança do nó B sejam executados. Portanto, as mudanças no nó C ocorrem antes das mudanças nos nós D, E e F.
A figura 8 ilustra um processo mostrando que os efeitos colaterais do chamador são executados por último. Uma pessoa pode ainda observar que nesse caso, os efeitos colaterais gerados pelo próprio consumidor de dados 1 acontecerão depois que todos os outros clientes tenham tido uma chance de ver a mudança e gerar seus próprios efeitos colaterais. Isso é um efeito colateral necessário do fato que a memória de dados da XML informa cada cliente de uma mudança (para garantir que cada cliente tenha uma chance de aceitar/rejeitar essa mudança) antes que ela possa retornar a condição de sucesso para o chamador e permitir que o chamador proveja o evento com o qual fazer os efeitos colaterais. É previsível· que o consumidor de dados que solicitou uma mudança deva ser o último, de modo a saber se a mudança foi aceita ou rejeitada por todos os clientes da memória de da25 dos da XML. Também, isso ajuda a garantir que se as duas mudanças são conflitantes e não estruturais, a mudança do chamador obtém o que é geralmente o resultado desejado.
O relatório descritivo acima, exemplos e dados p r οvêem s i ça o da
Figure BRPI0615679B1_D0051
ma descrição completa da faoricacão e cso da oompr'·invenção.

Claims (20)

  1. REIVINDICAÇÕES
    1. Meio legível por computador, contendo instruções executáveis por computador para sincronizar itens de dados estruturados que são associados com um documento
    5 gerado pelo computador e que são compartilhados através de consumidores de dados, os consumidores de dados sendo aplicativos executáveis por computador, o método de sincronização compreendendo armazenar itens de dados estruturados que são associados com um documento em uma memó10 ria de dados, onde a memória de dados é separada do documento, o método de sincronização caracterizado por:
    iniciar uma mudança em um item de dados estruturado dentro da memória de dados por um primeiro consumidor de dados, o item de dados estruturado compreendendo
    15 múltiplos pedaços de dados estruturados, dita mudança ocorrendo sobre ao menos um pedaço de dado estruturado;
    determinar se existem outros consumidores de dados que estão interessados na mudança no item de dados estruturados, sendo que a determinação ocorre caso os ou20 tros consumidores de dados registrem através de uma API, uma solicitação de notificação de mudança no item de dados estruturado;
    notificar os outros consumidores de dados da mudança, onde os outros consumidores de dados podem execu25 tar pelo menos um dentre: aceitar a mudança, rejeitar a mudança e iniciar uma mudança de efeito colateral como um resultado da mudança original, na qual a mudança de efeito colateral é uma mudança iniciada por um dos outros
    Petição 870180046273, de 30/05/2018, pág. 4/15 consumidores de dados em resposta à mudança iniciada pelo primeiro consumidor de dados, sendo que ao menos uma das mudanças é uma mudança sobre um outro pedaço dos pedaços de dados estruturados; e submeter a mudança iniciada pelo primeiro consumidor de dados e qualquer mudança colateral iniciada à memória de dados quando a mudança é aceita e reverter a memória de dados para um estado antes do momento quando a mudança foi iniciada quando a mudança é rejeitada.
  2. 2. Meio legível por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende estruturar os itens de dados estruturados dentro da memória de dados de acordo com as especificações da linguagem de marcação extensível (XML).
  3. 3. Meio legível por computador, de acordo com a reivindicação 2, caracterizado pelo fato de que ainda compreende expor uma interface de programação de aplicação (API) aos consumidores de dados que permite o acesso programático aos itens de dados estruturados; onde a API proporciona a capacidade de acessar os itens de dados estruturados dentro da memória de dados enquanto o documento está aberto e onde a API permite que mais de um consumidor de dados acesse um mesmo item de dados estruturados ao mesmo tempo; e onde a API proporciona aos consumidores de dados a capacidade de se inscrever para uma notificação que envolve um ou mais dos itens de dados estruturados.
  4. 4. Meio legível por computador, de acordo com a de 30/05/2018, pág. 5/15 reivindicação 3, caracterizado pelo fato de que ainda compreende atualizar uma exibição que está associada a um dos outros consumidores de dados com um valor do item de dados estruturados que foi alterado pelo primeiro consumidor de dados.
  5. 5. Meio legível por computador, de acordo com a reivindicação 4, caracterizado pelo fato de que a mudança do efeito colateral é enfileirada para execução posterior, onde a execução posterior ocorre depois que cada um dos consumidores de dados tiver tido uma chance de aceitar, rejeitar e fazer uma mudança de efeito colateral.
  6. 6. Meio legível por computador, de acordo com a reivindicação 4, caracterizado pelo fato de que submeter a mudança quando aceita compreende processar cada efeito colateral e determinar se cada efeito colateral é aceito.
  7. 7. Meio legível por computador, de acordo com a reivindicação 4, caracterizado pelo fato de que ainda compreende manter uma lista de anulação que pode ser usada para retornar a memória de dados de volta para o estado antes do momento quando a mudança foi iniciada.
  8. 8. Método implementado por computador para compartilhar itens de dados estruturados entre consumidores de dados, os itens de dados estruturados sendo associados com documentos gerados pelo computador, os consumidores de dados sendo aplicativos consumidores de dados executáveis em computador, o método caracterizado por:
    iniciar, por um primeiro consumidor de dados, uma mudança em um item de dados estruturados que estão de 30/05/2018, pág. 6/15 contidos dentro de uma memória de dados e estão associados com um documento, onde o item de dados estruturados é estruturado de acordo com uma linguagem de marcação extensível (XML) e onde a memória de dados e separada do documento, o item de dados estruturados compreendendo múltiplos pedaços de dados estruturados, a mudança ocorrendo ao menos sobre um dos pedaços de dados estruturados;
    proporcionar a notificação da mudança para consumidores de dados inscritos;
    enfileirar as mudanças de efeito colateral iniciadas por outros consumidores de dados inscritos em resposta à mudança iniciada pelo primeiro consumidor de dados, para processamento posterior, determinar quando uma resposta de um dos consumidores de dados inscritos é uma rejeição da mudança, e no caso da resposta ser uma rejeição, reverter a mudança iniciada pelo primeiro consumidor de dados e quaisquer mudanças de efeito colateral de todos os consumidores de dados dentro da memória de dados para um último estado bom conhecido; e determinar quando cada um dos consumidores de dados inscritos aceita a mudança, e caso cada um dos consumidores de dados inscritos aceite a mudança, validar a mudança usando um arquivo de esquema XML que é provido por um dos consumidores de dados através de uma API e submeter a mudança iniciada pelo primeiro consumidor de dados e quaisquer mudanças de efeito colateral de todos os consumidores de dados para a memória de dados.
    de 30/05/2018, pág. 7/15
  9. 9. Método implementado por computador, de acordo com a reivindica9ao 8, caracterizado pelo fato de que iniciar a mudança em um item de dados estruturados que está contido dentro da memória de dados compreende expor uma interface de programação da aplicação (API) que provê a capacidade para os consumidores de dados acessarem os itens de dados estruturados dentro da memória de dados, onde a API permite que mais do que um dos consumidores de dados acesse um mesmo item de dados estruturados ao mesmo tempo.
  10. 10. Método implementado por computador, de acordo com a reivindicação 9, caracterizado pelo fato de que também compreende receber uma mudança de efeito colateral em resposta a notificação e retardar a execução da mudança do efeito colateral dentro da memória de dados até que a mudança tenha sido processada.
  11. 11. Método implementado por computador, de acordo com a reivindicação 10, caracterizado pelo fato de que também compreende enfileirar a mudança do efeito colateral dentro da memória de dados.
  12. 12. Método implementado por computador, de acordo com a reivindicação 10, caracterizado pelo fato de que determinar quando cada um dos consumidores de dados registados aceita a mudança compreende determinar quando a mudança é aceita por cada consumidor de dados e quando cada uma das mudanças de efeito colateral é aceita.
  13. 13. Método implementado por computador, de acordo com a reivindicação 10, caracterizado pelo fato de que de 30/05/2018, pág. 8/15 ainda compreende manter uma lista de anulação que é usada para retornar a memória de dados de volta para o último estado bom conhecido.
  14. 14. Sistema para sincronizar os itens de dados estruturados que são associados com um documento gerado por computador entre consumidores de dados, os consumidores de dados sendo aplicativos executados por computador, o sistema caracterizado pelo fato de que compreende:
    um consumidor de dados interno (314) que é configurado para criar e editar o documento e que é configurado para interagir com os itens de dados estruturados que são associados com o documento gerado em computador;
    consumidores de dados externos (318) que são configurados para interagir com itens de dados estruturados que são associados com o documento gerado em computador; e uma memória de dados (302) que é configurada para armazenar os itens de dados estruturados que são associados com o documento gerado em computador separado do documento gerado em computador, onde a memória de dados compreende: um agente da API que é configurado para interagir com os consumidores de dados externos e os consumidores de dados internos e que é configurado para receber uma mudança proposta para ao menos um dos itens de dados estruturados e, em resposta à mudança proposta, notificar consumidores de dados inscritos da mudança proposta, submeter a mudança à memória de dados quando a mudança proposta é aceita e quando a mudança proposta não é aceita, de 30/05/2018, pág. 9/15 garantir que a memória de dados fique em um estado válido, o item de dados estruturado compreendendo múltiplos pedaços de dados estruturados, a mudança sendo relativa ao pelo menos um dos pedaços de dados estruturados, onde
    5 a memória de dados também inclui uma memória de mudança que é configurada para armazenar a mudança iniciada pelo primeiro consumidor de dados e mudanças de efeito colateral que são iniciadas por consumidores de dados inscritos em resposta à mudança iniciada pelo primeiro consumidor
    10 de dados e uma memória de anulação que é configurada para reverter a memória de dados para o estado válido.
  15. 15. Sistema, de acordo com a reivindicação 14, caracterizado pelo fato de que também compreende estruturar os itens de dados estruturados dentro da memória de
    15 dados de acordo com uma linguagem de marcação extensível (XML).
  16. 16. Sistema, de acordo com a reivindicação 15, caracterizado pelo fato de que a memória de dados é ainda configurada para enfileirar as mudanças de efeito colate20 ral para execução posterior, em que a execução posterior é configurada para ocorrer depois que cada consumidor de dados inscrito ter tido a chance para aceitar, rejeitar e fazer uma mudança de efeito colateral.
  17. 17. Sistema, de acordo com a reivindicação 16,
    25 caracterizado pelo fato de que a memória de dados é ainda configurada para processar cada efeito colateral e determinar se cada efeito colateral é aceito.
  18. 18. Sistema, de acordo com a reivindicação 16,
    Petição 870180046273, de 30/05/2018, pág. 10/15 caracterizado pelo fato de que a memória de dados é também configurada para:
    receber uma mudança nos dados de marcação da linguagem de marcação extensível (XML) aplicada no item
    5 de dados estruturados, ler um arquivo de esquema da XML associado com o item de dados estruturados para o qual a mudança dos dados de marcação da XML é direcionada, determinar se a mudança nos dados de marcação da 10 XML é válida de acordo com o arquivo de esquema XML lido;
    e proibir a mudança nos dados de marcação XML se a mudança nos dados de marcação XML não é válida de acordo com o arquivo do esquema da XML lido; e submeter a mudan15 ça quando a mudança nos dados de marcação XML é válida de acordo com o arquivo de esquema da XML lido.
  19. 19. Sistema, de acordo com a reivindicação 16, caracterizado pelo fato de que a memória de dados compreende uma pluralidade de memórias de dados da XML, em que
  20. 20 cada uma compreende uma memória de anulação e uma memória de mudança.
    20. Sistema, de acordo com a reivindicação 19, caracterizado pelo fato de que cada memória de anulação é configurada para se comunicar com as outras memória de
    25 anulação.
    Petição 870180046273, de 30/05/2018, pág. 11/15 ζ
    /3
    Í72 !Α '
    Fí^.2 f
    300
    Documento
    315
    Meno. ãnu......-lacão.
    Consumidoi de dados internos ] 314
    Consumidor de ciados internos 1
    314 ünsumidoi' de dados internos
    314
    ». dfcí erra
    Mlb. ÚJILICamada de apresentação 3()4
    Esquea(s) da XML
    305 lacão
    306 ΐΒΐυ'. tfe1· erra ou: 'ãhLP lacão
    N
    306
    Agente interno (API)
    3Í2
    Agente externo (API) 3Jg
    Memó- 1 Memó-| ria de ria 1 mudan- ' de , ça 1 anu- | lação’ 308 1 310 _j
    Memória de dados
    302
    Consumidor de dados externos 1
    313
    Consumidor de dados externos 2
    313
    Consumidor de dados externos' N
    318
    Memória da XML fíS.3
    320
    F*r tdfc vw hwl fei^ TeuU T*w« tnrtiev * : * w * x o a «> p » Ííle: CÚt« fkifnç -liw 5ync 4\>405
    Word fa0fr 5tOJM<
    ίιΜΤϊ ijuMàúf»;
    t\,420
    TristaaOasni
    Be«9u jat Data Binding - Live Sync lníegration l:j· t -.^Jyv.í. . lL.-T/rCj-í lr.'?T ή
    4\,4?5
    3 Significant changes mada afterthe Raview wlll be roted in Graen, like this is. ΐ sígnificant changes made after the Critique wül bs noted in Yeilow, like this is.
    ISigntffcant bug changes after Coding starts wfl hs noted in Red, like this is, Signifcent ÇtÇJ&g. after Code complete wili be noted in Black, like this is.
    1 Abstraot.................................................................................................2 £ OverView & Scope........................ z
    3 Defirtitions.................................................... ,2
    4 Prototype............................... 2
    5 coais...................,,,......................................................................;..z et! tda tfw nw! Am TUM Teta W.ln.i U X ΰ .1 *9 Ç» f*ttwí Ue ***, : .·.·.· ; ·, vz:.-“ / r «4 ;A.·. a‘,«. ^ÇráWtyifjéSS^^WA::
    Λ 440
    3 Signifca/ft changes made after the Rbvibw will be ncted in Green, like this s. J .·: Significant chances made afterthE Critique will be noted in Yeilow, lifce this is.
    ISignifc-ant buo changes after Coding Starts wi) be ncted in Red, like this ;s. 1
    Signifcent ββ?£ after Code Completo wif! be note d in Black, like this is. - | ’ l Abstraot,,............................................................................. 2 .2 OverView Br Eeope.......................................... 2
    3 Derinitiorrs................................................... 2
    4 Praioty pe............ £
    5 Gdals.....................................................................................................2
    ¢.
    ÍUK
BRPI0615679A 2005-09-09 2006-09-07 sincronização em tempo real de dados de xml entre aplicações BRPI0615679B8 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US71598605P 2005-09-09 2005-09-09
US60/715,986 2005-09-09
US11/332,468 2006-01-13
US11/332,468 US7953696B2 (en) 2005-09-09 2006-01-13 Real-time synchronization of XML data between applications
PCT/US2006/034974 WO2007030683A2 (en) 2005-09-09 2006-09-07 Real-time synchronization of xml data between applications

Publications (3)

Publication Number Publication Date
BRPI0615679A2 BRPI0615679A2 (pt) 2011-05-24
BRPI0615679B1 true BRPI0615679B1 (pt) 2018-08-28
BRPI0615679B8 BRPI0615679B8 (pt) 2019-02-05

Family

ID=37836499

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0615679A BRPI0615679B8 (pt) 2005-09-09 2006-09-07 sincronização em tempo real de dados de xml entre aplicações

Country Status (13)

Country Link
US (1) US7953696B2 (pt)
EP (1) EP1922652B1 (pt)
JP (1) JP5085548B2 (pt)
KR (1) KR101310988B1 (pt)
CN (1) CN101263480B (pt)
AU (1) AU2006287364B2 (pt)
BR (1) BRPI0615679B8 (pt)
CA (1) CA2618109C (pt)
MY (1) MY149775A (pt)
NO (1) NO341614B1 (pt)
RU (1) RU2439680C2 (pt)
SG (1) SG165356A1 (pt)
WO (1) WO2007030683A2 (pt)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707498B2 (en) * 2004-09-30 2010-04-27 Microsoft Corporation Specific type content manager in an electronic document
US7730394B2 (en) * 2005-01-06 2010-06-01 Microsoft Corporation Data binding in a word-processing application
US7945590B2 (en) * 2005-01-06 2011-05-17 Microsoft Corporation Programmability for binding data
US7668873B2 (en) * 2005-02-25 2010-02-23 Microsoft Corporation Data store for software application documents
US7752224B2 (en) * 2005-02-25 2010-07-06 Microsoft Corporation Programmability for XML data store for documents
US7953696B2 (en) 2005-09-09 2011-05-31 Microsoft Corporation Real-time synchronization of XML data between applications
CN1859379B (zh) * 2005-12-07 2011-02-09 华为技术有限公司 一种可扩展标记语言文档管理方法及系统
JP2007279838A (ja) * 2006-04-03 2007-10-25 Ibm Japan Ltd 情報処理装置、方法およびプログラム
US7756865B2 (en) * 2006-08-09 2010-07-13 Infoprint Solutions Company, Llc Extendable meta-data support in final form presentation datastream print enterprises
US9354960B2 (en) 2010-12-27 2016-05-31 Red Hat, Inc. Assigning virtual machines to business application service groups based on ranking of the virtual machines
US9477572B2 (en) 2007-06-22 2016-10-25 Red Hat, Inc. Performing predictive modeling of virtual machine relationships
US9569330B2 (en) 2007-06-22 2017-02-14 Red Hat, Inc. Performing dependency analysis on nodes of a business application service group
US9727440B2 (en) 2007-06-22 2017-08-08 Red Hat, Inc. Automatic simulation of virtual machine performance
US8825838B2 (en) 2010-10-15 2014-09-02 Red Hat, Inc. Identification of business process application service groups
US8656009B2 (en) * 2010-10-15 2014-02-18 Red Hat, Inc. Indicating an impact of a change in state of a node
US9678803B2 (en) 2007-06-22 2017-06-13 Red Hat, Inc. Migration of network entities to a cloud infrastructure
US8938489B2 (en) 2007-06-22 2015-01-20 Red Hat, Inc. Monitoring system performance changes based on configuration modification
US8370740B2 (en) * 2008-03-11 2013-02-05 Microsoft Corporation Document-level features in add-ins
US7793002B2 (en) * 2008-06-06 2010-09-07 Fisher-Rosemount Systems, Inc. Methods and apparatus for implementing a sequential synchronization hierarchy among networked devices
US20090327213A1 (en) * 2008-06-25 2009-12-31 Microsoft Corporation Document index for handheld application navigation
US8195707B1 (en) * 2008-09-30 2012-06-05 Adobe Systems Incorporated Identifying and reacting to changes in an extensible automatic runtime object management system
KR20100113975A (ko) * 2009-04-14 2010-10-22 엘지전자 주식회사 과거에 수행된 특정 동작을 선택적으로 취소하는 xml 문서 관리 방법 및 이를 이용한 시스템
JP5360978B2 (ja) * 2009-05-22 2013-12-04 株式会社日立製作所 ファイルサーバ、及びファイルサーバにおけるファイル操作通知方法
US8429118B2 (en) * 2009-10-23 2013-04-23 Microsoft Corporation Embedding and retrieving data in an application file format
EP2325758A1 (en) * 2009-11-02 2011-05-25 DAD Solutions Limited Database schema
CA2795917A1 (en) 2010-04-12 2011-10-20 Google Inc. Real-time collaboration in a hosted word processor
CA2796299A1 (en) 2010-04-12 2011-10-20 Google Inc. Collaborative cursors in a hosted word processor
GB2479548A (en) * 2010-04-13 2011-10-19 Thales Holdings Uk Plc Server and method of sharing data
US20110282829A1 (en) * 2010-05-14 2011-11-17 Oracle International Corporation Workflow task routing based on cardinality of task data
US9589240B2 (en) 2010-05-14 2017-03-07 Oracle International Corporation System and method for flexible chaining of distinct workflow task instances in a business process execution language workflow
US9852382B2 (en) 2010-05-14 2017-12-26 Oracle International Corporation Dynamic human workflow task assignment using business rules
US9741006B2 (en) 2010-05-14 2017-08-22 Oracle International Corporation System and method for providing complex access control in workflows
US8819055B2 (en) 2010-05-14 2014-08-26 Oracle International Corporation System and method for logical people groups
US8572029B2 (en) 2010-05-31 2013-10-29 Salesforce.Com, Inc. Methods and systems for synchronizing data in a multi-tenant database environment
US9092576B2 (en) * 2010-06-25 2015-07-28 International Business Machines Corporation Non-intrusive measurement of content quality using dry runs with roll-back
US8612307B2 (en) * 2011-01-03 2013-12-17 Stanley Benjamin Smith System and method to price and exchange data producers and data consumers through formatting data objects with necessary and sufficient item definition information
US10503817B2 (en) 2011-01-12 2019-12-10 Crucs Holdings, Llc System and method for multi-party document revision
US8566708B1 (en) 2011-01-13 2013-10-22 Google Inc. Merging electronic document redraws
US8700986B1 (en) 2011-03-18 2014-04-15 Google Inc. System and method for displaying a document containing footnotes
US8510266B1 (en) 2011-03-03 2013-08-13 Google Inc. System and method for providing online data management services
US10789272B2 (en) * 2011-06-06 2020-09-29 International Business Machines Corporation Scalable, distributed containerization across homogenous and heterogeneous data stores
US8484561B1 (en) 2011-09-02 2013-07-09 Google Inc. System and method for updating an object instance based on instructions received from multiple devices
US9336137B2 (en) 2011-09-02 2016-05-10 Google Inc. System and method for performing data management in a collaborative development environment
US8612405B1 (en) 2011-09-30 2013-12-17 Emc Corporation System and method of dynamic data object upgrades
US9164751B2 (en) * 2011-09-30 2015-10-20 Emc Corporation System and method of rolling upgrades of data traits
US8738706B1 (en) 2011-11-16 2014-05-27 Google Inc. Systems and methods for collaborative document editing
US9020883B2 (en) 2012-02-22 2015-04-28 Oracle International Corporation System and method to provide BPEL support for correlation aggregation
US9286276B2 (en) * 2012-06-11 2016-03-15 Google Inc. System and method of document embedding in collaborative editors
CN102752315B (zh) * 2012-07-25 2015-03-18 烽火通信科技股份有限公司 一种灵活适应ims系统业务标签的业务解析方法
WO2014043607A1 (en) * 2012-09-14 2014-03-20 One To The World, Llc System, method and apparatus for enhanced internet broadcasting
US12045255B2 (en) * 2012-09-28 2024-07-23 Apple Inc. Data storage management and synchronization
CN103810314B (zh) * 2012-11-15 2019-02-01 商业对象软件有限公司 仪表板合作器
US9462037B2 (en) 2013-01-07 2016-10-04 Google Inc. Dynamically sizing chunks in a partially loaded spreadsheet model
US10956667B2 (en) 2013-01-07 2021-03-23 Google Llc Operational transformations proxy for thin clients
US9311622B2 (en) 2013-01-15 2016-04-12 Google Inc. Resolving mutations in a partially-loaded spreadsheet model
US9460073B2 (en) * 2013-02-27 2016-10-04 Google Inc. Systems and methods for mutations and operational transforms in a collaborative spreadsheet environment
US10037197B2 (en) 2013-03-15 2018-07-31 Oracle International Corporation Flexible microinstruction system for constructing microprograms which execute tasks, gateways, and events of BPMN models
US9817805B1 (en) 2014-06-24 2017-11-14 Google Inc. Systems and methods for providing a collaborative document environment
US9684646B2 (en) 2014-08-05 2017-06-20 Apple Inc. Reference representation and transformation in collaborative documents
US20160321226A1 (en) * 2015-05-01 2016-11-03 Microsoft Technology Licensing, Llc Insertion of unsaved content via content channel
US20160378735A1 (en) * 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Metamorphic documents
US10021187B2 (en) * 2015-06-29 2018-07-10 Microsoft Technology Licensing, Llc Presenting content using decoupled presentation resources
RU2613026C1 (ru) * 2015-09-30 2017-03-14 Общество с ограниченной ответственностью "Интерсофт" Способ подготовки документов на языках разметки при реализации пользовательского интерфейса для работы с данными информационной системы
EP3358470B1 (en) 2015-09-30 2020-11-04 Obschestvo S Ogranichennoy Otvetstvennostyu "Intersoft" Method of preparing documents in markup languages
US11030390B2 (en) * 2016-01-11 2021-06-08 Microsoft Technology Licensing, Llc Sharing content between electronic documents
US10346532B2 (en) 2016-02-02 2019-07-09 ActiveWrite, Inc. Document collaboration and consolidation tools and methods of use
US9971826B1 (en) 2016-09-14 2018-05-15 SyncRTC Inc. Methods and apparatus for a distributed shared memory for device synchronization
CN106528506B (zh) * 2016-10-20 2019-05-03 广东小天才科技有限公司 一种基于xml标签的数据处理方法、装置及终端设备
KR101903039B1 (ko) * 2016-11-21 2018-10-01 (주)솔트웍스 문서 통합 관리 시스템을 위한 동기화 장치
WO2020014362A1 (en) * 2018-07-11 2020-01-16 Xcential Corporation Method for extending change management in an xml document to allow for groupings and nesting of changes
US11989794B2 (en) 2019-09-12 2024-05-21 Xcential Corporation System and method for document extraction and synthesis
RU2728809C1 (ru) * 2019-12-30 2020-07-31 Банк ВТБ (публичное акционерное общество) Способ и система валидации сложных структур данных в комплексной микросервисной архитектуре с визуальным отображением результатов
CN113704670A (zh) * 2021-09-02 2021-11-26 工银科技有限公司 数据共享方法、装置、设备、介质和程序产品

Family Cites Families (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05504428A (ja) * 1989-08-01 1993-07-08 シリコン・グラフィックス,インコーポレイテッド コンピュータオペレーティング及びファイル管理システム用ファイル変更モニタ
BR9306961A (pt) * 1992-08-26 1999-01-12 Bellsouth Corp Sistema de comunicações de número pessoal
US5440745A (en) * 1993-04-29 1995-08-08 International Business Machines Corporation Batch format processing of record data
US5787449A (en) * 1994-06-02 1998-07-28 Infrastructures For Information Inc. Method and system for manipulating the architecture and the content of a document separately from each other
US5630131A (en) * 1994-11-14 1997-05-13 Object Technology Licensing Corp. Method and apparatus for importing and exporting archive files for a graphical user interface
US5911068A (en) * 1995-03-30 1999-06-08 Microsoft Corporation Container independent control architecture
JP3700733B2 (ja) * 1995-06-12 2005-09-28 富士ゼロックス株式会社 文書管理装置及び文書管理方法
US5727348A (en) * 1995-11-07 1998-03-17 Arnell; Louis G. Portable remote controlled door closer
US20050114218A1 (en) * 1996-01-17 2005-05-26 Privacy Infrastructure, Inc. Third party privacy system
US6006239A (en) * 1996-03-15 1999-12-21 Microsoft Corporation Method and system for allowing multiple users to simultaneously edit a spreadsheet
US6088431A (en) * 1996-03-20 2000-07-11 Aeris Communications, Inc. Method for transmitting voice or data in a wireless network depending on billing account status
US5715415A (en) * 1996-06-05 1998-02-03 Microsoft Corporation Computer application with help pane integrated into workspace
US5845299A (en) 1996-07-29 1998-12-01 Rae Technology Llc Draw-based editor for web pages
US5903902A (en) * 1996-09-09 1999-05-11 Design Intelligence, Inc. Design engine with tree and component structure
US7062500B1 (en) * 1997-02-25 2006-06-13 Intertrust Technologies Corp. Techniques for defining, using and manipulating rights management data structures
GB9707333D0 (en) * 1997-04-11 1997-05-28 British Biotech Pharm Metalloproteinase inhibitors
US6256627B1 (en) * 1997-07-08 2001-07-03 At&T Corp. System and method for maintaining a knowledge base and evidence set
US5991878A (en) 1997-09-08 1999-11-23 Fmr Corp. Controlling access to information
US5974430A (en) 1997-09-30 1999-10-26 Unisys Corp. Method for dynamically embedding objects stored in a web server within HTML for display by a web browser
US6157940A (en) 1997-11-21 2000-12-05 International Business Machines Corporation Automated client-based web server stress tool simulating simultaneous multiple user server accesses
US6247020B1 (en) * 1997-12-17 2001-06-12 Borland Software Corporation Development system with application browser user interface
AUPP252298A0 (en) * 1998-03-24 1998-04-23 80-20 Software Pty Limited Document management software
US6731314B1 (en) * 1998-08-17 2004-05-04 Muse Corporation Network-based three-dimensional multiple-user shared environment apparatus and method
US6562076B2 (en) * 1998-08-31 2003-05-13 Xerox Corporation Extending application behavior through active properties attached to a document in a document management system
GB2341523B (en) * 1998-09-12 2003-10-29 Ibm Apparatus and method for establishing communication in a computer network
US6397351B1 (en) * 1998-09-28 2002-05-28 International Business Machines Corporation Method and apparatus for rapid data restoration including on-demand output of sorted logged changes
US6275824B1 (en) * 1998-10-02 2001-08-14 Ncr Corporation System and method for managing data privacy in a database management system
US6507856B1 (en) * 1999-01-05 2003-01-14 International Business Machines Corporation Dynamic business process automation system using XML documents
US6490601B1 (en) 1999-01-15 2002-12-03 Infospace, Inc. Server for enabling the automatic insertion of data into electronic forms on a user computer
US6317777B1 (en) 1999-04-26 2001-11-13 Intel Corporation Method for web based storage and retrieval of documents
US6920455B1 (en) * 1999-05-19 2005-07-19 Sun Microsystems, Inc. Mechanism and method for managing service-specified data in a profile service
US6859821B1 (en) * 1999-07-19 2005-02-22 Groove Networks, Inc. Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration
US7039863B1 (en) 1999-07-23 2006-05-02 Adobe Systems Incorporated Computer generation of documents using layout elements and content elements
EP1330727A2 (en) 1999-08-05 2003-07-30 Oracle Corporation Internet file system
JP3634199B2 (ja) 1999-08-05 2005-03-30 富士通株式会社 電子文書作成支援装置,及び、電子文書作成支援用データ及び電子文書作成支援プログラムを格納したコンピュータ可読媒体
AU6801000A (en) 1999-08-26 2001-03-19 Cma Business Credit Services Service bureau architecture
WO2001050349A1 (en) * 1999-12-30 2001-07-12 Rutgers, The State University Of New Jersey Electronic document customization and transformation utilizing user feedback
US20040220926A1 (en) 2000-01-03 2004-11-04 Interactual Technologies, Inc., A California Cpr[P Personalization services for entities from multiple sources
US7237002B1 (en) * 2000-01-04 2007-06-26 International Business Machines Corporation System and method for dynamic browser management of web site
US6944622B1 (en) * 2000-01-20 2005-09-13 International Business Machines Corporation User interface for automated project management
US6701314B1 (en) * 2000-01-21 2004-03-02 Science Applications International Corporation System and method for cataloguing digital information for searching and retrieval
US7340481B1 (en) * 2000-01-21 2008-03-04 International Business Machines Corp. Method and system for adding user-provided content to a content object stored in a data repository
US20020010716A1 (en) * 2000-02-24 2002-01-24 Mccartney Alan F. System and method for dynamically publishing XML-compliant documents
US6629843B1 (en) 2000-03-22 2003-10-07 Business Access, Llc Personalized internet access
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US6571253B1 (en) * 2000-04-28 2003-05-27 International Business Machines Corporation Hierarchical view of data binding between display elements that are organized in a hierarchical structure to a data store that is also organized in a hierarchical structure
US6941510B1 (en) 2000-06-06 2005-09-06 Groove Networks, Inc. Method and apparatus for efficient management of XML documents
AUPQ808700A0 (en) * 2000-06-09 2000-07-06 Honeywell Limited Human-machine interface
US20010056463A1 (en) 2000-06-20 2001-12-27 Grady James D. Method and system for linking real world objects to digital objects
US6944662B2 (en) 2000-08-04 2005-09-13 Vinestone Corporation System and methods providing automatic distributed data retrieval, analysis and reporting services
WO2002023336A1 (en) * 2000-09-14 2002-03-21 Bea Systems, Inc. Xml-based graphical user interface application development toolkit
US7190976B2 (en) * 2000-10-02 2007-03-13 Microsoft Corporation Customizing the display of a mobile computing device
JP2002118734A (ja) 2000-10-06 2002-04-19 Canon Inc 画像処理方法及び装置
WO2002059793A2 (en) * 2000-10-31 2002-08-01 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
US7191252B2 (en) * 2000-11-13 2007-03-13 Digital Doors, Inc. Data security system and method adjunct to e-mail, browser or telecom program
JP2002229723A (ja) 2000-11-30 2002-08-16 Ocha No Gyokuroen:Kk 入力方法、入力装置、プログラム及び記録媒体
US6996800B2 (en) * 2000-12-04 2006-02-07 International Business Machines Corporation MVC (model-view-controller) based multi-modal authoring tool and development environment
US6950990B2 (en) 2000-12-11 2005-09-27 Microsoft Corporation Navigation tool for accessing workspaces and modules in a graphical user interface
US7076728B2 (en) * 2000-12-22 2006-07-11 International Business Machines Corporation Method and apparatus for end-to-end content publishing system using XML with an object dependency graph
US7085773B2 (en) * 2001-01-05 2006-08-01 Symyx Technologies, Inc. Laboratory database system and methods for combinatorial materials research
JP4099948B2 (ja) 2001-01-18 2008-06-11 株式会社日立製作所 構造化文書をプログラム言語の構造体データへマッピングするシステム及び方法及びプログラム
US20030164859A1 (en) * 2001-02-02 2003-09-04 Evans Clark Cameron Hybrid widget/layout user interface for structured information
US6963930B2 (en) 2001-02-15 2005-11-08 Centric Software, Inc. Automatic transfer and expansion of application-specific data for display at a website
US6996769B1 (en) * 2001-02-28 2006-02-07 Cisco Technology, Inc. Method and system for generating documentation from operating system command syntax
US6950831B2 (en) * 2001-03-23 2005-09-27 Siemens Medical Solutions Health Services Corporation Processing system for use with a user interface display
US6915482B2 (en) * 2001-03-28 2005-07-05 Cyber Watcher As Method and arrangement for web information monitoring
US7134075B2 (en) 2001-04-26 2006-11-07 International Business Machines Corporation Conversion of documents between XML and processor efficient MXML in content based routing networks
US20020198962A1 (en) 2001-06-21 2002-12-26 Horn Frederic A. Method, system, and computer program product for distributing a stored URL and web document set
US7287227B2 (en) * 2001-06-29 2007-10-23 Ve Enterprises Llc System and method for editing web pages in a client/server architecture
US7117504B2 (en) 2001-07-10 2006-10-03 Microsoft Corporation Application program interface that enables communication for a network software platform
US7305614B2 (en) * 2001-07-17 2007-12-04 International Business Machines Corporation Interoperable retrieval and deposit using annotated schema to interface between industrial document specification languages
US6990534B2 (en) * 2001-07-20 2006-01-24 Flowfinity Wireless, Inc. Method for a proactive browser system for implementing background frame maintenance and asynchronous frame submissions
WO2003015000A1 (en) * 2001-08-08 2003-02-20 Trivium Systems Inc. Workflow engine for automating business processes in scalable multiprocessor computer platforms
US9203923B2 (en) * 2001-08-15 2015-12-01 Qualcomm Incorporated Data synchronization interface
US9460414B2 (en) * 2001-08-28 2016-10-04 Eugene M. Lee Computer assisted and/or implemented process and system for annotating and/or linking documents and data, optionally in an intellectual property management system
AU2002332812A1 (en) * 2001-09-04 2003-03-18 Soft2B Llc Browser-to-browser, dom-based, peer-to-peer communication with delta synchronization
US7284194B2 (en) 2001-10-23 2007-10-16 Sun Microsystems, Inc. XML based report generator
US20040103147A1 (en) * 2001-11-13 2004-05-27 Flesher Kevin E. System for enabling collaboration and protecting sensitive data
CA2467782C (en) * 2001-11-23 2011-05-10 Research In Motion Limited System and method for processing extensible markup language (xml) documents
US7496841B2 (en) 2001-12-17 2009-02-24 Workshare Technology, Ltd. Method and system for document collaboration
US7502996B2 (en) * 2002-02-21 2009-03-10 Bea Systems, Inc. System and method for fast XSL transformation
US7962925B2 (en) * 2002-02-22 2011-06-14 Oracle International Corporation System and method for XML data binding
WO2003073292A1 (en) * 2002-02-25 2003-09-04 Siebel Systems, Inc. (A Corporation Of Delaware) Method and system for server-based operations in server synchronization with a computing device
US7091846B2 (en) * 2002-03-18 2006-08-15 Siemens Communications, Inc. Methods and apparatus for handling information regarding an alarm for a communication network
WO2003085525A2 (en) * 2002-04-02 2003-10-16 Collabo-Technology, Inc. Method and apparatus for synchronous project collaboration
US6993534B2 (en) 2002-05-08 2006-01-31 International Business Machines Corporation Data store for knowledge-based data mining system
JP2004054842A (ja) 2002-07-24 2004-02-19 Daihatsu Life Net:Kk Pop広告制作管理システム
JP4036718B2 (ja) * 2002-10-02 2008-01-23 インターナショナル・ビジネス・マシーンズ・コーポレーション 文書検索システム、文書検索方法、文書検索を実行するためのプログラム
US20040088647A1 (en) * 2002-11-06 2004-05-06 Miller Adrian S. Web-based XML document processing system
US7234109B2 (en) * 2002-11-19 2007-06-19 Microsoft Corp. Equality of extensible markup language structures
CA2414047A1 (en) * 2002-12-09 2004-06-09 Corel Corporation System and method of extending scalable vector graphics capabilities
KR100511785B1 (ko) * 2002-12-20 2005-08-31 한국전자통신연구원 멀티미디어 컨텐츠 기술 메타데이터 저작 시스템 및 저작방법
US8032860B2 (en) * 2003-02-26 2011-10-04 Oracle International Corporation Methods for type-independent source code editing
US7743022B2 (en) * 2003-02-28 2010-06-22 Microsoft Corporation Method and system for synchronizing data shared among peer computing devices
US7017112B2 (en) * 2003-02-28 2006-03-21 Microsoft Corporation Importing and exporting markup language data in a spreadsheet application document
US7380212B2 (en) * 2003-03-18 2008-05-27 Microsoft Corporation Dynamic-template incorporation of digital images in an electronic mail message
US20050071477A1 (en) * 2003-03-27 2005-03-31 Microsoft Corporation Providing information links via a network
US7653876B2 (en) 2003-04-07 2010-01-26 Adobe Systems Incorporated Reversible document format
US7188308B2 (en) 2003-04-08 2007-03-06 Thomas Weise Interface and method for exploring a collection of data
US20040237036A1 (en) 2003-05-21 2004-11-25 Qulst Robert D. Methods and systems for generating supporting files for commands
US8127224B2 (en) 2003-06-11 2012-02-28 Wtvii, Inc. System for creating and editing mark up language forms and documents
US7698397B2 (en) * 2003-06-27 2010-04-13 Microsoft Corporation Method and framework for providing system performance information
JP2005056127A (ja) * 2003-08-04 2005-03-03 Lintec Corp 認定材料の販売方法
US8140980B2 (en) * 2003-08-05 2012-03-20 Verizon Business Global Llc Method and system for providing conferencing services
US20050044145A1 (en) * 2003-08-20 2005-02-24 International Business Machines Corporation Collaboration method and system
US8001156B2 (en) * 2003-08-29 2011-08-16 Cybertrust Ireland Limited Processing XML node sets
US20050086384A1 (en) * 2003-09-04 2005-04-21 Johannes Ernst System and method for replicating, integrating and synchronizing distributed information
US7523220B2 (en) * 2003-09-17 2009-04-21 Microsoft Corporation Metaspace: communication middleware for partially connected mobile ad hoc networks
US7657832B1 (en) * 2003-09-18 2010-02-02 Adobe Systems Incorporated Correcting validation errors in structured documents
US7424672B2 (en) * 2003-10-03 2008-09-09 Hewlett-Packard Development Company, L.P. System and method of specifying image document layout definition
US20050091346A1 (en) * 2003-10-23 2005-04-28 Brijesh Krishnaswami Settings management infrastructure
US7386563B1 (en) * 2003-12-11 2008-06-10 Unisys Corporation Method for using deferred column retrieval to improve row retrieval and query performance of OLE DB applications
US20050154978A1 (en) * 2004-01-09 2005-07-14 International Business Machines Corporation Programmatic creation and access of XML documents
US7200816B2 (en) * 2004-01-21 2007-04-03 Altova, Gmbh Method and system for automating creation of multiple stylesheet formats using an integrated visual design environment
US7469408B2 (en) * 2004-02-13 2008-12-23 Microsoft Corporation Document customization for transparent execution on a client and a server
US7318063B2 (en) * 2004-02-19 2008-01-08 Microsoft Corporation Managing XML documents containing hierarchical database information
US20050188350A1 (en) * 2004-02-20 2005-08-25 Microsoft Corporation Data binding
US7577938B2 (en) * 2004-02-20 2009-08-18 Microsoft Corporation Data association
US20060041558A1 (en) * 2004-04-13 2006-02-23 Mccauley Rodney System and method for content versioning
US20060031755A1 (en) * 2004-06-24 2006-02-09 Avaya Technology Corp. Sharing inking during multi-modal communication
US9098476B2 (en) 2004-06-29 2015-08-04 Microsoft Technology Licensing, Llc Method and system for mapping between structured subjects and observers
US7451186B2 (en) * 2004-08-10 2008-11-11 Microsoft Corporation Method and system of integrating instant messaging with other computer programs
US7506324B2 (en) * 2004-09-02 2009-03-17 Microsoft Corporation Enhanced compiled representation of transformation formats
US20060053194A1 (en) * 2004-09-03 2006-03-09 Schneider Ronald E Systems and methods for collaboration
US7707498B2 (en) * 2004-09-30 2010-04-27 Microsoft Corporation Specific type content manager in an electronic document
US7562342B2 (en) * 2004-12-02 2009-07-14 International Business Machines Corporation Method and apparatus for incrementally processing program annotations
US7730394B2 (en) * 2005-01-06 2010-06-01 Microsoft Corporation Data binding in a word-processing application
US7945590B2 (en) * 2005-01-06 2011-05-17 Microsoft Corporation Programmability for binding data
US7752224B2 (en) * 2005-02-25 2010-07-06 Microsoft Corporation Programmability for XML data store for documents
US7668873B2 (en) * 2005-02-25 2010-02-23 Microsoft Corporation Data store for software application documents
US7953696B2 (en) 2005-09-09 2011-05-31 Microsoft Corporation Real-time synchronization of XML data between applications

Also Published As

Publication number Publication date
CN101263480B (zh) 2011-12-21
KR20080045695A (ko) 2008-05-23
KR101310988B1 (ko) 2013-09-24
CA2618109A1 (en) 2007-03-15
RU2008108980A (ru) 2009-09-20
US7953696B2 (en) 2011-05-31
MY149775A (en) 2013-10-14
BRPI0615679A2 (pt) 2011-05-24
EP1922652B1 (en) 2017-10-25
US20070061382A1 (en) 2007-03-15
SG165356A1 (en) 2010-10-28
CA2618109C (en) 2014-02-18
AU2006287364A1 (en) 2007-03-15
NO20080640L (no) 2008-04-04
WO2007030683A2 (en) 2007-03-15
EP1922652A2 (en) 2008-05-21
BRPI0615679B8 (pt) 2019-02-05
RU2439680C2 (ru) 2012-01-10
NO341614B1 (no) 2017-12-11
AU2006287364B2 (en) 2011-03-10
WO2007030683A3 (en) 2007-06-14
CN101263480A (zh) 2008-09-10
JP2009508231A (ja) 2009-02-26
JP5085548B2 (ja) 2012-11-28
EP1922652A4 (en) 2009-11-04

Similar Documents

Publication Publication Date Title
BRPI0615679B1 (pt) sincronização em tempo real de dados de xml entre aplicações
US7668873B2 (en) Data store for software application documents
US9792284B2 (en) System, method and computer program product for multilingual content management
US11386112B2 (en) Visualization platform for reusable data chunks
US7752224B2 (en) Programmability for XML data store for documents
US8201078B2 (en) Business process enablement of electronic documents
US20180096060A1 (en) Structural document classification
JP5072845B2 (ja) 文書用のxmlデータストアのためのプログラム可能性
US11216492B2 (en) Document annotation based on enterprise knowledge graph
US20130173541A1 (en) Database version management system
US20220237398A1 (en) Document identification and splitting in an online document system
US20240320418A1 (en) Systems and methods for translation comments flowback
Coakley et al. Version-Aware Word Documents
US20230351291A1 (en) Systems and methods for managing workflows
TW202113619A (zh) 資訊匯入方法及裝置

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 28/08/2018, OBSERVADAS AS CONDICOES LEGAIS.

B16C Correction of notification of the grant [chapter 16.3 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 28/08/2018, OBSERVADAS AS CONDICOES LEGAIS. (CO) REFERENTE AO DESPACHO 16.1 PUBLICADO NA RPI 2486 DE 28.08.2018, QUANTO A INCLUSAO DE INVENTOR

B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time

Free format text: REFERENTE A 14A ANUIDADE.

B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2595 DE 29-09-2020 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.