[go: nahoru, domu]

BRPI0111802B1 - NETWORK-BASED SOFTWARE EXTENSION DISTRIBUTION METHOD - Google Patents

NETWORK-BASED SOFTWARE EXTENSION DISTRIBUTION METHOD Download PDF

Info

Publication number
BRPI0111802B1
BRPI0111802B1 BRPI0111802B1 BR PI0111802 B1 BRPI0111802 B1 BR PI0111802B1 BR PI0111802 B1 BRPI0111802 B1 BR PI0111802B1
Authority
BR
Brazil
Prior art keywords
extension
software
file
files
fact
Prior art date
Application number
Other languages
Portuguese (pt)
Publication date

Links

Description

(54) Título: MÉTODO DE DISTRIBUIÇÃO DE EXTENSÕES DE SOFTWARE BASEADAS EM REDE (73) Titular: MICROSOFT TECHNOLOGY LICENSING, LLC. Endereço: One Microsoft Way, Redmond, Washington, ESTADOS UNIDOS DA AMÉRICA(US), 98052 (72) Inventor: MICHAEL C. MURRAY; PAUL R. ERICKSON; OLIVER G. FISHER; SURYANARAYANAN V. RAMAN(54) Title: NETWORK-BASED SOFTWARE EXTENSION DISTRIBUTION METHOD (73) Holder: MICROSOFT TECHNOLOGY LICENSING, LLC. Address: One Microsoft Way, Redmond, Washington, UNITED STATES OF AMERICA (US), 98052 (72) Inventor: MICHAEL C. MURRAY; PAUL R. ERICKSON; OLIVER G. FISHER; SURYANARAYANAN V. RAMAN

Prazo de Validade: 10 (dez) anos contados a partir de 02/10/2018, observadas as condições legaisValidity Term: 10 (ten) years from 10/02/2018, subject to legal conditions

Expedida em: 02/10/2018Issued on: 10/02/2018

Assinado digitalmente por:Digitally signed by:

Liane Elizabeth Caldeira LageLiane Elizabeth Caldeira Lage

Diretora de Patentes, Programas de Computador e Topografias de Circuitos IntegradosDirector of Patents, Computer Programs and Topographies of Integrated Circuits

1/541/54

Relatório Descritivo da Patente de Invenção para MÉTODO DE DISTRIBUIÇÃO DE EXTENSÕES DE SOFTWARE BASEADAS EM REDE.Invention Patent Descriptive Report for NETWORK-BASED SOFTWARE EXTENSION DISTRIBUTION METHOD.

CAMPO TÉCNICO [001] A presente invenção relaciona-se com métodos e sistemas para proporcionar software via uma rede. Mais especificamente, a invenção é relativa a distribuição de software baseada em rede. FUNDAMENTOS DA INVENÇÃO [002] A instalação de aplicações de PC tradicionais requer um meio físico, tal como um disco ou CD-ROM, que deve ser fisicamente inserido dentro de um computador de modo que o software seja carregado no computador de um usuário. Tipicamente, este processo requer que o usuário entre com informação de configurações que podem ser confusas para o usuário. Uma vez que o software é instalado, ele tipicamente é fixo em termos de sua localização e funcionalidade. Quando o software é atualizado, o usuário tipicamente deve comprar meio físico adicional e repetir o processo de instalação de modo que eles possam utilizar o software atualizado. Neste modelo, o software é fixo em sua associação com o computador no qual ele foi instalado. Se um usuário mover-se para outro computador, ele não estará apto a utilizar o software específico na sua máquina sem repetir o processo de instalação.TECHNICAL FIELD [001] The present invention relates to methods and systems for providing software over a network. More specifically, the invention relates to network-based software distribution. BACKGROUND OF THE INVENTION [002] Installing traditional PC applications requires a physical medium, such as a disk or CD-ROM, that must be physically inserted into a computer in order for the software to be loaded onto a user's computer. Typically, this process requires the user to enter configuration information that can be confusing to the user. Once the software is installed, it is typically fixed in terms of its location and functionality. When the software is updated, the user typically must purchase additional physical media and repeat the installation process so that they can use the updated software. In this model, the software is fixed in its association with the computer on which it was installed. If a user moves to another computer, he will not be able to use the specific software on his machine without repeating the installation process.

[003] À medida que a computação continua a se desenvolver dentro do ambiente das redes de computadores tal como a Internet, torna-se claro que o modelo de distribuição de software tradicional descrito acima é inadequado para ir de encontro às demandas dos consumidores que desejam um software sob demanda dinâmico, flexível e adaptável. A distribuição de software baseada em rede está se tornando o assunto de foco crescente pelos que desenvolvem e distribuem software. A abertura do potencial em relação à distribuição de[003] As computing continues to develop within the environment of computer networks such as the Internet, it becomes clear that the traditional software distribution model described above is inadequate to meet the demands of consumers who want dynamic, flexible and adaptable software on demand. Network-based software distribution is becoming the subject of increasing focus by those who develop and distribute software. The opening of the potential in relation to the distribution of

Petição 870170015211, de 09/03/2017, pág. 3/64Petition 870170015211, of 03/09/2017, p. 3/64

2/54 software baseada em rede irá requerer soluções inteligentes, inovadoras e dinâmicas, especialmente em situações onde a largura de banda pode ser limitada.2/54 network-based software will require smart, innovative and dynamic solutions, especially in situations where bandwidth may be limited.

[004] Por conseqüência, a presente invenção surgiu dos interesses associados a proporcionar novos modelos de distribuição de software que são particularmente bem adequados para a distribuição de software baseada em rede, por exemplo, a distribuição via Internet. SUMÁRIO DA INVENÇÃO [005] São descritos métodos e sistemas para a distribuição de software baseada em rede. Em uma modalidade, um programa de aplicação ou plataforma de software reside em um cliente. O programa ou plataforma é configurado de modo que ele seja extensível baseado nas extensões de software que podem ser distribuídas através de uma rede tal como a Internet. Várias extensões podem ser desenvolvidas por desenvolvedores terceirizados para incorporação no programa ou plataforma.[004] Consequently, the present invention arose from the interests associated with providing new models of software distribution that are particularly well suited for network-based software distribution, for example, distribution via the Internet. SUMMARY OF THE INVENTION [005] Methods and systems for network-based software distribution are described. In one embodiment, an application program or software platform resides on a client. The program or platform is configured so that it is extensible based on the software extensions that can be distributed over a network such as the Internet. Several extensions can be developed by third-party developers for incorporation into the program or platform.

[006] Em uma modalidade descrita, os arquivos de extensão que compreendem uma extensão de software são hospedados em um servidor de rede tal como um servidor Internet. Estes incluem arquivos descritores que descrevem aspectos da extensão de software. Estes arquivos descritores logicamente descrevem uma extensão para o programa ou plataforma e designam a localização de outros arquivos de extensão. As extensões são incorporadas em um cliente pela navegação junto a uma rede particular ou local da Internet através da qual as extensões podem ser acessadas. Os arquivos descrevendo os arquivos de extensão são transferidos pelo cliente. Estes arquivos dizem ao cliente onde, quando e como a extensão particular pode ser ligada no programa ou plataforma, bem como onde encontrar os arquivos de extensão apropriados e como transferir os mesmos. Os arquivos de extensão são então transferidos e incorporados dentro da plaPetição 870170015211, de 09/03/2017, pág. 4/64[006] In a described mode, the extension files that comprise a software extension are hosted on a network server such as an Internet server. These include descriptor files that describe aspects of the software extension. These descriptor files logically describe an extension for the program or platform and designate the location of other extension files. Extensions are incorporated into a client by browsing along a private network or Internet location through which the extensions can be accessed. The files describing the extension files are transferred by the client. These files tell the customer where, when and how the particular extension can be linked to the program or platform, as well as where to find the appropriate extension files and how to download them. The extension files are then transferred and incorporated within plaPetição 870170015211, of 03/09/2017, p. 4/64

3/54 taforma.3/54 taforma.

[007] Em uma modalidade, uma arquitetura de software inventiva é proporcionada para manipular e consolidar os tipos particulares de arquivos descritivos associados com as várias extensões. Um mecanismo de filtragem chamado de pontos de ligação é utilizado para criar os manipuladores para os diferentes tipos descritivos de arquivos que definem uma extensão de software. Cada um destes manipuladores é conhecido como um gerenciador de ligação. Os gerenciadores de ligação são proporcionados para cada tipo de aspecto extensível. Os gerenciadores de ligação interpretam os dados dos arquivos de extensão que são fornecidos pelos pontos de ligação. Em adição aos gerenciadores de ligação predefinidos, os gerenciadores de ligação personalizados podem ser criados utilizando-se os dados dos pontos de ligação. Quando uma extensão estende um tipo de aspecto particular, os pontos de ligação garantem que somente o gerenciador de ligação apropriado seja notificado, de modo que o tipo de aspecto pode ser incorporado dentro do programa ou plataforma de forma eficiente. BREVE DESCRIÇÃO DOS DESENHOS [008] A Fig. 1 ilustra uma vista de alto nível de um sistema que pode ser utilizado de acordo com uma modalidade descrita.[007] In one embodiment, an inventive software architecture is provided to manipulate and consolidate the particular types of descriptive files associated with the various extensions. A filtering mechanism called connection points is used to create the handlers for the different descriptive types of files that define a software extension. Each of these handlers is known as a connection manager. Connection managers are provided for each type of extensible aspect. The connection managers interpret the data in the extension files that are provided by the connection points. In addition to the predefined connection managers, custom connection managers can be created using data from the connection points. When an extension extends a particular aspect type, the connection points ensure that only the appropriate connection manager is notified, so that the aspect type can be incorporated into the program or platform efficiently. BRIEF DESCRIPTION OF THE DRAWINGS [008] Fig. 1 illustrates a high level view of a system that can be used according to a described modality.

[009] A Fig. 2 ilustra um sistema de computador ilustrativo que pode ser utilizado de acordo com a modalidade descrita.[009] Fig. 2 illustrates an illustrative computer system that can be used according to the described mode.

[0010] A Fig. 3 ilustra um diagrama de um EDF e PKG ilustrativos de acordo com uma modalidade descrita.[0010] Fig. 3 illustrates a diagram of an illustrative EDF and PKG according to a described embodiment.

[0011] A Fig. 4 apresenta uma parte de um EDF de acordo com a modalidade descrita.[0011] Fig. 4 shows a part of an EDF according to the described mode.

[0012] A Fig. 5 apresenta uma parte de um esquema EDF de acordo com a modalidade descrita.[0012] Fig. 5 shows a part of an EDF scheme according to the described mode.

[0013] A Fig. 6 apresenta uma parte de um PKG de acordo com a modalidade descrita.[0013] Fig. 6 shows a part of a PKG according to the described mode.

Petição 870170015211, de 09/03/2017, pág. 5/64Petition 870170015211, of 03/09/2017, p. 5/64

4/54 [0014] A Fig. 7 apresenta um diagrama de blocos ilustrando como hashes (informações não válidas) de arquivos podem ser utilizados para estabelecer a versão de acordo com uma modalidade.4/54 [0014] Fig. 7 presents a block diagram illustrating how hashes (invalid information) of files can be used to establish the version according to a modality.

[0015] A Fig. 8 apresenta um diagrama de blocos que ilustra dois objetos de pacote ilustrativos de acordo com uma modalidade.[0015] Fig. 8 presents a block diagram that illustrates two illustrative package objects according to a modality.

[0016] A Fig. 9 ilustra um fluxograma que descreve as etapas em um método de acordo com uma modalidade descrita.[0016] Fig. 9 illustrates a flowchart that describes the steps in a method according to a described modality.

[0017] A Fig. 10 ilustra um fluxograma que descreve as etapas em um método de acordo com uma modalidade descrita.[0017] Fig. 10 illustrates a flow chart that describes the steps in a method according to a described modality.

[0018] A Fig. 11 apresenta um diagrama de blocos que ilustra uma ferramenta de criação de manifesto de pacote ilustrativa de acordo com uma modalidade descrita.[0018] Fig. 11 presents a block diagram that illustrates an illustrative package manifest creation tool according to a described modality.

[0019] A Fig. 12 ilustra um fluxograma que descreve as etapas em um método de acordo com uma modalidade descrita.[0019] Fig. 12 illustrates a flow chart that describes the steps in a method according to a described modality.

[0020] A Fig. 13 ilustra um fluxograma que descreve as etapas em um método de acordo com uma modalidade descrita.[0020] Fig. 13 illustrates a flow chart that describes the steps in a method according to a described modality.

[0021] A Fig. 14 ilustra um fluxograma das etapas em um método de acordo com a modalidade descrita.[0021] Fig. 14 illustrates a flowchart of the steps in a method according to the described modality.

[0022] A Fig. 15 ilustra um fluxograma das etapas em um método de acordo com a modalidade descrita.[0022] Fig. 15 illustrates a flow chart of the steps in a method according to the described mode.

[0023] A Fig. 16 ilustra uma parte de uma estrutura de catálogo ilustrativa de acordo com a modalidade descrita.[0023] Fig. 16 illustrates a part of an illustrative catalog structure according to the described mode.

[0024] A Fig. 17 ilustra um diagrama de blocos de uma arquitetura de software de acordo com a modalidade descrita.[0024] Fig. 17 illustrates a block diagram of a software architecture according to the mode described.

[0025] A Fig. 18 ilustra um fluxograma das etapas em um método de acordo com a modalidade descrita.[0025] Fig. 18 illustrates a flow chart of the steps in a method according to the described mode.

[0026] A Fig. 19 apresenta um diagrama que ilustra um aspecto da arquitetura de ponto de ligação de acordo com a modalidade descrita. [0027] A Fig. 20 apresenta um diagrama que ilustra um aspecto da arquitetura da Fig. 17.[0026] Fig. 19 presents a diagram that illustrates an aspect of the connection point architecture according to the described modality. [0027] Fig. 20 presents a diagram that illustrates an aspect of the architecture of Fig. 17.

Petição 870170015211, de 09/03/2017, pág. 6/64Petition 870170015211, of 03/09/2017, p. 6/64

5/545/54

DESCRIÇÃO DETALHADA DA MODALIDADE PREFERIDADETAILED DESCRIPTION OF THE PREFERRED MODE

Vista Geral [0028] Os métodos e sistemas descritos logo abaixo proporcionam um mecanismo pelo qual a funcionalidade pode ser adicionada dinamicamente para um programa de aplicação ou plataforma de software. As funcionalidades ou “extensões”, como serão referidas, podem ser vantajosamente adicionadas via uma rede tal como a Internet. As extensões, as quais podem implementar novos aspectos ou adicionaremse aos aspectos existentes, podem ser adicionadas utilizando-se somente um endereço de rede, tal como uma URL, como uma base para a instalação da extensão. Ou seja, todos os arquivos que compreendem uma extensão podem ser mantidos na rede e acessados via um ou mais locais da rede.Overview [0028] The methods and systems described below provide a mechanism by which functionality can be added dynamically to an application program or software platform. The functionalities or “extensions”, as will be mentioned, can be advantageously added via a network such as the Internet. Extensions, which can implement new features or add to existing features, can be added using only a network address, such as a URL, as a basis for installing the extension. That is, all files that include an extension can be kept on the network and accessed via one or more network locations.

[0029] As extensões podem ser descritas de vários modos. Um modo utiliza uma linguagem baseada em marcas hierárquica que facilita a manipulação e o uso de várias extensões. Em uma implementação particular, uma plataforma de software é proporcionada, a qual pode incorporar várias funcionalidades. A plataforma de software e a arquitetura inventiva descrita abaixo permitem que desenvolvedores de terceira e quarta partes desenvolvam extensões para a plataforma que podem ser facil e diretamente incorporadas na plataforma sem ter qualquer conhecimento (ou relação com) um serviço de hospedagem. Um desenvolvedor de terceira parte é um desenvolvedor que desenvolve uma extensão para a plataforma. Um desenvolvedor de quarta parte pode ser um desenvolvedor que desenvolve uma extensão para uma extensão do desenvolvedor de terceira parte. Portanto, a incorporação das extensões da terceira e quarta partes é essencialmente um processo transparente, até que os desenvolvedores estejam interessados.[0029] Extensions can be described in several ways. One mode uses a hierarchical brand-based language that facilitates the manipulation and use of various extensions. In a particular implementation, a software platform is provided, which can incorporate several features. The software platform and the inventive architecture described below allow third and fourth party developers to develop extensions for the platform that can be easily and directly incorporated into the platform without having any knowledge (or relationship with) a hosting service. A third party developer is a developer who develops an extension for the platform. A fourth-party developer can be a developer who develops an extension for a third-party developer extension. Therefore, incorporating third and fourth party extensions is essentially a transparent process, until developers are interested.

[0030] Considere por exemplo a Fig. 1, a qual apresenta o compuPetição 870170015211, de 09/03/2017, pág. 7/64[0030] Consider, for example, Fig. 1, which shows CompuPetition 870170015211, of 03/09/2017, p. 7/64

6/54 tador de um usuário 100 e várias assim chamadas fontes de extensão 102, 104 e 106. As fontes de extensão podem compreender qualquer entidade a partir da qual uma extensão de software pode ser obtida via uma rede. Em uma implementação ilustrativa, a rede pode compreender a Internet, apesar de outras redes (por exemplo, LANs e WANs) poderem certamente ser utilizadas. As fontes de extensão podem incluir, sem limitação, entidades comerciais, tais como lojas varejistas, que podem manter um local da rede. Em uma implementação, um usuário pode executar o software em seu computador que proporciona um programa de aplicação ou plataforma de software. Neste documento, os termos “programa de aplicação” e “plataforma de software” serão utilizados de forma alternada. Cada uma das diferentes fontes de extensão 102 a 106 podem proporcionar extensões de software que podem ligar-se dentro da plataforma de software que está executando na máquina do usuário. Estas extensões podem ser distribuídas via uma rede tal como a Internet e ajudar a proporcionar aplicações que podem ser executadas na máquina do usuário. Na modalidade descrita, as extensões são logicamente descritas em XML, que está em linha com os padrões emergentes da indústria. Adicionalmente, o uso de XML ajuda na capacidade de descoberta futura das extensões pela promoção das propriedades da XML DOM na Internet. Entretanto, será apreciado que qualquer formato adequado pode ser utilizado para descrever as extensões, por exemplo, uma descrição binária poderia ser utilizada.6/54 of a user 100 and several so-called extension sources 102, 104 and 106. Extension sources can comprise any entity from which a software extension can be obtained via a network. In an illustrative implementation, the network can comprise the Internet, although other networks (for example, LANs and WANs) can certainly be used. Extension sources can include, without limitation, commercial entities, such as retail stores, that can maintain a network location. In an implementation, a user can run the software on his computer that provides an application program or software platform. In this document, the terms "application program" and "software platform" will be used interchangeably. Each of the different extension sources 102 to 106 can provide software extensions that can connect within the software platform that is running on the user's machine. These extensions can be distributed via a network such as the Internet and help provide applications that can be run on the user's machine. In the described mode, the extensions are logically described in XML, which is in line with the emerging industry standards. Additionally, the use of XML helps in the ability to discover extensions in the future by promoting the properties of XML DOM on the Internet. However, it will be appreciated that any suitable format can be used to describe the extensions, for example, a binary description could be used.

[0031] As extensões podem ser distribuídas a partir de qualquer número de fontes de extensão diferentes. Os métodos e sistemas inventivos proporcionam um modo direto e organizado para manipular as extensões proporcionadas. O uso de XML de forma vantajosa permite a manipulação eficiente das extensões a partir de várias fontes de extensão diferentes, sem indevidamente taxar os componentes de sofPetição 870170015211, de 09/03/2017, pág. 8/64[0031] Extensions can be distributed from any number of different extension sources. The inventive methods and systems provide a direct and organized way to manipulate the extensions provided. The advantageous use of XML allows the efficient manipulation of extensions from several different extension sources, without unduly taxing the software components 870170015211, from 03/09/2017, p. 8/64

7/54 tware que utilizam partes específicas de uma extensão ou extensões. [0032] Em uma implementação particular, a plataforma de software na máquina do usuário proporciona várias funcionalidades integradas diferentes que permitem a um usuário realizar diferentes tarefas centradas no documento. Um sistema ilustrativo é descrito no Pedido de Patente dos Estados Unidos intitulado “Single Window Navigation Methods and Systems”, incorporado por referência acima.7/54 tware that use specific parts of an extension or extensions. [0032] In a particular implementation, the software platform on the user's machine provides several different integrated functionalities that allow a user to perform different tasks centered on the document. An illustrative system is described in the United States Patent Application entitled “Single Window Navigation Methods and Systems”, incorporated by reference above.

AMBIENTE DE COMPUTADOR ILUSTRATIVO [0033] A modalidade descrita logo abaixo pode ser empregada em conexão com vários sistemas de computador. Um sistema de computador, para propósitos deste documento, pode ser considerado como qualquer dispositivo de computação que inclua algum tipo de processador, isto é, um microprocessador e algum tipo de sistema operacional. Portanto, um sistema de computador pode ser construído para incluir, sem limitação, computadores de mesa tradicionais, servidores mais potentes, vários dispositivos de mão tal como telefones celulares, dispositivos de computador de bolso e semelhantes.ILLUSTRATIVE COMPUTER ENVIRONMENT [0033] The modality described below can be used in connection with various computer systems. A computer system, for the purposes of this document, can be considered as any computing device that includes some type of processor, that is, a microprocessor and some type of operating system. Therefore, a computer system can be constructed to include, without limitation, traditional desktop computers, more powerful servers, various handheld devices such as cell phones, pocket computer devices and the like.

[0034] A Fig. 2 apresenta um sistema de computador ilustrativo que pode ser utilizado para implementar as modalidades descritas aqui dentro. O computador 130 inclui um ou mais processadores ou unidades de processamento 132, uma memória do sistema 134 e um barramento 136 que acopla vários componentes do sistema incluindo a memória do sistema 134 com os processadores 132. O barramento 136 representa um ou mais de qualquer um dos vários tipos de estruturas de barramento, incluindo um barramento de memória ou controlador de memória, um barramento periférico, uma porta de gráficos acelerada e um barramento do processador ou local utilizando qualquer uma de uma variedade de arquiteturas de barramento. A memória do sistema 134 inclui a memória somente para leitura (ROM) 138 e a memória de acesso randômico (RAM) 140. Um sistema de entraPetição 870170015211, de 09/03/2017, pág. 9/64[0034] Fig. 2 presents an illustrative computer system that can be used to implement the modalities described here. Computer 130 includes one or more processors or processing units 132, system memory 134 and bus 136 that couples various system components including system memory 134 with processors 132. Bus 136 represents one or more of any one of the various types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or site bus using any of a variety of bus architectures. System memory 134 includes read-only memory (ROM) 138 and random access memory (RAM) 140. An entry system Petition 870170015211, 03/09/2017, p. 9/64

8/54 da/saída básico (BIOS) 142, contendo as rotinas básicas que ajudam a transferir as informações entre os elementos dentro do computador 130, tal como durante a partida, é armazenado na ROM 138.8/54 da / basic output (BIOS) 142, containing the basic routines that help to transfer information between the elements inside the computer 130, such as during startup, is stored in ROM 138.

[0035] O computador 130 adicionalmente inclui uma unidade (drive) de disco rígido 144 para leitura e gravação junto ao disco rígido (não apresentado), uma unidade de disco magnético 146 para leitura e gravação junto a um disco magnético removível 148 e uma unidade de disco ótico 150 para leitura e gravação junto a um disco ótico removível 152, tal como um CD-ROM ou outro meio ótico. A unidade de disco rígido 144, a unidade de disco magnético 146 e a unidade de disco ótico 150 estão conectados ao barramento 136 por uma interface SCSI 154 ou por alguma outra interface apropriada. As unidades e suas mídias que podem ser lidas por computador associadas proporcionam armazenamento não volátil das instruções que podem ser lidas por computador, das estruturas de dados, dos módulos de programa e de outros dados para o computador 130. Apesar do ambiente ilustrativo descrito aqui dentro empregar um disco rígido, um disco magnético removível 148 e um disco ótico removível 152, deve ser apreciado pelos com conhecimento na técnica que outros tipos de mídias que podem ser lidas por computador que possam armazenar dados que sejam acessíveis por um computador, tal como cassetes magnéticos, cartões de memória flash, discos de vídeo digitais, memórias de acesso randomico (RAMs), memórias somente para leitura (ROMs) e semelhantes, podem também ser utilizados no ambiente operacional ilustrativo.[0035] Computer 130 additionally includes a hard disk drive 144 for reading and writing next to the hard disk (not shown), a magnetic disk drive 146 for reading and writing next to a removable magnetic disk 148 and a drive optical disc 150 for reading and writing to a removable optical disc 152, such as a CD-ROM or other optical medium. Hard disk 144, magnetic disk 146 and optical disk 150 are connected to bus 136 by a SCSI interface 154 or some other appropriate interface. The units and their associated computer-readable media provide non-volatile storage of computer-readable instructions, data structures, program modules and other data for computer 130. Despite the illustrative environment described here employing a hard disk, a removable magnetic disk 148 and a removable optical disk 152, should be appreciated by those skilled in the art that other types of media that can be read by a computer that can store data that are accessible by a computer, such as cassettes Magnetic cards, flash memory cards, digital video discs, random access memories (RAMs), read-only memories (ROMs) and the like, can also be used in the illustrative operating environment.

[0036] Uma série de módulos de programas podem ser armazenados no disco rígido 144, no disco magnético 148, no disco ótico 152, na ROM 138 ou na RAM 140, incluindo um sistema operacional 158, um ou mais programas de aplicação 160, outros módulos de programa 162 e dados de programa 164. Um usuário pode entrar com comandos[0036] A series of program modules can be stored on hard disk 144, magnetic disk 148, optical disk 152, ROM 138 or RAM 140, including an operating system 158, one or more application programs 160, others program modules 162 and program data 164. A user can enter commands

Petição 870170015211, de 09/03/2017, pág. 10/64Petition 870170015211, of 03/09/2017, p. 10/64

9/54 e informações no computador 130 através de dispositivos de entrada tal como um teclado 166 e um dispositivo de apontamento 168. Outros dispositivos de entrada (não apresentados) podem incluir um microfone, joystick, plataforma de jogo, antena de satélite, scanner, ou semelhantes. Estes e outros dispositivos de entrada estão conectados com a unidade de processamento 132 através de uma interface 170 que está acoplada com o barramento 136. Um monitor 172 ou outro tipo de dispositivo de exibição também está conectado com o barramento 136 via uma interface, tal como um adaptador de vídeo 174. Em adição ao monitor, computadores pessoais tipicamente incluem outros dispositivos de saída periféricos (não apresentados) tais como alto-falantes e impressoras.9/54 and information on computer 130 via input devices such as a keyboard 166 and a pointing device 168. Other input devices (not shown) may include a microphone, joystick, gaming platform, satellite antenna, scanner, or the like. These and other input devices are connected to the processing unit 132 via an interface 170 that is coupled to the bus 136. A monitor 172 or other type of display device is also connected to the bus 136 via an interface, such as a 174 video adapter. In addition to the monitor, personal computers typically include other peripheral output devices (not shown) such as speakers and printers.

[0037] O computador 130 normalmente opera em um ambiente de rede utilizando as conexões lógicas com um ou mais computadores remotos, tal como um computador remoto 176. O computador remoto 176 pode ser outro computador pessoal, um servidor, um roteador, um PC em rede, um dispositivo de rede não hierárquica ou outro nó de rede comum e tipicamente inclui vários ou todos os elementos descritos acima relativos ao computador 130, apesar de somente um dispositivo de armazenamento de memória 178 ter sido ilustrado na Fig. 2. As conexões lógicas descrias na Fig. 2 incluem uma rede de área local (LAN) 180 e uma rede de área ampla (WAN) 182. Tais ambientes de rede são comuns em escritórios, em redes de computadores de empresas como um todo, em intranets e na Internet.[0037] Computer 130 normally operates in a network environment using logical connections to one or more remote computers, such as a remote computer 176. Remote computer 176 can be another personal computer, a server, a router, a PC in network, a non-hierarchical network device or another common network node and typically includes several or all of the elements described above relating to computer 130, although only one memory storage device 178 has been illustrated in Fig. 2. The logical connections described in Fig. 2 include a local area network (LAN) 180 and a wide area network (WAN) 182. Such network environments are common in offices, on corporate computer networks as a whole, on intranets and on the Internet .

[0038] Quando utilizado em um ambiente de rede LAN, o computador 130 é conectado com a rede local 180 através de uma interface de rede ou adaptador 184. Quando utilizado em um ambiente de rede WAN, o computador 130 tipicamente inclui um modem 186 ou outro dispositivo para estabelecer comunicações através da rede de área ampla 182, tal como a Internet. O modem 186, o qual pode ser interno[0038] When used in a LAN network environment, computer 130 is connected to LAN 180 through a network interface or adapter 184. When used in a WAN network environment, computer 130 typically includes a modem 186 or another device for establishing communications over the wide area network 182, such as the Internet. Modem 186, which can be internal

Petição 870170015211, de 09/03/2017, pág. 11/64Petition 870170015211, of 03/09/2017, p. 11/64

10/54 ou externo, está conectado ao barramento 136 via uma interface de porta serial 156. Em um ambiente de rede, os módulos de programa descritos em relação ao computador pessoal 130, ou partes dos mesmos, podem ser armazenados no dispositivo de armazenamento de memória remoto. Será apreciado que as conexões de rede apresentadas são ilustrativas e outros dispositivos para estabelecer um link de comunicações entre os computadores podem ser utilizados.10/54 or external, is connected to bus 136 via a serial port interface 156. In a network environment, the program modules described in relation to personal computer 130, or parts of them, can be stored on the storage device of remote memory. It will be appreciated that the network connections shown are illustrative and other devices to establish a communications link between computers can be used.

[0039] Geralmente, os processadores de dados do computador 130 são programados por meio de instruções armazenadas em momentos diferentes nas várias mídias de armazenamento que podem ser lidas por computador do computador. Os programas e os sistemas operacionais tipicamente são distribuídos, por exemplo, em discos flexíveis ou CD-ROMs. De lá, eles são instalados ou carregados na memória secundária do computador. Na execução, eles são carregados pelo menos parcialmente na memória eletrônica primária do computador. A invenção descrita aqui dentro inclui estes e vários outros tipos de mídias de armazenamento que podem ser lidas por computador quando tal mídia contém instruções ou programas para implementar as etapas descritas abaixo em conjunto com um microprocessador ou outro processador de dados. A presente invenção também inclui o próprio computador quando programado de acordo com os métodos e técnicas descritos abaixo.[0039] Generally, the data processors of computer 130 are programmed using instructions stored at different times on the various storage media that can be read by the computer's computer. Programs and operating systems are typically distributed, for example, on floppy disks or CD-ROMs. From there, they are installed or loaded into the computer's secondary memory. Upon execution, they are loaded at least partially into the computer's primary electronic memory. The invention described here includes these and several other types of storage media that can be read by a computer when such media contains instructions or programs for implementing the steps described below in conjunction with a microprocessor or other data processor. The present invention also includes the computer itself when programmed according to the methods and techniques described below.

[0040] Para propósitos de ilustração, os programas e outros componentes de programa executáveis tal como o sistema operacional são ilustrados aqui dentro como blocos separados, apesar de ser reconhecido que tais programas e componentes residem em vários momentos em diferentes componentes de armazenamento do computador e são executados pelos processadores de dados do computador.[0040] For purposes of illustration, programs and other executable program components such as the operating system are illustrated here as separate blocks, although it is recognized that such programs and components reside at various times in different computer storage components and run by the computer's data processors.

EXTENSÕES [0041] Uma “extensão”, como utilizado neste documento, seráEXTENSIONS [0041] An “extension”, as used in this document, will be

Petição 870170015211, de 09/03/2017, pág. 12/64Petition 870170015211, of 03/09/2017, p. 12/64

11/54 considerada como incluindo, sem limitação, a funcionalidade e o conteúdo do software que podem ser adicionados para um programa de aplicação ou plataforma de software. Estas adições tipicamente proporcionam algum tipo de funcionalidade que o programa de aplicação pode não ter tido antes que a extensão fosse incorporada, ou alterar o comportamento de pelo menos um aspecto existente. A extensão é incorporada ou integrada diretamente dentro do programa de aplicação de um modo que altera, até algum grau, a maneira na qual o programa de aplicação comporta-se ou opera. As extensões proporcionam conteúdo dinamicamente adicionado e podem proporcionar aplicações (tal como uma aplicação de e-mail), programas auxiliares para estender as aplicações existentes (como um programa auxiliar de fax para uma aplicação de e-mail), ou simplesmente páginas da rede, para relacionar algumas.11/54 considered to include, without limitation, the functionality and content of the software that can be added to an application program or software platform. These additions typically provide some type of functionality that the application program may not have had before the extension was incorporated, or alter the behavior of at least one existing aspect. The extension is incorporated or integrated directly into the application program in a way that changes, to some degree, the way in which the application program behaves or operates. Extensions provide dynamically added content and can provide applications (such as an email application), helper programs to extend existing applications (such as a fax helper program for an email application), or simply web pages, to list some.

[0042] Na modalidade descrita, as extensões são descritas utilizando XML, uma linguagem de marcação baseada em texto, padrão da indústria. O XML altamente facilita a extensibilidade do conteúdo do software. Especificamente, várias extensões podem ser de autoria de terceiros e descritas em XML de uma maneira que permita à extensão ser prontamente integrada aos programas de aplicação. Entretanto, deve ser apreciado que o XML constitui somente um modo ilustrativo de descrever e utilizar as extensões. Outros modos, obviamente, podem ser utilizados.[0042] In the described mode, the extensions are described using XML, a text-based markup language, industry standard. XML highly facilitates the extensibility of software content. Specifically, several extensions can be authored by third parties and described in XML in a way that allows the extension to be readily integrated into application programs. However, it should be appreciated that XML is only an illustrative way of describing and using extensions. Other modes, of course, can be used.

ORGANIZAÇÃO ILUSTRATIVA DA EXTENSÃO [0043] Na modalidade descrita, as extensões são organizadas em três partes separadas, mas relacionadas: um Arquivo de Definição de Extensão (EDF), um Manifesto de Pacote (PKG) e o código, componentes, ou “bits” que constituem ou definem a extensão. Um EDF pode, mas não precisa, estar associado a uma URL (Localizador de Recursos Universal), que proporciona um modo para um cliente acessarILLUSTRATIVE ORGANIZATION OF THE EXTENSION [0043] In the described mode, the extensions are organized in three separate but related parts: an Extension Definition File (EDF), a Package Manifest (PKG) and the code, components, or “bits” that constitute or define the extension. An EDF can, but need not, be associated with a URL (Universal Resource Locator), which provides a way for a customer to access

Petição 870170015211, de 09/03/2017, pág. 13/64Petition 870170015211, of 03/09/2017, p. 13/64

12/54 o EDF. Por convenção e escolha, o arquivo PKG está localizado na mesma URL que o EDF. Será apreciado que cada um dos EDFs e PKG descritos não são requeridos para o outro ser utilizado. Acontece que no exemplo que é dado neste documento, os dois são empregados juntos. Para este fim, cada um destes aspectos pode ser separadamente e de forma independente empregado.12/54 the EDF. By convention and choice, the PKG file is located at the same URL as the EDF. It will be appreciated that each of the EDFs and PKGs described are not required for the other to be used. It turns out that in the example given in this document, the two are employed together. To this end, each of these aspects can be employed separately and independently.

[0044] Os EDFs descrevem ligações lógicas com um programa de aplicação ou plataforma de software, enquanto os PKGs especificam os arquivos físicos e os recursos que são utilizados em uma extensão. Pode existir uma correspondência de um para um entre os EDFs e os PKGs.[0044] EDFs describe logical links to an application program or software platform, while PKGs specify the physical files and resources that are used in an extension. There may be a one-to-one correspondence between EDFs and PKGs.

[0045] A Fig. 3 apresenta uma organização ilustrativa 300 que inclui um EDF 302 e um manifesto de pacote (PKG) correspondente 304. No exemplo ilustrado, o EDF 302 utiliza XML para descrever as ligações lógicas ou extensões com um programa de aplicação. O PKG 304 correspondente especifica os arquivos físicos e os recursos que estão associados com uma extensão particular. Tipos de arquivo ilustrativos são apresentados à direita do PKG 304 e incluem, sem limitação, HTM, GIF, UDO, XML, DLL e vários outros tipos de arquivos.[0045] Fig. 3 shows an illustrative organization 300 that includes an EDF 302 and a corresponding package manifest (PKG) 304. In the illustrated example, EDF 302 uses XML to describe the logical links or extensions with an application program. The corresponding PKG 304 specifies the physical files and resources that are associated with a particular extension. Illustrative file types are shown to the right of PKG 304 and include, without limitation, HTM, GIF, UDO, XML, DLL and several other file types.

ARQUIVO DE DEFINIÇÃO DE EXTENSÃO (EDF) [0046] No exemplo descrito, um EDF é um arquivo XML que logicamente descreve uma extensão. Por exemplo, o EDF pode descrever o HTML que constitui uma interface com o usuário (UI), os objetos que contém código para implementar várias funções e semelhantes. O EDF também pode conter toda ou parte da funcionalidade que compreende uma extensão. Por exemplo, o HTML que descreve uma barra de ferramentas podería ser incorporado diretamente em um arquivo EDF e um gerenciador de ligação da barra de ferramentas podería ler a mesma a partir do arquivo EDF, ao invés de a partir de uma URL. A informação contida no EDF é processada e (junto com a informaçãoEXTENSION DEFINITION FILE (EDF) [0046] In the example described, an EDF is an XML file that logically describes an extension. For example, EDF can describe the HTML that constitutes a user interface (UI), objects that contain code to implement various functions and the like. EDF can also contain all or part of the functionality that comprises an extension. For example, HTML describing a toolbar could be incorporated directly into an EDF file and a toolbar link manager could read it from the EDF file, rather than from a URL. The information contained in the EDF is processed and (together with the information

Petição 870170015211, de 09/03/2017, pág. 14/64Petition 870170015211, of 03/09/2017, p. 14/64

13/54 contida no PKG) os arquivos apropriados são automaticamente instalados no computador de um usuário. Isto é feito reservadamente sem manipular as configurações persistentes do computador, como pode ser visto no registro de sistema do usuário.13/54 contained in the PKG) the appropriate files are automatically installed on a user's computer. This is done privately without manipulating the computer's persistent settings, as seen in the user's system registry.

[0047] Um EDF, implementado em XML, contém várias marcas que estão associadas com várias extensões. As várias marcas podem corresponder a:[0047] An EDF, implemented in XML, contains several tags that are associated with several extensions. The various brands may correspond to:

[0048] . Elementos de interface com o usuário . Comportamentos/Componentes/Objetos [0049] . Elementos de armazenamento [0050] . Objetos definidos pelo usuário [0051] . Ou qualquer coisa mais que represente um ponto de extensibilidade na aplicação ou plataforma.[0048]. User interface elements. Behaviors / Components / Objects [0049]. Storage elements [0050]. User-defined objects [0051]. Or anything else that represents a point of extensibility in the application or platform.

[0052] Os EDFs de forma vantajosa possuem um “esquema aberto”, que significa que desenvolvedores de terceira parte podem estender o mecanismo de extensão e incluir suas próprias extensões criando suas próprias marcas. Adicionalmente, as extensões podem elas próprias ser estendidas por outros desenvolvedores. Os EDFs também podem possuir uma ou mais marcas predefinidas. Marcas XML predefinidas ilustrativas para elementos de interface com o usuário podem incluir marcas para os tipos de aspecto tais como: barras de ferramenta, aceleradores, itens do menu e temas. Estes tipos de aspecto são utilizados na aplicação de janela navegável única incorporada por referência acima e definida na tabela imediatamente abaixo:[0052] EDFs advantageously have an “open scheme”, which means that third party developers can extend the extension mechanism and include their own extensions by creating their own brands. Additionally, the extensions can themselves be extended by other developers. EDFs can also have one or more predefined brands. Illustrative predefined XML tags for user interface elements can include tags for aspect types such as: toolbars, accelerators, menu items and themes. These types of aspects are used in the single navigable window application incorporated by reference above and defined in the table immediately below:

Tipo de Aspecto Aspect Type Definição Definition Barras de Ferramenta Toolbars Recipientes de comando horizontais acima da área do documento Horizontal control vessels above the document area Aceleradores Accelerators Atalhos do Teclado para comandos Keyboard shortcuts for commands Itens de Menu Menu Items Escolhas de menu instantâneo (pop-up) ou sus- Instant or pop-up menu choices

Petição 870170015211, de 09/03/2017, pág. 15/64Petition 870170015211, of 03/09/2017, p. 15/64

14/5414/54

penso (drop-down) que as terceiras partes podem adicionar junto às denominadas ligações de menu bem conhecidas na plataforma I think (drop-down) that third parties can add next to the so-called well-known menu on the platform Temas Themes Um modo acionado por dados para proporcionar sobreposições para recursos bem conhecidos da plataforma, tais como botões padrões ou folha de estilo preestabelecida A data-driven way to provide overlays for well-known features of the platform, such as standard buttons or pre-established style

Tabela 1 [0053] Marcas XML predefinidas para comportamentos / componentes / objetos incluem marcas para Serviços. Estes tipos de aspeto são utilizados na aplicação de janela navegável única incorporada por referência acima e definida na tabela imediatamente abaixo:Table 1 [0053] Predefined XML tags for behaviors / components / objects include tags for Services. These types of appearance are used in the single navigable window application incorporated by reference above and defined in the table immediately below:

Tipo de Aspecto Aspect Type Definição Definition Serviços services Serviços são objetos que estendem objetos existentes (tal como a aplicação, janela, ou documento) no Modelo de Objeto da aplicação ou plataforma. Por exemplo, funções de edição utilizam as Ligações do Modelo de Objeto ligadas com a janela ou com o documento que mantém o contexto do documento e o estado de edição por janela. Estes também podem incluir Ligações de Modelo de Objeto ligadas com a aplicação (tal como um objeto dicionário verificador de Ortografia) Services are objects that extend existing objects (such as the application, window, or document) in the Object Model of the application or platform. For example, editing functions use the Object Model Links linked with the window or with the document that maintains the document context and editing status per window. These can also include Object Model linked to the application (such as as a spelling checker dictionary object)

Tabela 2Table 2

Petição 870170015211, de 09/03/2017, pág. 16/64Petition 870170015211, of 03/09/2017, p. 16/64

15/54 [0054] Marcas XML predefinidas ilustrativas para elementos de armazenamento incluem marcas para classes de conteúdo e fontes de dados fora de linha. Estes tipos de aspecto são utilizados na aplicação de janela navegável única incorporada por referência acima e definida na tabela imediatamente abaixo:15/54 [0054] Illustrative predefined XML tags for storage elements include tags for content classes and offline data sources. These types of aspects are used in the single navigable window application incorporated by reference above and defined in the table immediately below:

Tipo de Aspecto Aspect Type Definição Definition Classes de Conteúdo Content Classes Permite aos escritores de extensão definir novos tipos de documentos XML com novos esquemas Enables extension writers to define new types of XML documents with new schemas Fontes de Dados Fora de Linha Outside Data Sources of line Permitem aos escritores de extensão definirem instruções de replicação de armazenamento em um EDF. Allow extension writers to define storage replication instructions at an EDF.

Tabela 3 ESQUEMA EDF [0055] Na modalidade descrita, os EDFs possuem um esquema XML particular que é utilizado. O esquema compreende coleções de marcas XML que são dispostas em uma organização hierárquica para facilitar a disseminação da informação para os componentes de software que precisam de certas extensões. Na modalidade descrita, o externo (marca abrangente) para os EDFs é uma marca de “extensão”. [0056] A Fig. 4 apresenta uma marca de extensão ilustrativa. As marcas de “extensão” podem incluir um ou mais dentre os seguintes atributos, todos os quais são opcionais:Table 3 EDF SCHEME [0055] In the described mode, EDFs have a particular XML schema that is used. The scheme comprises collections of XML tags that are arranged in a hierarchical organization to facilitate the dissemination of information to software components that need certain extensions. In the modality described, the external (comprehensive brand) for EDFs is an “extension” brand. [0056] Fig. 4 shows an illustrative extension mark. The “extension” marks can include one or more of the following attributes, all of which are optional:

Atributo Attribute Definição Definition Urn Urn ID para a extensão. Ele permite que os escritores de extensão especifiquem localizações relativas para o conteúdo nos EDFs sem utilizar os caminhos relativos ou URLs fixas. Ele também permi- ID for the extension. It allows writers extension agents specify relative locations for content on EDFs without using relative paths or fixed URLs. It also allows

Petição 870170015211, de 09/03/2017, pág. 17/64Petition 870170015211, of 03/09/2017, p. 17/64

16/5416/54

te aos administradores de hospedagem moverem-se ao redor das extensões em servidores sem interromper quaisquer links. hosting administrators to move around extensions on servers without interrupting any links. Nome Name Nome que pode ser utilizado em uma barra de estado ou exibição de mensagem Name that can be used in a bar status or message display Versão Version Número de versão determinada pelo vendedor para a extensão Vendor-determined version number for the extension Última Atualização Last update Data / Hora em que o EDF foi modificado pela última vez Date / Time the EDF was modified by last time descrição description Breve descrição da extensão. Brief description of the extension.

Tabela 4 [0057] Dentro da marca externa da “extensão” estão uma ou mais marcas filhas, também referidas como “marcas de nível mais alto”. Estas marcas de nível mais alto estão cada uma associada com um tipo de aspecto que pode ser adicionado por uma extensão particular. Tipos de aspecto ilustrativos são discutidos em conexão com as Tabelas 1 a 3 acima. Abaixo de cada marca de nível mais alto podem existir uma ou mais marcas filhas que estão individualmente associadas com um aspecto particular do tipo de aspecto que é para ser adicionado por uma extensão particular.Table 4 [0057] Within the external “extension” brand are one or more child brands, also referred to as “higher level brands”. These top-level marks are each associated with a type of appearance that can be added by a particular extension. Illustrative aspect types are discussed in connection with Tables 1 to 3 above. Below each top level tag there may be one or more child tags that are individually associated with a particular aspect of the type of aspect that is to be added by a particular extension.

[0058] A Fig. 5 apresenta uma organização do esquema XML ilustrativa de acordo com esta modalidade. Para cada marca de nível mais alto em um EDF, existe um gerenciador de ligação associado que é um componente de software que recebe dados associados com a marca de modo que os dados podem ser utilizados para incorporar a extensão dentro da plataforma ou programa de aplicação. Gerenciadores de ligação diferentes podem interpretar os dados a partir da marca de modos diferentes para proporcionar tipos diferentes de extensibilidade, de modo que marcas de nível mais alto diferentes irão conter tipos diferentes de dados em estruturas diferentes. Isto irá se tornar[0058] Fig. 5 presents an organization of the illustrative XML schema according to this modality. For each top-level brand in an EDF, there is an associated link manager that is a software component that receives data associated with the brand so that the data can be used to incorporate the extension into the platform or application program. Different link managers can interpret the data from the tag in different ways to provide different types of extensibility, so that different higher-level tags will contain different types of data in different structures. This will become

Petição 870170015211, de 09/03/2017, pág. 18/64Petition 870170015211, of 03/09/2017, p. 18/64

17/54 mais evidente na seção “Arquitetura” abaixo. Observe que o qualificador de espaço de nome “edf:” permite suporte de um esquema aberto onde as extensões podem proporcionar suas próprias marcas e os gerentes de ligação correspondentes. As marcas dentro do nome de espaço edf são utilizadas pelos gerenciadores de ligação embutidos na aplicação ou plataforma de software. As marcas em outros espaços de nome são utilizadas por terceiros para proporcionar pontos de extensibilidade adicionais.17/54 more evident in the “Architecture” section below. Note that the “edf:” namespace qualifier allows support for an open scheme where extensions can provide their own brands and the corresponding liaison managers. The marks within the edf space name are used by the connection managers embedded in the application or software platform. Tags in other namespaces are used by third parties to provide additional extensibility points.

MANIFESTO DE PACOTE (ARQUIVO PKG) [0059] Os manifestos de pacote (PKGs) ajudam em organizar a transferência do software na forma de múltiplos arquivos através de uma rede tal como a Internet. Os PKGs são de forma vantajosa empregados, no exemplo dado neste documento, com os EDFs. Como salientado acima, entretanto, as técnicas discutidas em conexão com os PKGs podem ser dispostas de forma independente dos EDFs e em qualquer cenário adequado onde seja desejável distribuir software através de uma rede tal como a Internet. Enquanto os EDFs descrevem a ligação lógica das extensões dentro de um programa de aplicação ou plataforma, o papel do manifesto de pacote é ajudar em um ou mais dentre: distribuição organizada, validação e/ou atualização dos arquivos associados com as várias extensões que podem ser proporcionados.PACKAGE MANIFEST (PKG FILE) [0059] Package manifests (PKGs) help organize the transfer of software in the form of multiple files over a network such as the Internet. PKGs are advantageously employed, in the example given in this document, with EDFs. As noted above, however, the techniques discussed in connection with PKGs can be deployed independently of EDFs and in any suitable scenario where it is desirable to distribute software over a network such as the Internet. While EDFs describe the logical connection of extensions within an application program or platform, the role of the package manifest is to assist in one or more of: organized distribution, validation and / or updating of the files associated with the various extensions that can be proportionate.

[0060] Ao se projetar um mecanismo de distribuição para a distribuição assistida pela Rede do conteúdo de software ou dos arquivos, várias considerações são de interesse.[0060] When designing a distribution mechanism for network-assisted distribution of software content or files, several considerations are of interest.

[0061] Sempre que possível, é desejável reduzir o tamanho das transferências requeridas durante as operações de atualização e de instalação. Para endereçar esta consideração, o conteúdo do software é partido em vários pacotes. Cada pacote contém um grupo de um ou mais arquivos que implementam uma funcionalidade comum ou bem[0061] Whenever possible, it is desirable to reduce the size of the transfers required during the update and installation operations. To address this consideration, the content of the software is broken into several packages. Each package contains a group of one or more files that implement common functionality or

Petição 870170015211, de 09/03/2017, pág. 19/64Petition 870170015211, of 03/09/2017, p. 19/64

18/54 definida. Por partir o conteúdo em pacotes individuais, o tamanho da transferência requerida durante a instalação e atualização pode ser minimizada. Cada pacote é então descrito por um manifesto de pacote (PKG) que inclui a informação sobre o arquivo tal como as localizações de arquivo e valores de informações não válidas que podem ser utilizados para validação ou segurança e estabelecimento de versão. [0062] É também desejável fornecer ao usuário final uma experiência tipo Rede. Para fazer isto, as extensões são carregadas de uma maneira que dá impressão a um usuário que ele está carregando uma página de rede, ao invés do que os pacotes de software tradicionais onde o usuário tem que aguardar até que todo o pacote seja carregado antes que ele possa interagir com o mesmo. Na modalidade descrita, é dada ao usuário uma experiência de tipo rede por se fluir continuamente (streaming) os arquivos de extensão para o cliente de modo que um usuário começa a interagir com um programa de aplicação muito antes do que se ele tivesse que esperar por todo o programa de aplicação do software ser carregado. Por exemplo, se existirem arquivos de imagem da interface com o usuário (UI) fluindo continuamente para o cliente, o usuário pode ver a UI à medida que os arquivos fluem. Considere, por exemplo, o programa de aplicação único possuindo as várias funcionalidades diferentes que é descrito no pedido de patente incorporado por referência acima. Um usuário pode navegar até uma funcionalidade de e-mail e transferir os arquivos que são necessários para interagir com a funcionalidade de e-mail. Os arquivos que estão associados com outra funcionalidade diferente seriam então transferidos após os arquivos associados com a funcionalidade de email. Deste modo, o usuário pode começar a operar dentro de uma funcionalidade particular sem ter que aguardar por todos os arquivos associados com todas as outras funcionalidades.18/54 defined. By breaking the content into individual packages, the download size required during installation and upgrade can be minimized. Each package is then described by a package manifest (PKG) that includes information about the file such as file locations and values of invalid information that can be used for validation or security and versioning. [0062] It is also desirable to provide the end user with a Network-like experience. To do this, the extensions are loaded in a way that gives a user the impression that he is loading a web page, rather than the traditional software packages where the user has to wait until the entire package is loaded before he can interact with it. In the described mode, the user is given a network-like experience by continuously streaming (streaming) extension files to the client so that a user starts interacting with an application program much earlier than if he had to wait for the entire software application program is loaded. For example, if there are user interface (UI) image files flowing continuously to the client, the user can see the UI as the files flow. Consider, for example, the single application program having the various different functionalities that is described in the patent application incorporated by reference above. A user can navigate to an email functionality and transfer the files that are needed to interact with the email functionality. The files that are associated with another different functionality would then be transferred after the files associated with the email functionality. In this way, the user can start operating within a particular functionality without having to wait for all files associated with all other functionality.

[0063] Outra consideração de interesse é relativa à eficiência com[0063] Another consideration of interest is related to efficiency with

Petição 870170015211, de 09/03/2017, pág. 20/64Petition 870170015211, of 03/09/2017, p. 20/64

19/54 a qual os arquivos de extensão ou “bits” são distribuídos para o cliente. Para endereçar esta consideração, a modalidade descrita utiliza um par de maneiras de se abordar diferentes: uma transferência controlada e uma transferência de segundo plano. A transferência controlada conduz as operações de transferência enquanto leva em consideração a largura de banda disponível e o tipo de mídia sobre a qual os arquivos estão sendo transferidos. Qualquer processo de transferência controlada adequado pode ser empregado e será entendido pelos com conhecimento na técnica. A transferência de segundo plano é conduzida enquanto o usuário está trabalhando dentro do programa de aplicação e é implementada por alocar um encadeamento de segundo plano, de modo que o usuário pode continuar seu trabalho. Uma otimização que é utilizada é que os pacotes são priorizados e distribuídos de acordo com o que um usuário pode estar trabalhando.19/54 to which the extension files or “bits” are distributed to the client. To address this consideration, the modality described uses a couple of different approaches: a controlled transfer and a background transfer. Controlled transfer leads to transfer operations while taking into account the available bandwidth and the type of media over which files are being transferred. Any suitable controlled transfer process can be employed and will be understood by those skilled in the art. Background transfer is carried out while the user is working within the application program and is implemented by allocating a background chain, so that the user can continue his work. An optimization that is used is that packages are prioritized and distributed according to what a user may be working on.

[0064] Outra consideração está associada com a otimização da experiência de computação do usuário. Aqui, a experiência do usuário é otimizada por se tornar disponível os cenários mais comuns para o usuário. Isto é efetivamente direcionado para fornecer ao usuário a funcionalidade que ele deseja primeiro e então, através do processo de transferência de segundo plano, proporcionar o código que implementa funcionalidades que o usuário pode utilizar no futuro. Para determinar quais funcionalidades um usuário deseja ter primeiro, um processo de empacotamento baseado em cenário automatizado é proporcionado, o qual funciona em relação aos registros de utilização de arquivo dos cenários documentados.[0064] Another consideration is associated with the optimization of the user's computing experience. Here, the user experience is optimized by making the most common scenarios available to the user. This is effectively aimed at providing the user with the functionality he wants first and then, through the background transfer process, providing the code that implements functionality that the user can use in the future. To determine which features a user wants to have first, an automated scenario-based packaging process is provided, which works against the file usage records of the documented scenarios.

[0065] Todas estas considerações e as soluções inventivas direcionadas para endereçar as considerações são discutidas em detalhes na seção que segue abaixo.[0065] All of these considerations and inventive solutions aimed at addressing the considerations are discussed in detail in the section below.

DEFINIÇÃO DO MANIFESTO DE PACOTE [0066] Na modalidade descrita, um manifesto de pacote (arquivoDEFINITION OF THE PACKAGE MANIFESTO [0066] In the described mode, a package manifest (file

Petição 870170015211, de 09/03/2017, pág. 21/64Petition 870170015211, of 03/09/2017, p. 21/64

20/5420/54

PKG) compreende uma lista dos arquivos que são utilizados em um pacote. A lista é de forma vantajosa alguma coisa compactada e digitalmente sinalizada. Cada manifesto de pacote pode conter uma lista de um ou mais arquivos, cada um dos quais pode incluir um hash associado, bem como diretivas de transferência que controlam a captura dos arquivos. Uma vez que uma extensão seja autorada, uma ferramenta de software pode ser utilizada para gerar o manifesto de pacote.PKG) comprises a list of files that are used in a package. The list is advantageously something compacted and digitally signed. Each package manifest can contain a list of one or more files, each of which can include an associated hash, as well as transfer policies that control the capture of the files. Once an extension is authorized, a software tool can be used to generate the package manifest.

[0067] Em adição, o manifesto de pacote pode especificar vários outros pedaços de informação.[0067] In addition, the package manifest can specify several other pieces of information.

GRUPO DE ARQUIVOS [0068] Todos os arquivos em uma extensão podem ser rotulados de acordo com uma série de grupos de arquivos predefinidos. O grupo de arquivos de um arquivo particular determina quando o arquivo particular foi transferido, onde ele está armazenado no cliente e como ele foi empacotado. Na modalidade descrita, quatro grupos de arquivos predefinidos são proporcionados e são listados e descritos na tabela imediatamente abaixo:FILE GROUP [0068] All files in an extension can be labeled according to a series of predefined file groups. The filegroup of a private file determines when the private file was transferred, where it is stored on the client, and how it was packaged. In the described mode, four groups of predefined files are provided and are listed and described in the table immediately below:

Nome do Grupo Name of Group Quando foi Transferido When was it Transferred Onde está armazenado no cliente Where is it stored in client Empacotamen- to Packaging to Conteúdo Content Requerido Required Transferido antes de quaisquer outros arquivos na extensão Downloaded before any other files in the extension Cache de pacote NetDocs Cache package NetDocs Todos os arquivos requeridos em uma extensão são empa- cotados juntos como um arquivo CAB* All required files to an extent are empha- quoted together as a CAB file * DLLs incluídas de modo que um usuário não terá que aguardar por um período prolon- DLLs included so that a user will not have to wait for a prolonged period

Petição 870170015211, de 09/03/2017, pág. 22/64Petition 870170015211, of 03/09/2017, p. 22/64

21/5421/54

gado de tempo antes de clicar em um elemento UI cattle of time before to click an element UI Off-line Offline Arquivos fora de linha começam a ser transferidos assim que os requeridos são transferidos. Contanto que os usuários fiquem conectados por tempo suficiente, todos estes arquivos serão transferidos e posteriormente estarão disponíveis para o uso fora de linha. Files out lines start to be transferred as soon as required are transferred. As long as users stay connected for time enough, all of these files will be transferred and posteriorly will be available to the offline use. cache de pacote NetDocs cache of package NetDocs Arquivo é transferido individualmente File is transferred individually Maioria dos arquivos UI Majority of UI files Sob de- manda Under sends Somente transferidos quando eles são requeridos pela primeira vez Only transferred when they are required for the first time cache de pacote NetDocs cache of package NetDocs Arquivos são transferidos individualmente Files are transferred individually Para evitar utilizar muito espaço em disco no cliente, aspec- To avoid use a lot space in disk on the client, features

Petição 870170015211, de 09/03/2017, pág. 23/64Petition 870170015211, of 03/09/2017, p. 23/64

22/5422/54

tos avançados podem ser colocados nesta categoria advanced features can be placed in this category Somente On-line Only Online Transferidos sob demanda. O conteúdo somente fica disponível quando o usuário está conectado. Transferred on demand. The content just stay available when the user is logged in. Cache Wi- nlnet Wi- cache nlnet Arquivos são transferidos individualmente Files are transferred individually Conteúdo que não é para ser proporcionado off-line. Exemplos incluem páginas de ajuda e outro conteúdo que possa consumir uma grande quantidade de espaço em disco. Content that is not to be provided offline. Examples include help pages and other content that can consume a large amount of disk space.

* CAB significa a tecnologia CABinet que o Internet* CAB stands for CABinet technology that the Internet

Explorer utiliza para empacotar bits para transferência. Os arquivos CAB variam da compressão 2 até 3:1 e são otimizados para expansão rápida. Os arquivos CAB possuem o benefício de segurança adicionado pela qual eles são facilmente assinados.Explorer uses to package bits for transfer. CAB files range from 2 to 3: 1 compression and are optimized for rapid expansion. CAB files have the added security benefit by which they are easily signed.

PRIORIDADE DE TRANSFERÊNCIA DE ARQUIVO [0069] Os arquivos em cada grupo são listados de acordo com a ordem na qual eles devem ser transferidos. Esta ordem de transferência é implícita no ordenamento dos arquivos no manifesto de pacote,FILE TRANSFER PRIORITY [0069] The files in each group are listed according to the order in which they are to be transferred. This transfer order is implicit in the ordering of files in the package manifest,

Petição 870170015211, de 09/03/2017, pág. 24/64Petition 870170015211, of 03/09/2017, p. 24/64

23/54 cujo exemplo é apresentado na Fig. 6.23/54 whose example is shown in Fig. 6.

VALOR HASH PARA SEGURANÇA/ESTABELECIMENTO DE VERSÃO [0070] Arquivos individuais no manifesto de pacote podem ter um valor hash associado. Cada valor hash é gerado por se rodar o arquivo através de um algoritmo de criptografia. Um algoritmo de criptografia ilustrativo é o CryptoAPI da Microsoft. No exemplo ilustrado, cada arquivo pode ser listado com um valor hash codificado na base 64, de modo que o arquivo pode ser validado uma vez que o conteúdo chegue no cliente. Especificamente, o manifesto de pacote é enviado para o cliente de uma maneira segura (isto é, ele é digitalmente assinado). O manifesto de pacote contém os valores hash para os arquivos individuais. Quando os arquivos individuais são recebidos pelo cliente, cada um dos arquivos pode ser executado através do mesmo CryptoAPI que foi utilizado para proporcionar os valores hash no manifesto de pacote. Se os valores hash para um arquivo em particular compara de forma favorável, então o arquivo não foi alterado e é seguro.HASH VALUE FOR SECURITY / VERSION ESTABLISHMENT [0070] Individual files in the package manifest may have an associated hash value. Each hash value is generated by running the file through an encryption algorithm. An illustrative encryption algorithm is Microsoft's CryptoAPI. In the illustrated example, each file can be listed with a base 64 encoded hash value, so the file can be validated once the content arrives at the client. Specifically, the package manifest is sent to the client in a secure manner (that is, it is digitally signed). The package manifest contains the hash values for the individual files. When the individual files are received by the client, each file can be executed using the same CryptoAPI that was used to provide the hash values in the package manifest. If the hash values for a particular file compare favorably, then the file has not been changed and is safe.

[0071] Quando um arquivo é atualizado, os valores hash podem servir a um propósito útil ao identificar os arquivos que não foram alterados entre versões diferentes de uma extensão. Por exemplo, considere a Fig. 7. Lá, um diretório antigo 700 em uma cache de pacote do cliente contém o pacote A que inclui dois arquivos - arquivo 1 com o hash = x e o arquivo 2 com hash = y. Assuma que este pacote está associado com uma versão mais antiga de uma extensão. Quando uma versão atualizada é produzida, seu manifesto de pacote é distribuído para o cliente. A versão da extensão atualizada é representada em um diretório fonte de um código ou servidor de rede 704. O manifesto de pacote inclui os valores hash para todos os arquivos na nova versão da extensão. Um novo diretório destino do cliente 702 é definido para todos os arquivos da nova extensão. Se qualquer um dos vaPetição 870170015211, de 09/03/2017, pág. 25/64[0071] When a file is updated, hash values can serve a useful purpose when identifying files that have not been changed between different versions of an extension. For example, consider Fig. 7. There, an old directory 700 in a client package cache contains package A which includes two files - file 1 with hash = x and file 2 with hash = y. Assume that this package is associated with an older version of an extension. When an updated version is produced, your package manifest is distributed to the customer. The version of the updated extension is represented in a source directory of a code or 704 network server. The package manifest includes hash values for all files in the new version of the extension. A new 702 client destination directory is defined for all files in the new extension. If any of the vaPetition 870170015211, of 03/09/2017, p. 25/64

24/54 lores hash para os arquivos na nova extensão for o mesmo que os valores hash dos arquivos no diretório antigo 700, então os arquivos podem ser copiados diretamente do diretório antigo 700 para o novo diretório destino 702. Neste exemplo, o valor hash do arquivo 1 é o mesmo que o valor hash para o arquivo 1 no diretório fonte 704, de modo que ele pode ser copiado para dentro do novo diretório destino 702. O valor hash do arquivo 2, entretanto, é diferente do valor hash para o arquivo 2 no diretório fonte, de modo que ele não é copiado do diretório antigo 700. Ao invés disso, o arquivo 2 é transferido a partir do servidor de código. Um novo arquivo 3 foi adicionado e também é transferido a partir do servidor de código. Por conseqüência, neste exemplo, uma nova versão de uma extensão resultou em uma transferência de menos do que todos os arquivos na versão da extensão. Isto é porque os valores hash para cada um dos arquivos na versão antiga da extensão foram aptos a ser comparados aos valores hash dos arquivos na nova versão da extensão. Estes valores hash que são os mesmos indicam que os arquivos não foram alterados entre as versões.24/54 hash files for files in the new extension is the same as the hash values of files in old directory 700, so files can be copied directly from old directory 700 to the new destination directory 702. In this example, the hash value of file 1 is the same as the hash value for file 1 in the source directory 704, so it can be copied into the new destination directory 702. The hash value of file 2, however, is different from the hash value for file 2 in the source directory, so it is not copied from the old 700 directory. Instead, file 2 is transferred from the code server. A new file 3 has been added and is also downloaded from the code server. Consequently, in this example, a new version of an extension resulted in a transfer of less than all files in the extension version. This is because the hash values for each of the files in the old version of the extension were able to be compared to the hash values of the files in the new version of the extension. These hash values that are the same indicate that the files have not been changed between versions.

[0072] A utilização dos valores hash para estabelecer a versão tem duas vantagens importantes sobre os esquemas de estabelecimento de versão tradicionais. Primeiro, o processo de atualização é automático. Ou seja, com um número de versão explícito, é possível esquecer de atualizar o número da versão quando despachando uma nova versão de um arquivo. A utilização dos valores hash evita este problema. Segundo, o estabelecimento de versão não conta com os tipos de arquivo. Especificamente, os esquemas de estabelecimento de versão tradicionais normalmente embutem a informação sobre a versão dentro dos arquivos; entretanto, nem todos os arquivos (por exemplo, arquivos GIF) suportam a informação de versão embutida. No presente exemplo, a utilização dos valores hash para estabelecer a versão não depende de se um tipo de arquivo em particular suporta ou[0072] Using hash values for versioning has two important advantages over traditional versioning schemes. First, the update process is automatic. That is, with an explicit version number, it is possible to forget to update the version number when dispatching a new version of a file. Using hash values avoids this problem. Second, versioning does not rely on file types. Specifically, traditional versioning schemes usually embed version information within files; however, not all files (for example, GIF files) support the built-in version information. In the present example, the use of hash values to establish the version does not depend on whether a particular file type supports or

Petição 870170015211, de 09/03/2017, pág. 26/64Petition 870170015211, of 03/09/2017, p. 26/64

25/54 não suporta a informação sobre a versão embutida. Em adição, a informação de versão pode ser armazenada separadamente do próprio arquivo. Portanto, o acesso ao arquivo real para determinar se ele é atual não é necessário.25/54 does not support information about the embedded version. In addition, the version information can be stored separately from the file itself. Therefore, access to the actual file to determine whether it is current is not required.

TAMANHO TOTAL DE ARMAZENAMENTO DO PACOTE [0073] O tamanho total de armazenamento de um pacote é útil na hora da transferência para verificar se o usuário possui espaço em disco suficiente.TOTAL PACKAGE STORAGE SIZE [0073] The total storage size of a package is useful at the time of transfer to verify that the user has sufficient disk space.

IDs DE CLASSE PARA AS DLLs [0074] Listar os IDs de Classe para cada DLL é necessário para permitir aos escritores de script criarem classes por documentar em relação ao OM. Adicionalmente, isto permite uma determinação de qual pacote contém o código para uma classe em particular. DEPENDÊNCIA DE CARGA DA DLL [0075] A razão para as seções de dependência é permitir ao código legado que conta com ser transferido em virtude de estar no caminho de pesquisa de alguma outra dll. Neste caso nós temos que ter certeza de que a dll de dependência está no diretório cache de pacote antes que a dll dependente seja carregada. A Fig. 6 apresenta um manifesto de pacote ilustrativo 600 que é definido em uma linguagem baseada em marcas hierárquica. De forma vantajosa, a linguagem baseada em marcas compreende a XML que é desejavelmente extensível e flexível. Neste exemplo, uma série de marcas são proporcionadas em uma disposição hierárquica. A marca “pacote” contém informações acerca do tamanho do pacote. A marca “arquivos” é um filho da marca “pacote” e contém informações acerca dos grupos de arquivo que estão contidos neste pacote particular. A marca “arquivo” é um filho da marca “grupo” e contém informações acerca de arquivos específicos que compreendem a extensão, isto é, o nome do arquivo e o valor hash. Uma marca “dependência” é proporcionada como um filho daCLASS IDS FOR DLLs [0074] Listing the Class IDs for each DLL is necessary to allow script writers to create undocumented classes in relation to OM. In addition, this allows a determination of which package contains the code for a particular class. DLL LOAD DEPENDENCE [0075] The reason for the dependency sections is to allow legacy code that is expected to be transferred due to being in the search path of some other dll. In this case we have to make sure that the dependency dll is in the package cache directory before the dependent dll is loaded. Fig. 6 presents an illustrative package manifest 600 that is defined in a hierarchical brand-based language. Advantageously, the brand-based language comprises XML that is desirably extensible and flexible. In this example, a series of marks are provided in a hierarchical arrangement. The “package” tag contains information about the size of the package. The “files” tag is a child of the “package” tag and contains information about the file groups that are contained in this particular package. The "file" tag is a child of the "group" tag and contains information about specific files that comprise the extension, that is, the file name and hash value. A “dependency” brand is provided as a child of

Petição 870170015211, de 09/03/2017, pág. 27/64Petition 870170015211, of 03/09/2017, p. 27/64

26/54 marca “arquivo” e lista quaisquer dependências como discutido acima. Uma marca “COMCIass” também é proporcionada como um filho da marca “arquivo” e contém os IDs como mencionado acima. A ordenação dos grupos de arquivo neste esquema implicitamente define a ordem de transferência dos arquivos.26/54 marks “file” and lists any dependencies as discussed above. A “COMCIass” tag is also provided as a child of the “file” tag and contains the IDs as mentioned above. The ordering of filegroups in this scheme implicitly defines the order in which files are transferred.

DISTRIBUIÇÃO DE PACOTE [0076] Para otimizar a distribuição de pacote, dois esquemas de distribuição diferentes são utilizados. Primeiro, um maneira de se abordar de transferência regulada é utilizada utilizando técnicas de transferência regulada conhecidas. Aqui, considerações tal como largura de banda disponível e meio sobre o qual as extensões estão sendo proporcionadas são consideradas.PACKAGE DISTRIBUTION [0076] To optimize package distribution, two different distribution schemes are used. First, a regulated transfer approach is used using known regulated transfer techniques. Here, considerations such as available bandwidth and the medium over which the extensions are being provided are considered.

[0077] Segundo, uma maneira de se abordar de transferência de segundo plano é utilizada. A transferência de segundo plano permite a um usuário continuar a trabalhar dentro de um programa de aplicação enquanto o conteúdo é transferido. Transferências em primeiro plano são utilizadas quando o usuário explicitamente requisitou um arquivo / extensão por clicar, por exemplo, em um link de extensão, ou requisitou uma ação, por exemplo, por clicar no botão de correio “Compor” (“Compose”), que requer a transferência de arquivos que não estão disponíveis localmente.[0077] Second, a way of approaching background transfer is used. Background transfer allows a user to continue working within an application program while the content is being transferred. Foreground transfers are used when the user explicitly requested a file / extension by clicking, for example, on an extension link, or requested an action, for example, by clicking on the “Compose” mail button, which requires transferring files that are not available locally.

[0078] Junto com as transferências de segundo plano, um aspecto de gerenciamento de fila é proporcionado. Especificamente, quando uma extensão deve ser instalada ou atualizada, um gerenciador de pacotes, que é essencialmente um componente de software que gerencia pacotes, é proporcionado com a seguinte informação:[0078] Along with background transfers, an aspect of queue management is provided. Specifically, when an extension must be installed or updated, a package manager, which is essentially a software component that manages packages, is provided with the following information:

[0079] . URL para a informação do manifesto de pacote em um servidor de código [0080] . URN para o diretório destino do pacote na cache de pacote no cliente[0079]. URL for the package manifest information on a code server [0080]. URN for the package destination directory in the package cache on the client

Petição 870170015211, de 09/03/2017, pág. 28/64Petition 870170015211, of 03/09/2017, p. 28/64

27/54 [0081] . (Opcional) URN para o diretório antigo do pacote (se existir um) na cache de pacote [0082] A partir desta informação, o gerenciador de pacotes cria um objeto pacote e adiciona o objeto pacote a uma fila de transferência. A fila de transferência é projetada para fácil nova disposição de uma ordem de transferência de pacote. Considere, por exemplo, a Fig. 8, que apresenta uma parte de uma fila de transferência 800 que contém dois objetos pacote - o objeto pacote 802 (correspondendo ao pacote A) e o objeto pacote 804 (correspondendo ao pacote B). Os objetos pacote mantém uma lista de quais arquivos de um pacote correspondente foram transferidos ou instalados. No presente exemplo, os arquivos 1 e 2 do pacote A foram instalados enquanto o arquivo 3 não foi instalado; e os arquivos 1, 2 e 3 não foram instalados a partir do pacote B. A fila de transferência pode ser novamente disposta baseado no que o usuário está fazendo. Ou seja, baseado nas ações que um usuário toma, a prioridade dos arquivos que são para ser transferidos pode ser alterada. Neste exemplo, o gerenciador de pacote é projetado para processar o primeiro arquivo não instalado no pacote no cabeçalho da fila de transferência. Se, entretanto, o usuário iniciar o uso de um arquivo em uma extensão que seja diferente da extensão cujos arquivos estão no cabeçalho da fila de transferência, o pacote correspondente para o arquivo que o usuário começou a utilizar pode ser movido para o cabeçalho da fila de transferência. Pelo fato de um pacote de arquivos ser especificado por sua URN, o pacote de arquivos pode ser rapidamente identificado e localizado na fila de transferência. Por exemplo e considerando a Fig. 8, se um dos arquivos no pacote B for requisitado antes do gerenciador de pacote ter iniciado a instalação do terceiro arquivo do pacote A, então o pacote B será movido para o cabeçalho da fila de transferência.27/54 [0081]. (Optional) URN for the old package directory (if one exists) in the package cache [0082] From this information, the package manager creates a package object and adds the package object to a transfer queue. The transfer queue is designed for easy reordering of a package transfer order. Consider, for example, Fig. 8, which presents a part of a transfer queue 800 that contains two packet objects - the packet object 802 (corresponding to packet A) and the packet object 804 (corresponding to packet B). Package objects maintain a list of which files in a corresponding package have been downloaded or installed. In the present example, files 1 and 2 in package A were installed while file 3 was not installed; and files 1, 2 and 3 were not installed from package B. The transfer queue can be laid out again based on what the user is doing. That is, based on the actions a user takes, the priority of the files that are to be transferred can be changed. In this example, the package manager is designed to process the first file not installed in the package in the transfer queue header. If, however, the user starts using a file in an extension that is different from the extension whose files are in the transfer queue header, the corresponding package for the file that the user started using can be moved to the queue header transfer. Because a file package is specified by its URN, the file package can be quickly identified and located in the transfer queue. For example and considering Fig. 8, if one of the files in package B is requested before the package manager has started installing the third file in package A, then package B will be moved to the transfer queue header.

[0083] A Fig. 9 ilustra um fluxograma que descreve as etapas em[0083] Fig. 9 illustrates a flow chart that describes the steps in

Petição 870170015211, de 09/03/2017, pág. 29/64Petition 870170015211, of 03/09/2017, p. 29/64

28/54 um método de gerenciamento de fila de transferência de acordo com o exemplo descrito. O método pode ser implementado em qualquer hardware, software, firmware adequado ou combinação dos mesmos. No presente exemplo, o método é implementado em software.28/54 a transfer queue management method according to the example described. The method can be implemented on any appropriate hardware, software, firmware or combination thereof. In the present example, the method is implemented in software.

[0084] A etapa 900 recebe uma ou mais requisições por uma extensão. As requisições podem ser geradas de qualquer modo adequado. A etapa 902 cria um objeto pacote que corresponde a cada pacote de extensão que deve ser transferido. A etapa 904 dispõe os objetos pacote em uma fila de transferência. A etapa 906 então transfere os arquivos correspondendo aos objetos pacote na fila de transferência. Esta etapa pode ser implementada, por exemplo, por se começar no cabeçalho da fila de transferência e transferir os arquivos até que todos os arquivos para um objeto pacote tenham sido transferidos e então mover-se para o próximo objeto pacote. A etapa 908 verifica se uma ação do usuário requer um arquivo que não está descrito no objeto pacote corrente. Se a ação do usuário não exigir um arquivo não descrito pelo objeto pacote corrente, então o método ramifica de volta para a etapa 906 e continua a transferir os arquivos associados com o objeto pacote corrente. Se, por outro lado, a ação do usuário exigir um arquivo que não está descrito no objeto pacote corrente, então a etapa 910 move o objeto pacote associado com o arquivo requerido para o cabeçalho da fila de transferência e começa a transferir os arquivos associados com o objeto pacote mais recentemente reposicionado. Esta etapa pode ser implementada por se verificar qual objeto pacote está associado com o arquivo requerido por se verificar a URN associada com o arquivo. Esta URN especifica o pacote de arquivos de modo que seu objeto pacote pode ser rapidamente localizado e movido para a frente da fila de transferência.[0084] Step 900 receives one or more requests for an extension. Requests can be generated in any suitable way. Step 902 creates a package object that corresponds to each extension package that must be transferred. Step 904 arranges the package objects in a transfer queue. Step 906 then transfers the files corresponding to the package objects in the transfer queue. This step can be implemented, for example, by starting at the header of the transfer queue and transferring the files until all files for a package object have been transferred and then moving to the next package object. Step 908 checks whether a user action requires a file that is not described in the current package object. If the user action does not require a file not described by the current package object, then the method branches back to step 906 and continues to transfer files associated with the current package object. If, on the other hand, the user's action requires a file that is not described in the current package object, then step 910 moves the package object associated with the required file to the transfer queue header and begins to transfer the files associated with the most recently repositioned package object. This step can be implemented by checking which package object is associated with the file required by checking the URN associated with the file. This URN specifies the file package so that its package object can be quickly located and moved to the front of the transfer queue.

CRIAÇÃO DE PACOTE [0085] Um dos aspectos inovadores da modalidade descrita é suaPACKAGE CREATION [0085] One of the innovative aspects of the described mode is its

Petição 870170015211, de 09/03/2017, pág. 30/64Petition 870170015211, of 03/09/2017, p. 30/64

29/54 extensibilidade. Ou seja, uma plataforma de software é proporcionada na forma de um programa de aplicação que pode ser estendido por várias extensões definidas por usuários terceiros. Estas extensões são distribuídas via a Rede e são integradas diretamente dentro da plataforma de software. De modo a proporcionar um processo de distribuição organizado, os pacotes devem ser criados de uma maneira uniforme de modo que eles possam ser manipulados de forma prognosticada e integrados dentro da plataforma de software.29/54 extensibility. That is, a software platform is provided in the form of an application program that can be extended by several extensions defined by third-party users. These extensions are distributed via the Network and are integrated directly within the software platform. In order to provide an organized distribution process, packages must be created in a uniform manner so that they can be manipulated in a predictable way and integrated within the software platform.

[0086] De acordo com a modalidade descrita, cada pacote deve corresponder a um aspecto de usuário final. Por exemplo, no pedido de patente incorporado por referência acima, pacotes separados são proporcionados para cada uma das funcionalidades de e-mail, contatos, autoria de documentos e planejadora. Se pacotes que não dependem uns dos outros compartilharem uma dependência, então esta dependência compartilhada deve tornar-se seu próprio pacote. Por exemplo, não existe razão pela qual as funcionalidades de e-mail e de autoria de documento devem depender uma da outra, ainda que ambas exijam a capacidade de publicar o conteúdo. Por separar a funcionalidade de publicação em seu próprio pacote, uma certa quantidade de flexibilidade da ordem de transferência é preservada. Dependendo no que o usuário começa a trabalhar, os arquivos correspondendo à funcionalidade de e-mail ou de autoria de documento podem ser transferidos primeiro.[0086] According to the described mode, each package must correspond to an end user aspect. For example, in the patent application incorporated by reference above, separate packages are provided for each of the email, contact, document authoring and planner functionality. If packages that do not depend on each other share a dependency, then this shared dependency must become its own package. For example, there is no reason why e-mail and document authoring functionality should depend on each other, even though both require the ability to publish content. By separating the publishing functionality into its own package, a certain amount of flexibility in the transfer order is preserved. Depending on what the user starts to work on, files corresponding to the email or document authoring functionality can be transferred first.

[0087] A Fig. 10 ilustra um fluxograma que descreve as etapas em um método de criação de pacote de acordo com o exemplo descrito. O método pode ser implementado em qualquer hardware, software, firmware adequado ou combinações dos mesmos. Partes do método, entretanto, podem ser implementadas manualmente.[0087] Fig. 10 illustrates a flow chart that describes the steps in a package creation method according to the example described. The method can be implemented on any appropriate hardware, software, firmware or combinations thereof. Parts of the method, however, can be implemented manually.

[0088] A etapa 1000 identifica os aspectos de usuário final que são para ser proporcionados como extensões. A etapa 1002 identifica[0088] Step 1000 identifies the aspects of the end user that are to be provided as extensions. Step 1002 identifies

Petição 870170015211, de 09/03/2017, pág. 31/64Petition 870170015211, of 03/09/2017, p. 31/64

30/54 quaisquer dependências compartilhadas entre os aspectos de usuário final. A etapa 1004 cria pacotes individuais para os aspectos do usuário final. A etapa 1006 cria pacotes individuais para quaisquer dependências compartilhadas entre os aspectos do usuário final.30/54 any dependencies shared between the end user aspects. Step 1004 creates individual packages for the end-user aspects. Step 1006 creates individual packages for any dependencies shared between aspects of the end user.

FERRAMENTA AUTOMATIZADA DE CRIAÇÃO DE MANIFESTO DE PACOTE [0089] De forma vantajosa e de acordo com uma implementação, uma ferramenta de manifesto de pacote automatizada é proporcionada e pega vários parâmetros de entrada e automaticamente cria um manifesto de pacote. A ferramenta pode ser disponível para terceiros para ajudar os mesmos na criação de um manifesto de pacote.AUTOMATED PACKAGE MANIFESTO CREATION TOOL [0089] Advantageously and according to an implementation, an automated package manifest tool is provided and takes various input parameters and automatically creates a package manifest. The tool may be available to third parties to assist them in creating a package manifest.

[0090] A Fig. 11 apresenta uma ferramenta de criação de manifesto de pacote ilustrativa 1100 que é de forma desejável implementada em software. Neste exemplo específico, a ferramenta pode pegar os seguintes parâmetros de entrada (alguns dos quais são opcionais): [0091] . Diretório da Extensão [0092] . Informação sobre o grupo de arquivo e dependência de carga de DLL (Opcional) [0093] . Estatísticas de utilização do arquivo a partir dos funcionamentos do cenário (Opcional) [0094] O parâmetro de entrada diretório da extensão especifica o diretório contendo todos os arquivos que serão descritos pelo manifesto de pacote. Se este for o único parâmetro, então a ferramenta 1100 irá gerar um manifesto no qual o EDF e as DLLs no diretório são listados no parâmetro “Requerido” e todo o outro conteúdo é “Off-Line”. [0095] A informação sobre o grupo de arquivo e o parâmetro de dependências de carga é opcional. Se um autor da extensão tiver uma idéia das categorias nas quais seus arquivos devem ser colocados, as categorias devem ser especificadas aqui. Por exemplo, o autor do manifesto modelo apresentado abaixo sabe que ele deseja que sua maPetição 870170015211, de 09/03/2017, pág. 32/64[0090] Fig. 11 presents an illustrative package manifest creation tool 1100 that is desirably implemented in software. In this specific example, the tool can take the following input parameters (some of which are optional): [0091]. Extension Directory [0092]. Information about the file group and DLL load dependency (Optional) [0093]. File usage statistics from the scenario's operations (Optional) [0094] The directory input parameter of the extension specifies the directory containing all files that will be described by the package manifest. If this is the only parameter, then the 1100 tool will generate a manifest in which the EDF and the DLLs in the directory are listed in the “Required” parameter and all other content is “Offline”. [0095] Information about the file group and the load dependency parameter is optional. If an extension author has an idea of the categories in which their files should be placed, the categories should be specified here. For example, the author of the model manifest presented below knows that he wants his maPetition 870170015211, of 03/09/2017, p. 32/64

31/54 nipulação de erro GIF seja incluída no parâmetro requerido do pacote. Suas escolhas aqui serão sempre respeitadas no manifesto final. Adicionalmente, se o autor da extensão souber de quaisquer dependências de carga de DLL, estas devem ser igualmente especificadas aqui.31/54 GIF error nipulation is included in the required parameter of the package. Your choices here will always be respected in the final manifest. Additionally, if the author of the extension knows of any DLL load dependencies, they must also be specified here.

<?xml version=”1.0”?><? xml version = ”1.0”?>

<Package><Package>

<Files><Files>

<Group Name= “required”><Group Name = “required”>

<File Name = “bar.dll”/><File Name = “bar.dll” />

<File Name = “foo.dll”/><File Name = “foo.dll” />

<Dependencies><Dependencies>

<File Name= “bar.dll”/><File Name = “bar.dll” />

</Dependencies></Dependencies>

</File></File>

<File Name= “myextension.edf 7><File Name = “myextension.edf 7>

<File Name= “errorhandling.gif *><File Name = “errorhandling.gif *>

</Group> ...</Group> ...

</Files></Files>

</Package></Package>

[0096] As estatísticas de utilização do arquivo a partir do parâmetro de funcionamentos do cenário é um parâmetro opcional. Este parâmetro permite que a prioridade de transferência do arquivo seja determinada baseada na execução do cenário. Um cenário é um script de tarefas que o usuário médio tipicamente segue quando utilizando um produto durante uma parte particular do uso do produto. Por exemplo, um cenário deve ser relativo às tarefas envolvidas ao enviar uma mensagem de e-mail (por exemplo, clicar o botão “novo e-mail”, digitar corretamente em “PARA”, digitar corretamente em “Assunto”, etc.). Na modalidade descrita, as estatísticas de utilização do arquivo a partir dos funcionamentos dos cenário são coletadas a partir dos registros IIS de funcionamento nos vários cenários. Cenários diferentes são direcionados para garantir, com algum grau de suporte de probabilidade, que a ordem de transferência do arquivo reflete, de algum modo, os arquivos que provavelmente serão utilizados pelo usuário primeiro.[0096] File usage statistics from the scenario's operating parameter is an optional parameter. This parameter allows the file transfer priority to be determined based on the execution of the scenario. A scenario is a task script that the average user typically follows when using a product during a particular part of using the product. For example, a scenario should be related to the tasks involved when sending an e-mail message (for example, clicking the “new e-mail” button, typing correctly in “TO”, typing correctly in “Subject”, etc.) . In the described mode, the statistics of the use of the file from the operations of the scenario are collected from the IIS records of functioning in the various scenarios. Different scenarios are designed to ensure, with some degree of probability support, that the file transfer order reflects, in some way, the files that are likely to be used by the user first.

Petição 870170015211, de 09/03/2017, pág. 33/64Petition 870170015211, of 03/09/2017, p. 33/64

32/54 [0097] Será apreciado que as estatísticas de utilização do arquivo podem ser proporcionadas dinamicamente pela construção de uma base de conhecimento que descreve as tarefas reais que as pessoas tipicamente realizam. A informação que é mantida na base de conhecimento pode então ser utilizada para gerar e adaptar os cenários de transferência que realmente conforma-se com padrões que são estabelecidos através da base de um usuário.32/54 [0097] It will be appreciated that file usage statistics can be provided dynamically by building a knowledge base that describes the real tasks that people typically perform. The information that is maintained in the knowledge base can then be used to generate and adapt the transfer scenarios that actually conform to standards that are established through the user base.

[0098] Se os escritores de extensão desejarem passar para a ferramenta de criação de manifesto de pacote 1100 esta informação, eles precisam especificar o diretório do registro, bem como as datas inicial e final da seção do registro que a ferramenta deve analisar. Para terceiros, a ordem de prioridade da transferência dentro de um grupo será a ordem na qual os arquivos do grupo foram requisitados nos registros através de todos os cenários.[0098] If extension writers wish to pass this information to the 1100 package manifest creation tool, they need to specify the registry directory, as well as the start and end dates of the registry section that the tool should analyze. For third parties, the order of priority of the transfer within a group will be the order in which the files of the group were requested in the records across all scenarios.

[0099] Em uma implementação, a maneira de se abordar é um pouco mais sofisticada. Informação adicional(em adição às etapas descritas) é armazenada nos registros I IS e inclui a prioridade e pontos de verificação do cenário. A prioridade do cenário é uma prioridade que é designada para cada cenário. Então, por exemplo, se um cenário for dez vezes mais importante do que outro cenário, esta informação pode ser mantida. A prioridade (por exemplo, uma classificação entre 1 e 100, com 100 sendo a prioridade mais alta) deve ser igual a uma melhor suposição quanto à porcentagem de tempo que os usuário irão andar através do cenário, assumindo que eles de modo algum utilizam a extensão. Os pontos de verificação proporcionam um modo de separar um cenário de outro. Por exemplo, pontos de verificação designados como “Off-Line” e “Desligar” podem ser automaticamente adicionados no começo e no fim dos cenários, respectivamente, de modo que pode existir um diferencial entre as execuções do cenário no registro de atividades. Adicionalmente, os autores de script podem[0099] In an implementation, the approach is a little more sophisticated. Additional information (in addition to the steps described) is stored in the I IS records and includes the priority and checkpoints of the scenario. The scenario priority is a priority that is assigned to each scenario. So, for example, if a scenario is ten times more important than another scenario, this information can be maintained. The priority (for example, a rating between 1 and 100, with 100 being the highest priority) should equal a better guess as to the percentage of time that users will walk through the scenario, assuming that they in no way use the extension. Checkpoints provide a way to separate one scenario from another. For example, checkpoints designated as “Off-Line” and “Off” can be automatically added at the beginning and end of the scenarios, respectively, so that there may be a difference between the executions of the scenario in the activity log. Additionally, script authors can

Petição 870170015211, de 09/03/2017, pág. 34/64Petition 870170015211, of 03/09/2017, p. 34/64

33/54 opcionalmente utilizar o cenário médio dos pontos de verificação para indicar uma alteração na prioridade do grupo, por exemplo, parte de um script do cenário podería ser rotulado como um aspecto “Sob demanda” e outra parte podería ser rotulada como “Off-Line”.33/54 optionally use the average checkpoint scenario to indicate a change in group priority, for example, part of a scenario script could be labeled as an “On Demand” aspect and another part could be labeled “Off- Line ”.

[00100] A Fig. 12 ilustra um fluxograma que descreve etapas em um método de criação de manifesto de pacote de acordo com o exemplo descrito. O método pode ser implementado em qualquer hardware, software, firmware adequado ou em combinação dos mesmos. No exemplo descrito, várias etapas do método são implementadas por uma ferramenta de criação de manifesto que é implementada em software.[00100] Fig. 12 illustrates a flow chart that describes steps in a method of creating a package manifest according to the example described. The method can be implemented on any appropriate hardware, software, firmware or in combination. In the example described, several steps of the method are implemented by a manifest creation tool that is implemented in software.

[00101] A etapa 1200 proporciona uma ferramenta de criação de manifesto de pacote. Esta ferramenta pode ser uma ferramenta de software que reside em uma máquina do autor da extensão. A etapa 1202 recebe a informação relativa a um diretório de extensão como um primeiro parâmetro de entrada. A etapa determina se existe qualquer informação sobre grupo de arquivo ou informação sobre dependência de carga proporcionada pelo autor da extensão. Se existir, a etapa 1206 recebe a informação como um parâmetro de entrada. A etapa 1208 determina se existe qualquer informação sobre estatística de utilização de arquivo. Tal informação pode ser proporcionada, em uma modalidade, através do uso das execuções de cenário como descrito acima. Se tal informação for proporcionada, então a etapa 1210 recebe a informação como um parâmetro de entrada. A etapa 1212 então utiliza todas as informações proporcionadas como parâmetros de entrada para gerar um manifesto automaticamente.[00101] Step 1200 provides a package manifest creation tool. This tool can be a software tool that resides on an extension author's machine. Step 1202 receives information about an extension directory as a first input parameter. The step determines whether there is any information about the file group or information about load dependency provided by the author of the extension. If it exists, step 1206 receives the information as an input parameter. Step 1208 determines whether there is any information on file usage statistics. Such information can be provided, in a modality, through the use of scenario executions as described above. If such information is provided, then step 1210 receives the information as an input parameter. Step 1212 then uses all the information provided as input parameters to automatically generate a manifest.

HEURÍSTICAS DE ORDENAÇÃO DE ARQUIVO ILUSTRATIVAS BASEADAS NAS ESTATÍSTICAS DE UTILIZAÇÃO DE ARQUIVO [00102] A Fig. 13 ilustra um fluxograma que descreve uma ordenaPetição 870170015211, de 09/03/2017, pág. 35/64ILLUSTRATIVE FILE ORDINATION HEURISTICS BASED ON FILE USE STATISTICS [00102] Fig. 13 illustrates a flowchart that describes an orderPetition 870170015211, from 03/09/2017, p. 35/64

34/54 ção de arquivo ilustrativa ou heurística de classificação de acordo com a modalidade descrita. Deve ser entendido que este exemplo específico constitui apenas um modo de ordenar arquivos para transferência. Por conseqüência, outras heurísticas podem ser utilizadas sem sair do espírito e do escopo do assunto reivindicado.34/54 illustrative or heuristic file classification according to the described mode. It should be understood that this specific example is just a way of ordering files for transfer. Consequently, other heuristics can be used without departing from the spirit and scope of the claimed subject.

[00103] A etapa 1300 classifica os arquivos por grupo de arquivo. Lembre-se que no exemplo ilustrado acima os arquivos podem ser agrupados em um dentre quatro grupos possíveis: Requeridos, OffLine, Sob Demanda e somente On-Line. Um grupo de arquivo é determinado primeiro pelo manifesto e se ele não proporcionar qualquer informação de grupo, então pelo grupo de prioridade mais alta que ele utiliza, de acordo com a informação de ponto de verificação no registro de atividades. Os arquivos no conjunto “Requerido” não devem ser considerados porque sua ordem já é conhecida. Se nenhuma informação de grupo estiver incluída acerca de um arquivo, então é feita uma suposição de que o EDF e todos os DLLs são arquivos “Requeridos” e todos os outros arquivos no diretório são “Off-Line”.[00103] Step 1300 classifies files by file group. Remember that in the example illustrated above, files can be grouped into one of four possible groups: Required, Offline, On Demand and only On-Line. A filing group is determined first by the manifest and if it does not provide any group information, then by the highest priority group it uses, according to the checkpoint information in the activity log. The files in the “Required” set should not be considered because their order is already known. If no group information is included about a file, then an assumption is made that the EDF and all DLLs are "Required" files and all other files in the directory are "Offline".

[00104] Considere, por exemplo, a seguinte informação de utilização de arquivo inicial para três diferentes cenários:[00104] Consider, for example, the following initial file usage information for three different scenarios:

[00105] Utilização de arquivo do cenário 1:1) ArquivoA.gif, 2) ArquivoB.xml, 3)ArquivoE.dll [00106] Utilização de arquivo do cenário 2: 1) ArquivoC.xml, 2) ArquivoA.gif [00107] Utilização de arquivo do cenário 3: 1) ArquivoD.js, 2) ArquivoA.gif [00108] Cenário 1 = prioridade 80 [00109] Cenário 2 = prioridade 80 [00110] Cenário 3 = prioridade 40[00105] Use of file of scenario 1: 1) FileA.gif, 2) FileB.xml, 3) FileE.dll [00106] Use of file of scenario 2: 1) FileC.xml, 2) FileA.gif [00107 ] Use of scenario 3 file: 1) File.js, 2) FileA.gif [00108] Scenario 1 = priority 80 [00109] Scenario 2 = priority 80 [00110] Scenario 3 = priority 40

Petição 870170015211, de 09/03/2017, pág. 36/64Petition 870170015211, of 03/09/2017, p. 36/64

35/54 [00111] Neste exemplo, existem três cenários que possuem arquivos associados com os mesmos. Cada um dos cenários possui uma prioridade com a qual ele está associado. Os arquivos são primeiro classificados por grupo (etapa 1300). Lembre-se que nesta heurística de ordenação, os DLLs são “Requeridos” e todos os outros arquivos são considerados “Off-Line”. Isto proporciona os seguinte arquivos classificados:35/54 [00111] In this example, there are three scenarios that have files associated with them. Each scenario has a priority with which it is associated. The files are first classified by group (step 1300). Remember that in this sorting heuristic, DLLs are "Required" and all other files are considered "Off-Line". This provides the following classified files:

ARQUIVOS REQUERIDOSREQUIRED FILES

Arquivo EFile E

ARQUIVOS OFF-LINE [00112] Arquivo A, Arquivo B, Arquivo C, Arquivo D [00113] A etapa 1302 classifica os arquivos baseada nas prioridades de cenário (da mais alta para a mais baixa). Os arquivos de prioridade mais alta são ordenados de modo que eles são transferidos primeiro. Esta etapa proporciona os seguinte arquivos classificados:OFF-LINE FILES [00112] File A, File B, File C, File D [00113] Step 1302 classifies files based on scenario priorities (from highest to lowest). The highest priority files are ordered so that they are transferred first. This step provides the following classified files:

Arquivos RequeridosRequired Files

Arquivo E Arquivos Off-Line [00114] Grupo de prioridade 80: arquivos utilizados pelos Cenários 1 e 2 = Arquivo A, Arquivo B e Arquivo C [00115] Grupo de prioridade 40: arquivos utilizados pelo Cenário 3 (que não estão já listados) = Arquivo D.Archive E Offline Files [00114] Priority group 80: files used by Scenarios 1 and 2 = File A, File B and File C [00115] Priority group 40: files used by Scenario 3 (which are not already listed) = File D.

[00116] A etapa 1304 então classifica os arquivos pela ordem de utilização de arquivo dentro de uma execução de cenário. Para cada agrupamento de prioridade com mais de um arquivo, os arquivos são classificados de acordo com a ordem média na qual eles foram transferidos dentro dos cenários de sua prioridade rotulada. Cenários com uma ordem de utilização média menor serão transferidos antes. Laços são partidos baseado na ordem na qual os cenários aparecem no arquivo de entrada. Como um exemplo, considere o seguinte:[00116] Step 1304 then sorts the files in the order in which they are used within a scenario execution. For each priority grouping with more than one file, the files are classified according to the average order in which they were transferred within the scenarios of their labeled priority. Scenarios with a lower average usage order will be transferred first. Loops are broken based on the order in which the scenarios appear in the input file. As an example, consider the following:

Petição 870170015211, de 09/03/2017, pág. 37/64Petition 870170015211, of 03/09/2017, p. 37/64

36/54 [00117] Arquivo A: ordem média = ( Ordem do Cenário 1 + ordem do Cenário 2)12 = (1+2)/2 = 1,5.36/54 [00117] File A: average order = (Order of Scenario 1 + order of Scenario 2) 12 = (1 + 2) / 2 = 1.5.

[00118] Arquivo B: ordem média = (Ordem do Cenário 1 )/1 = (2)/1 = 2 [00119] Arquivo C: ordem média = (Ordem do Cenário 2)/1 = (1 )/1 =[00118] File B: average order = (Scenario Order 1) / 1 = (2) / 1 = 2 [00119] File C: average order = (Scenario Order 2) / 1 = (1) / 1 =

1.1.

[00120] Aqui, o arquivo A foi utilizado primeiro pelo cenário 1 e segundo pelo cenário 2 para uma média de 1,5 e assim por diante. O arquivo C possui o número de ordem menor de modo que, dos arquivos Off-Line, ele é enviado primeiro. A ordem de arquivo final é apresentada abaixo:[00120] Here, file A was used first for scenario 1 and second for scenario 2 for an average of 1.5 and so on. The C file has the lowest order number so that, of the Offline files, it is sent first. The final file order is shown below:

Arquivos RequeridosRequired Files

Arquivo E Arquivos Off-Line [00121] Arquivo C, Arquivo A, Arquivo B, Arquivo D Código, Componentes e “bits” [00122] Os seguintes arquivos e recursos podem, mas não precisam, ser incluídos com uma extensão. Esta lista não é exclusiva, à medida que outros recursos podem certamente ser incorporados dentro de uma extensão.File E Offline Files [00121] File C, File A, File B, File D Code, Components and “bits” [00122] The following files and resources may, but need not, be included with an extension. This list is not exclusive, as other features can certainly be incorporated within an extension.

[00123] . UI personalizada e atalhos de teclado [00124] . Componentes e Comportamentos [00125] . Navegação XML e componentes de edição (incluindo XSL e objetos de lógica de negócio) [00126] . Páginas Estáticas ou outros recursos [00127] . Conteúdo personalizado definido por terceiros [00128] Os usuários instalam extensões por navegar para um local da rede para a extensão. Em uma implementação de Internet, o usuário navega para uma URL apropriada para a extensão. Os administradores de hospedagem também podem “empurrar” as extensões de[00123]. Custom UI and keyboard shortcuts [00124]. Components and Behaviors [00125]. XML navigation and editing components (including XSL and business logic objects) [00126]. Static Pages or other resources [00127]. Custom content defined by third parties [00128] Users install extensions by browsing to a network location for the extension. In an Internet implementation, the user navigates to an appropriate URL for the extension. Hosting administrators can also “push” extensions for

Petição 870170015211, de 09/03/2017, pág. 38/64Petition 870170015211, of 03/09/2017, p. 38/64

37/54 modo que os usuários podem automaticamente receber as mesmas por adicionar uma entrada dentro das configurações de “Preferências” dos usuários.37/54 so that users can automatically receive them by adding an entry within the “Preferences” settings of users.

CONFIGURAÇÃO DA PLATAFORMA E INSTALAÇÃO DE EXTENSÃO [00129] A Fig. 14 ilustra um fluxograma que descreve etapas ilustrativas em um processo de configuração e de instalação de extensão de acordo com a modalidade descrita. Este exemplo descreve um exemplo baseado na Internet. No exemplo ilustrado, várias extensões são mantidas ou acessíveis através de vários locais da Internet. As extensões podem ser distribuídas via Internet para um cliente. Será apreciado que a divisão de computadores ilustrada pode não necessariamente existir. Por exemplo, toda a funcionalidade incorporada pelos computadores pode residir em uma máquina, ou a extensão pode ser local, ou a plataforma e as extensões podem estar na mesma máquina, etc.PLATFORM CONFIGURATION AND EXTENSION INSTALLATION [00129] Fig. 14 illustrates a flow chart that describes illustrative steps in an extension configuration and installation process according to the described mode. This example describes an example based on the Internet. In the illustrated example, several extensions are maintained or accessible through various locations on the Internet. Extensions can be distributed via the Internet to a customer. It will be appreciated that the computer division illustrated may not necessarily exist. For example, all functionality incorporated by computers can reside on one machine, or the extension can be local, or the platform and extensions can be on the same machine, etc.

[00130] O fluxograma, neste exemplo, é ilustrado em conexão com três “zonas” separadas, uma das quais representa um cliente, uma das quais representa um servidor Internet da “plataforma” e uma das quais representa um servidor Internet da terceira parte. As ações que são descritas em conexão com as diferentes zonas são executadas, neste exemplo, pelas entidades designadas para a zona. Em algumas configurações, uma ou mais dentre estas três zonas podem se sobrepor. Por exemplo, o servidor de plataforma pode ser o mesmo dispositivo que o servidor de extensão.[00130] The flowchart, in this example, is illustrated in connection with three separate "zones", one of which represents a client, one of which represents a "platform" Internet server and one of which represents a third party Internet server. The actions that are described in connection with the different zones are performed, in this example, by the entities designated for the zone. In some configurations, one or more of these three zones can overlap. For example, the platform server can be the same device as the extension server.

[00131] A etapa 1400 navega um usuário para um local particular da Internet que está associado com a plataforma de software que deve ser utilizada como a fundação para a instalação de extensão descrita abaixo. Na etapa 1402, o usuário clica um botão “instala” que envia uma mensagem para o servidor de plataforma de software que indica[00131] Step 1400 navigates a user to a particular location on the Internet that is associated with the software platform that should be used as the foundation for the extension installation described below. In step 1402, the user clicks an “install” button that sends a message to the software platform server that indicates

Petição 870170015211, de 09/03/2017, pág. 39/64Petition 870170015211, of 03/09/2017, p. 39/64

38/54 que um usuário deseja instalar a plataforma de software. Esta etapa pode ser uma etapa opcional. As etapas 1404 e 1405 então transferem o software associado com a plataforma de software para o cliente. No exemplo ilustrado, a etapa 1404 transfere o arquivo de pacote para a aplicação de janela navegável única e baseado nos conteúdos deste arquivo, a etapa 1405 transfere outros componentes e arquivos para o computador do usuário. A etapa 1406 instala o código do software na máquina do cliente e pode criar diretórios locais para a cache da aplicação, um armazenamento local e preferências. Entretanto, será apreciado que diretórios locais ou preferência não são necessariamente necessários. A etapa 1408 ativa a plataforma de software.38/54 that a user wants to install the software platform. This step can be an optional step. Steps 1404 and 1405 then transfer the software associated with the software platform to the customer. In the illustrated example, step 1404 transfers the package file to the single navigable window application and based on the contents of this file, step 1405 transfers other components and files to the user's computer. Step 1406 installs the software code on the client machine and can create local directories for the application cache, local storage and preferences. However, it will be appreciated that local directories or preference are not necessarily necessary. Step 1408 activates the software platform.

[00132] As etapas descritas imediatamente acima constituem etapas associadas com uma configuração inicial na qual o código do software para a aplicação de janela navegável única é distribuído e instalado em uma máquina do cliente. As etapas descritas imediatamente abaixo estão associadas com a instalação de extensão.[00132] The steps described immediately above constitute steps associated with an initial configuration in which the software code for the single navigable window application is distributed and installed on a client machine. The steps described immediately below are associated with the extension installation.

[00133] A etapa 1410 utiliza um link que está associado com uma extensão para acessar a extensão. Esta etapa pode ser implementada por um usuário utilizando seu navegador até um local particular da Internet através do qual uma ou mais extensões podem ser acessadas. Alternativamente, uma referência ao link pode ser colocada nas preferências do usuário ou a preferência de um grupo de computação com o qual o usuário está associado (por exemplo, o administrador do sistema pode colocar uma referência nas preferências de um grupo). O link pode de forma vantajosa estar associado com um servidor de Internet ou local da Internet de uma terceira parte. A etapa 1412 transfere os arquivos de extensão de acordo com o PKG associado com um EDF. Os arquivos são distribuídos para o cliente e a etapa 1414 coloca os arquivos de extensão em um armazenamento local, como especificado pela especificação do PKG. Neste ponto, uma extensão é instaPetição 870170015211, de 09/03/2017, pág. 40/64[00133] Step 1410 uses a link that is associated with an extension to access the extension. This step can be implemented by a user using his browser to a particular location on the Internet through which one or more extensions can be accessed. Alternatively, a reference to the link can be placed in the user's preferences or the preference of a computing group with which the user is associated (for example, the system administrator can place a reference in a group's preferences). The link can advantageously be associated with an Internet server or a third party's Internet location. Step 1412 transfers the extension files according to the PKG associated with an EDF. The files are distributed to the client and step 1414 places the extension files in local storage, as specified by the PKG specification. At this point, an extension is required. 870170015211, of 03/09/2017, p. 40/64

39/54 lada e o usuário pode utilizar a funcionalidade proporcionada pela extensão. A etapa 1416 determina se as atualizações da extensão estão disponíveis. Isto pode ser feito por periodicamente pesquisar um catálogo de extensões (discutido em uma seção “Catalogo de Extensões” discutida abaixo) para verificar se existem quaisquer atualizações junto às várias extensões. Alternativamente, notificações podem ser automaticamente enviadas para o cliente de modo que o cliente esteja ciente das atualizações ou qualquer outro método pode ser utilizado para determinar se atualizações estão disponíveis. Se existirem atualizações disponíveis, a etapa 1418 ramifica para a etapa 1412 que transfere os arquivos de extensão associados com a atualização e instala os mesmos no cliente.39/54 and the user can use the functionality provided by the extension. Step 1416 determines whether updates to the extension are available. This can be done by periodically searching a catalog of extensions (discussed in a "Catalog of Extensions" section discussed below) to check if there are any updates with the various extensions. Alternatively, notifications can be automatically sent to the customer so that the customer is aware of the updates or any other method can be used to determine whether updates are available. If updates are available, step 1418 branches to step 1412 which transfers the extension files associated with the update and installs them on the client.

DESENVOLVENDO EXTENSÕES [00134] Desenvolver extensões para a plataforma de software é uma processo razoavelmente direto. Um desenvolvedor desenvolve o conteúdo da extensão utilizando uma ferramenta tal como o Bloco de Notas ou outras ferramentas tal como Visual Studio. A extensão é então descrita em um EDF e em um PKG e o PKG é digitalmente assinado e então opcionalmente compactado. A extensão pode então ser hospedada em um servidor particular da rede.DEVELOPING EXTENSIONS [00134] Developing extensions for the software platform is a fairly straightforward process. A developer develops the content of the extension using a tool such as Notepad or other tools such as Visual Studio. The extension is then described in an EDF and a PKG and the PKG is digitally signed and then optionally compressed. The extension can then be hosted on a private server on the network.

[00135] A Fig. 15 ilustra um fluxograma que descreve etapas em um método de desenvolvimento de extensão de acordo com a modalidade descrita. Uma ou mais destas etapas podem ser executadas por um desenvolvedor de software ou organização que cria uma extensão particular. Algumas das etapas são implementadas em software. A etapa 1500 desenvolve uma extensão. Quaisquer ferramentas adequadas podem ser utilizadas para desenvolver a extensão. A etapa 1502 então cria um arquivo de definição de extensão (EDF) para a extensão. O EDF, neste exemplo, é definido utilizando-se o XML como discutido acima. Outros formatos obviamente podem ser utilizados paPetição 870170015211, de 09/03/2017, pág. 41/64[00135] Fig. 15 illustrates a flow chart that describes steps in an extension development method according to the described modality. One or more of these steps can be performed by a software developer or organization that creates a particular extension. Some of the steps are implemented in software. Step 1500 develops an extension. Any suitable tools can be used to develop the extension. Step 1502 then creates an extension definition (EDF) file for the extension. EDF, in this example, is defined using XML as discussed above. Other formats can obviously be used paPetição 870170015211, from 03/09/2017, p. 41/64

40/54 ra descrever o EDF. A etapa 1504 cria um manifesto de pacote (PKG) para a extensão. O PKG, neste exemplo, é definido utilizando-se o XML como discutido acima. A etapa 1506 então hospeda o EDF e o PKG em um servidor da rede tal como um servidor de Internet. Adicionalmente, os arquivos de extensão associados que são descritos no PKG podem também ser hospedados pelo servidor da rede ou da Internet (etapa 1508). Tendo realizado o dito acima, os usuários podem agora navegar até um EDF diretamente (utilizando, por exemplo, a URL associada ou algum outro endereço da rede), o qual então instala a extensão por capturar quaisquer arquivos requeridos localmente e por colocar uma referência para a extensão nas preferência do usuário.40/54 to describe the EDF. Step 1504 creates a package manifest (PKG) for the extension. The PKG, in this example, is defined using XML as discussed above. Step 1506 then hosts the EDF and PKG on a network server such as an Internet server. In addition, the associated extension files that are described in the PKG can also be hosted by the network or Internet server (step 1508). Having accomplished the above, users can now navigate to an EDF directly (using, for example, the associated URL or some other network address), which then installs the extension by capturing any required files locally and by placing a reference to extension in user preferences.

[00136] Especificamente, a etapa 1510 distribui os arquivos EDF e PKG para um cliente. Esta etapa pode ser implementada por um usuário navegando até um local particular da Internet onde os arquivos apropriados estão hospedados e então transferir os arquivos. A etapa 1512 distribui os arquivos de extensão que estão associados com os arquivos EDF e PKG para o cliente, depois do que eles podem ser instalados e utilizados.[00136] Specifically, step 1510 distributes the EDF and PKG files to a customer. This step can be implemented by a user browsing to a particular location on the Internet where the appropriate files are hosted and then transferring the files. Step 1512 distributes the extension files that are associated with the EDF and PKG files to the client, after which they can be installed and used.

CATÁLOGO DE EXTENSÕES [00137] Uma otimização, discutida resumidamente em conexão com a Fig. 14, é um catálogo de extensões ou de EDFs que proporciona um nível adicional de procedimento indireto para o EDF. Um catálogo de EDFs permite organizações junto às extensões de grupo e proporciona um local único para determinar quando uma extensão se altera. A extensão desejada pode ser automaticamente selecionada do catálogo pela plataforma de software baseado nos parâmetros do usuário. O catálogo pode ser consultado para determinar qual extensão é mais apropriada para o usuário.EXTENSION CATALOG [00137] An optimization, discussed briefly in connection with Fig. 14, is a catalog of extensions or EDFs that provides an additional level of indirect procedure for EDF. An EDF catalog allows organizations close to group extensions and provides a unique place to determine when an extension changes. The desired extension can be automatically selected from the catalog by the software platform based on user parameters. The catalog can be consulted to determine which extension is most appropriate for the user.

[00138] na modalidade descrita, um catálogo é um arquivo XML que[00138] In the described mode, a catalog is an XML file that

Petição 870170015211, de 09/03/2017, pág. 42/64Petition 870170015211, of 03/09/2017, p. 42/64

41/54 contém mapeamentos das URNs da extensão para uma ou mais URNs de pacote baseado na linguagem, versão ou em outros atributos. Entretanto, os catálogos podem ser definidos utilizando-se qualquer formato adequado. Os catálogos podem proporcionar:41/54 contains mappings of the extension's URNs to one or more package URNs based on language, version, or other attributes. However, catalogs can be defined using any suitable format. Catalogs can provide:

[00139] . A capacidade de uma organização de hospedagem atualizar a informação de versão para uma ou mais extensões hospedadas em um único local [00140] . Procedimento indireto automático opcional para a versão corrigida baseado nos parâmetros do usuário para linguagens diferentes. Por exemplo, um catálogo pode listar várias versões de uma extensão para linguagem diferentes. O arquivo de catálogo pode ser processado para encontrar a versão da extensão que combina com os parâmetros de linguagem do usuário, [00141] . Atualização automática opcional para novas versões de extensões à medida que elas tornam-se disponíveis.[00139]. The ability of a hosting organization to update version information for one or more extensions hosted in a single location [00140]. Optional automatic indirect procedure for the corrected version based on user parameters for different languages. For example, a catalog may list several versions of an extension for different language. The catalog file can be processed to find the version of the extension that matches the user's language parameters, [00141]. Optional automatic update for new versions of extensions as they become available.

[00142] Como os EDFs, os catálogos podem ser compactados e digitalmente assinados para impedir falsificação. Por subscrever-se para um catálogo de modo a detectar alterações para uma ou mais extensões hospedadas, uma série de pings (protocolo para verificar se computador está conectado) do servidor requeridos do cliente (ou notificações para o cliente) de modo a descobrir atualizações de extensão podem ser reduzidos.[00142] Like EDFs, catalogs can be compressed and digitally signed to prevent counterfeiting. By subscribing to a catalog in order to detect changes to one or more hosted extensions, a series of server pings (protocol to check if computer is connected) from the client (or notifications to the client) in order to discover updates from extension can be reduced.

[00143] A Fig. 16 apresenta uma estrutura ilustrativa do catálogo XML. As entradas no catálogo podem ser estruturadas como se segue:[00143] Fig. 16 presents an illustrative structure of the XML catalog. Catalog entries can be structured as follows:

Atributo Attribute Tipo Type Requerido Required Descrição description URN da extensão Extension URN uri uri Sim Yes Identificador para uma extensão. Podem existir mais do que uma entrada para uma dada URN da extensão em um único catálogo Identifier for an extension. There may be more than one entry for a given URN from extension in a single catalog

Petição 870170015211, de 09/03/2017, pág. 43/64Petition 870170015211, of 03/09/2017, p. 43/64

42/5442/54

representando versões diferentes, linguagens, etc. representing different versions, languages, etc. Nome Name Cadeia Jail Não Not Nome amigável para uma extensão Friendly name for an extension URN do pacote Package URN uri uri Sim Yes URN requerida para o pacote. A URN do pacote corresponde a um conjunto discreto de bits. Ele é diferente da URN da extensão: Para cada usuário, a URN da extensão (nome) corresponde a um conjunto específico de arquivos baseado nas preferências de linguagem e de versão. Isto significa que, para máquinas compartilhadas, diferentes usuários podem possuir diferentes URNs de extensão para mapas de URN de pacote baseados em suas preferências. URN required for the package. THE Package URN corresponds to a discrete set of bits. He is different from the extension's URN: For each user, the extension URN (name) corresponds to a specific set of files based on language and version preferences. This means that, for shared machines, different users may have different URNs of different extension for URN maps of package based on your preferences. URL do pacote Package URL uri uri Sim Yes A URL do arquivo compactado digitalmente assinado contendo o arquivo PKG é requerida. The URL of the compressed file digitally signed containing the PKG file is required. Linguagem Language Cadeia Jail Não Not Linguagem é um especificador de linguagem opcional Language is a specifier optional language Versão Version Cadeia Jail Não Not Versão é um especificador de versão opcional Version is a specifier of optional version Linguagem Padrão Language Standard Cadeia Jail Não Not Linguagem Padrão é um atributo opcional especificando o pacote de linguagem padrão. Para uma dada versão de uma extensão, Standard language is an attribute optional specifying the package standard language. For given version of an extension,

Petição 870170015211, de 09/03/2017, pág. 44/64Petition 870170015211, of 03/09/2017, p. 44/64

43/5443/54

deve existir somente uma entrada com o atributo Linguagem Padrão. there must be only one entry with the Language attribute Standard. Versão Padrão Standard Version Cadeia Jail Não Not Versão Padrão é um atributo opcional especificando a versão preestabelecida para uma extensão. Para uma dada URN de extensão e um dado atributo de linguagem deve existir somente uma entrada com o atributo Linguagem Padrão. Standard Version is an optional attribute specifying the version pre-established for an extension. For a given extension URN and a given language attribute there must be only an entry with the Default Language attribute.

[00144] Neste exemplo particular:[00144] In this particular example:

[00145] . A linguagem padrão do netdoc-planner é a versão em Inglês.[00145]. The standard language of netdoc-planner is the English version.

[00146] . A versão em Inglês padrão é 1.1. A versão Francesa padrão é 1.0. Se não existir versão disponível na linguagem especificada do usuário na plataforma, ela irá pegar a versão Inglesa 1.1 por parâmetro preestabelecido.[00146]. The standard English version is 1.1. The standard French version is 1.0. If there is no version available in the user's specified language on the platform, it will take the English version 1.1 by pre-established parameter.

[00147] . A versão em Inglês do netdoc-planner foi atualizada de V1 para V1.1.[00147]. The English version of netdoc-planner has been updated from V1 to V1.1.

[00148] . Também existe uma versão Francesa. A URN da extensão é a mesma que a da versão em Inglês. Ainda não existe release 1.1 para o Francês, de modo que a 1.0 é a versão atual para os usuários falando Francês.[00148]. There is also a French version. The extension's URN is the same as the English version. There is no release 1.1 for French yet, so 1.0 is the current version for French speaking users.

[00149] . Uma consulta junto ao catálogo retorna somente as linhas onde a linguagem combina com as preferências de linguagem do usuário. A consulta também retornaria todas as linhas onde a linguagem é a linguagem do usuário ou a padrão = “sim” e rejeita duplicatas para o mesmo nome.[00149]. A query with the catalog returns only the lines where the language matches the user's language preferences. The query would also return all lines where the language is the user's language or the default = "yes" and rejects duplicates for the same name.

ARQUITETURAARCHITECTURE

Petição 870170015211, de 09/03/2017, pág. 45/64Petition 870170015211, of 03/09/2017, p. 45/64

44/54 [00150] Na modalidade descrita, um dos aspectos que proporciona utilidade desejável é a extensibilidade da plataforma de software. Ou seja, desenvolvedores de terceira e quarta partes estão livres para desenvolver suas próprias extensões que podem então ser utilizadas dentro da estrutura da plataforma de software. As extensões são integradas diretamente dentro do software de modo que a funcionalidade da plataforma é modificada pelas extensões. Lembre-se que de modo a proporcionar uma extensão, o desenvolvedor simplesmente cria a extensão, descreve sua extensão em um EDF e em um PKG e então hospeda o EDF, PKG e arquivos associados em uma servidor da rede. [00151] O EDF, como salientado acima, pode ser definido em um esquema XML que inclui um nó raiz (isto é, marca “extensão”) e um ou mais nós filhos. Neste exemplo particular, os nós filhos geralmente correspondem aos tipos futuros da extensão individual que são desejados para incorporação dentro da plataforma de software. Por exemplo, lembre-se que as Tabelas 1 a 3 acima descrevem vários tipos de aspecto predefinidos ilustrativos que podem ser adicionados através de uma extensão utilizando o esquema XML predefinido.44/54 [00150] In the described mode, one of the aspects that provides desirable utility is the extensibility of the software platform. That is, third and fourth party developers are free to develop their own extensions that can then be used within the framework of the software platform. Extensions are integrated directly into the software so that the functionality of the platform is modified by the extensions. Remember that in order to provide an extension, the developer simply creates the extension, describes its extension in an EDF and PKG, and then hosts the EDF, PKG and associated files on a network server. [00151] The EDF, as highlighted above, can be defined in an XML schema that includes a root node (ie, “extension” tag) and one or more child nodes. In this particular example, the child nodes generally correspond to the future types of the individual extension that are desired for incorporation within the software platform. For example, remember that Tables 1 to 3 above describe several illustrative predefined appearance types that can be added via an extension using the predefined XML schema.

[00152] Considere agora que um desenvolvedor deseje adicionar dois menus e uma barra de ferramentas para a plataforma de software. Os menus e a barra de ferramentas podem ser associados com uma loja de venda a varejo que mantém um site da Rede para seus clientes. A loja de venda a varejo pode desejar que um cliente que visita seu site da Rede seja apresentado com uma UI que seja única para a loja de venda a varejo e proporcione serviços que sejam especificamente construídos para a loja. Para fazer isto, o desenvolvedor desenvolve dois menus diferentes, um dos quais pode estar associado com a exibição dos especiais mais recentes e outro pode estar associado com proporcionar um mecanismo de pesquisa através do qual o usuário pode pesquisar produtos específicos. A barra de ferramenta pode[00152] Now consider that a developer wants to add two menus and a toolbar to the software platform. The menus and the toolbar can be associated with a retail store that maintains a Web site for its customers. The retail store may want a customer who visits its Web site to be presented with a UI that is unique to the retail store and provides services that are specifically built for the store. To do this, the developer develops two different menus, one of which can be associated with the display of the most recent specials and the other can be associated with providing a search engine through which the user can search for specific products. The toolbar can

Petição 870170015211, de 09/03/2017, pág. 46/64Petition 870170015211, of 03/09/2017, p. 46/64

45/54 conter botões específicos que são únicos para a loja de venda a varejo. Um EDF simplificado chamado “retail.edf” para a extensão da loja de venda a varejo é apresentado diretamente abaixo:45/54 contain specific buttons that are unique to the retail store. A simplified EDF called “retail.edf” for the retail store extension is shown directly below:

<edf: extension name= “retail extension” um= “extension.retail.com”> <edf:menus><edf: extension name = “retail extension” um = “extension.retail.com”> <edf: menus>

<edf:menu url= “uri 1 .htm”/><edf: menu url = “uri 1 .htm” />

<edf:menu url= “url2.htm”/><edf: menu url = “url2.htm” />

</edf:menus></ edf: menus>

<edf:toolbars><edf: toolbars>

<edf:toolbar url= “url3.htm”/><edf: toolbar url = “url3.htm” />

</edf:toolbars></ edf: toolbars>

</edf:/ extension></ edf: / extension>

[00153] Aqui, a marca externa “extension” designa este arquivo XML como uma extensão. As marcas internas “menus” e “toolbar” são marcas de nível mais alto que designam a informação entre estas marcas relativas respectivamente aos menus e às barras de ferramenta que correspondem às extensões que o desenvolvedor adicionou. As marcas em negrito “menu” e “toolbar” descrevem dados relativos à extensão real e contém uma URL que está associada com cada extensão como descrito acima. O EDF acima logicamente descreve as extensões que estão sendo proporcionadas como incluindo dois menus e uma barra de ferramentas.[00153] Here, the external tag “extension” designates this XML file as an extension. The internal “menu” and “toolbar” tags are top-level tags that designate the information between these tags relative to the menus and toolbars respectively that correspond to the extensions that the developer has added. The bold "menu" and "toolbar" tags describe data relating to the actual extension and contain a URL that is associated with each extension as described above. The above EDF logically describes the extensions being provided as including two menus and a toolbar.

[00154] Considere também que o EDF acima pode constituir somente um dentre vários EDFs que são carregados dentro do sistema. Cada EDF pode conter uma ou mais marcas de nível mais alto, cada uma das quais está associada com uma ou mais extensões específicas que devem ser adicionadas para a plataforma de software.[00154] Also consider that the EDF above can constitute only one of several EDFs that are loaded into the system. Each EDF can contain one or more top-level tags, each of which is associated with one or more specific extensions that must be added to the software platform.

[00155] A Fig. 17 ilustra um diagrama de blocos de um arquitetura de software ilustrativa que é configurada para processar vários EDFs diferentes de modo que os componentes de software que são responsáveis por incorporar cada extensão particular na plataforma de sofPctição 870170015211, dc 09/03/2017, pág. 47/64[00155] Fig. 17 illustrates a block diagram of an illustrative software architecture that is configured to process several different EDFs so that the software components that are responsible for incorporating each particular extension into the software platform 870170015211, dc 09 / 03/2017, p. 47/64

46/54 tware recebe a informação apropriada que é específica para sua extensão. Este exemplo é específico para a implementação XML que é discutida por todo este documento. Deve ser entendido que outras arquiteturas, similares em funcionalidade à discutida abaixo, podem ser utilizadas em outras implementações sem sair do espírito e do escopo do assunto reivindicado.46/54 tware receives the appropriate information that is specific to its extension. This example is specific to the XML implementation that is discussed throughout this document. It should be understood that other architectures, similar in functionality to the one discussed below, can be used in other implementations without departing from the spirit and scope of the claimed subject.

[00156] Objetos de utilidade, aqui referidos como pontos de ligação, são utilizados para processar a informação a partir de vários EDFs. Um ponto de ligação é simplesmente uma coleção de objetos que dispara eventos para ouvintes registrados como objetos à medida que objetos são adicionados ou removidos da coleção. Vários tipos de pontos de ligação podem ser criados, mas todos pegam dados a partir de uma fonte (freqüentemente outro ponto de ligação), processam os mesmos (dinamica ou estaticamente) e expõem os resultados de seu processamento. Alguns dos pontos de ligação mais simples incluem: [00157] . Um ponto de ligação XML, o qual carrega um arquivo XML e expõe os nós de nível mais alto do XML como objetos em sua coleção.[00156] Utility objects, here referred to as connection points, are used to process information from several EDFs. A connection point is simply a collection of objects that triggers events for registered listeners as objects as objects are added to or removed from the collection. Several types of connection points can be created, but all take data from a source (often another connection point), process it (dynamically or statically) and display the results of its processing. Some of the simplest connection points include: [00157]. An XML connection point, which loads an XML file and exposes the topmost XML nodes as objects in your collection.

[00158] . Um ponto de ligação de filtro, o qual conecta-se com outro ponto de ligação e expõe somente aqueles objetos do mesmo que vão de encontro a algum critério.[00158]. A filter connection point, which connects to another connection point and exposes only those objects of the same that meet some criteria.

[00159] . Um ponto de ligação de união, o qual conecta-se com um ou mais outros pontos de ligação e expõe todos os seus objetos como uma coleção de objetos unida.[00159]. A joint connection point, which connects with one or more other connection points and exposes all its objects as a collection of joined objects.

[00160] No exemplo ilustrado, a arquitetura inclui uma coleção de um ou mais pontos de ligação, incluindo uma estrutura de funil conhecida como EDFHub 1700, um gerenciador de ponto de ligação 1702 e vários gerenciadores de ligação 1704. O EDFHub 1700 recebe todos os EDFs e funde os mesmos juntos e expõe os mesmos como uma lista única. Outros pontos de ligação individuais proporcionam mecaPetição 870170015211, de 09/03/2017, pág. 48/64[00160] In the illustrated example, the architecture includes a collection of one or more connection points, including a funnel structure known as EDFHub 1700, a connection point manager 1702 and several connection managers 1704. The EDFHub 1700 receives all EDFs and merges them together and exposes them as a single list. Other individual connection points provide mecca Petition 870170015211, of 03/09/2017, p. 48/64

47/54 nismos que manipulam (incluindo filtragem, fusão e expansão) a lista única que é exposta pelo EDFHub 1700. Sempre que uma nova extensão ou EDF é adicionado ou removido do EDFHub 1700, os vários pontos de ligação irão ver com o mesmo se o gerenciador de ligação apropriado está notificado. Isto é feito pelo disparo de eventos para os gerenciadores de ligação apropriados. O gerenciador de ponto de ligação 1702 cria, destrói e gerencia os vários pontos de ligação no sistema e permite fácil reutilização de pontos de ligação idênticos.47/54 nisms that manipulate (including filtering, merging and expanding) the unique list that is exposed by the EDFHub 1700. Whenever a new extension or EDF is added or removed from the EDFHub 1700, the various connection points will see with the same if the appropriate connection manager is notified. This is done by triggering events to the appropriate call managers. The connection point manager 1702 creates, destroys and manages the various connection points in the system and allows easy reuse of identical connection points.

[00161] Para cada marca de nível mais alto (isto é, marcas ”menu” e “toolbar”), existe um gerenciador de ligação correspondente 1704 que utiliza os dados proporcionados pelos pontos de ligação para incorporar um tipo particular de aspecto dentro da plataforma de software. Cada gerenciador de ligação requisita um conjunto de pontos de ligação a partir do gerenciador de ponto de ligação 1702. Estes manipulam os dados expostos pelo EDFHub 1700. No exemplo ilustrado, os pontos de ligação podem ser requisitados como uma cadeia pressuposta que o gerenciador de ponto de ligação utiliza para criar e construir um conjunto de pontos de ligação que opera sobre os dados expostos pelo EDFHub 1700.[00161] For each top-level brand (ie "menu" and "toolbar" brands), there is a corresponding connection manager 1704 that uses the data provided by the connection points to incorporate a particular type of aspect within the platform software. Each connection manager requests a set of connection points from connection point manager 1702. These manipulate the data exposed by the EDFHub 1700. In the illustrated example, connection points can be requested as a presumed chain that the point manager of connection uses to create and build a set of connection points that operates on the data exposed by the EDFHub 1700.

[00162] A Fig. 18 ilustra um fluxograma que descreve etapas em um método de acordo com a modalidade descrita. O método é implementado em software e, neste exemplo, pelos componentes de software da Fig. 17.[00162] Fig. 18 illustrates a flowchart that describes steps in a method according to the described mode. The method is implemented in software and, in this example, by the software components of Fig. 17.

[00163] A etapa 1800 recebe vários EDFs. Estes arquivos podem ser recebidos de qualquer modo adequado. Por exemplo, um usuário pode especificar em suas preferências extensões particulares que ele deseja que sejam carregadas quando ele estiver on-line. Alternativamente, um usuário pode navegar utilizando um link para um local particular da Internet que reconhece que o usuário está executando uma plataforma de software que está configurada para dinamicamente adiPetição 870170015211, de 09/03/2017, pág. 49/64[00163] Step 1800 receives several EDFs. These files can be received in any suitable way. For example, a user can specify in their preferences particular extensions that they want to be loaded when they are online. Alternatively, a user can browse using a link to a particular location on the Internet that recognizes that the user is running a software platform that is configured to dynamically add 870170015211, from 03/09/2017, pg. 49/64

48/54 cionar as extensões. Os EDFs, neste exemplo, são afunilados no EDFHub 1700 que utiliza pontos de ligação para combinar os EDFs (etapa 1802). Neste exemplo, os EDFs são definidos como arquivos XML e os nós são combinados em uma única lista XML. A etapa 1804 expõem os EDFs combinados. Neste exemplo particular, os EDFs são combinados em uma única lista XML que é exposta para vários outros pontos de ligação que então adicionalmente manipulam estes dados (etapa 1806). Uma meta dos pontos de ligação é evitar ter os gerenciadores de ligação 1704 consultando novamente todo o sistema cada vez que uma extensão é adicionada ou removida do sistema. Assim, se uma extensão for adicionada ou removida, os pontos de ligação garantem que somente o gerenciador de ligação apropriado 1704 seja notificado das adições ou deleções específicas da extensão. Por exemplo, se um EDF indica a adição de um menu, então somente o gerenciador de ligação associado com menus é notificado. Por conseqüência, a etapa 1808 notifica ao gerenciador de ligação apropriado sobre quaisquer novos dados que combinem com os requerimentos dos gerenciadores de ligação.48/54 operate the extensions. The EDFs, in this example, are tapered on the EDFHub 1700 which uses connection points to combine the EDFs (step 1802). In this example, EDFs are defined as XML files and the nodes are combined into a single XML list. Step 1804 exposes the combined EDFs. In this particular example, the EDFs are combined into a single XML list that is exposed to several other connection points that then further manipulate this data (step 1806). A goal of the connection points is to avoid having the 1704 connection managers to query the entire system again each time an extension is added or removed from the system. Thus, if an extension is added or removed, the connection points ensure that only the appropriate connection manager 1704 is notified of the extension's specific additions or deletions. For example, if an EDF indicates the addition of a menu, then only the link manager associated with menus is notified. Consequently, step 1808 notifies the appropriate connection manager of any new data that matches the requirements of the connection managers.

PONTOS DE LIGAÇÃO E GERENCIADOR DE PONTO DECONNECTION POINTS AND POINT MANAGER

LIGAÇÃO [00164] Os pontos de ligação são objetos que expõem coleções de objetos ordenados e notificações de ativação quando novos objetos são inseridos ou deletados. No sistema ilustrativo, os objetos são nós XML, mas eles poderiam ser qualquer tipo de objeto. Apesar de existirem vários tipos de pontos de ligação, eles todos seguem um processo similar:CONNECTION [00164] Connection points are objects that expose collections of ordered objects and activation notifications when new objects are inserted or deleted. In the illustrative system, the objects are XML nodes, but they could be any type of object. Although there are several types of connection points, they all follow a similar process:

1) Inicialmente ligar-se a uma ou mais fontes de dados. Estas poderiam ser arquivos ou, normaimente, outros pontos de ligação.1) Initially connect to one or more data sources. These could be files or, normally, other connection points.

2) Processar os dados baseado em alguma lógica.2) Process the data based on some logic.

Petição 870170015211, de 09/03/2017, pág. 50/64Petition 870170015211, of 03/09/2017, p. 50/64

49/5449/54

Normalmente a lógica é muito simples e poderia envolver alguma coisa como filtrar os objetos baseado em alguns critérios.Usually the logic is very simple and could involve something like filtering objects based on some criteria.

) Expor os resultados da etapa de processamento 2 em uma nova coleção de objetos.) Display the results of processing step 2 in a new collection of objects.

4) Disparar eventos para indicar como a coleção de objetos exposta alterou-se (Onlnserted(lndex, count) ou OnRemoved(index, count)).4) Trigger events to indicate how the exposed object collection has changed (Onlnserted (lndex, count) or OnRemoved (index, count)).

5) Opcionalmente, continuar a escutar alterações nas fontes de dados e repetir as etapas 2 a 4 quando ocorrerem alterações.5) Optionally, continue to listen for changes in the data sources and repeat steps 2 to 4 when changes occur.

[00165] Sozinho, cada ponto de ligação é muito simples, mas quando tipos diferentes de pontos de ligação são combinados para formar “cadeias”, onde um ponto de ligação processa dados de um segundo ponto de ligação, o processamento pode ser muito poderoso. Isto é especialmente verdadeiro se os pontos de ligação somente processarem os dados alterados na etapa 2, uma vez que eles somente fazem uma pequena quantidade de trabalho simples em qualquer hora. No sistema ilustrativo, este processamento incrementai significa que todo o sistema não tem que ser novamente consultado quando uma nova extensão é instalada ou quando uma extensão existente é removida. Adicionalmente, cada gerenciador de ligação no sistema ilustrativo utiliza uma cadeia específica de pontos de ligação e desse modo é somente informado das alterações que impactam sua área de extensibilidade.[00165] Alone, each connection point is very simple, but when different types of connection points are combined to form "chains", where a connection point processes data from a second connection point, the processing can be very powerful. This is especially true if the connection points only process the data changed in step 2, since they only do a small amount of simple work at any time. In the illustrative system, this incremental processing means that the entire system does not have to be consulted again when a new extension is installed or when an existing extension is removed. In addition, each connection manager in the illustrative system uses a specific chain of connection points and is thus only informed of changes that impact its area of extensibility.

[00166] O gerenciador de ponto de ligação executa duas importantes funções quando construindo cadeias de pontos de ligação. Primeiro, ele permite que as cadeias sejam descritas como cadeias pressupostas. O gerenciador de ponto de ligação interpreta estas cadeias e constrói a cadeia requerida de pontos de ligação. Segundo, ele permite a nova utilização de pontos de ligação idênticos, o que torna o sisPetição 870170015211, de 09/03/2017, pág. 51/64[00166] The connection point manager performs two important functions when building chains of connection points. First, it allows chains to be described as presupposed chains. The hotspot manager interprets these chains and builds the required hotspot chain. Second, it allows the new use of identical connection points, which makes the system 870170015211, of 03/09/2017, p. 51/64

50/54 tema mais eficiente. À medida que o gerenciador de ponto de ligação cria cada cadeia de pontos de ligação, ele segue qual cadeia pressuposta corresponde a qual ponto de ligação. Se esta cadeia pressuposta for posteriormente novamente requisitada, ele simplesmente reutiliza o ponto de ligação existente sem criar um novo.50/54 more efficient theme. As the hotspot manager creates each chain of hotspots, it follows which assumed chain corresponds to which hotspot. If this presumed chain is subsequently requested again, it simply reuses the existing connection point without creating a new one.

[00167] Como um exemplo, considere que o gerenciador de ligação associado com menus requisitou a seguinte cadeia pressuposta de pontos de ligação que utiliza o arquivo retail.edf acima: (Observação: este exemplo não assume a presença de um ponto de ligação EDFHub).[00167] As an example, consider that the connection manager associated with menus requested the following assumed chain of connection points using the retail.edf file above: (Note: this example does not assume the presence of an EDFHub connection point) .

Explode(Filter(“menus”,Explode(URL(“retail.edf”)))) [00168] Esta cadeia representa todos os menus no arquivo retail.edf. O arquivo XML localizado em retail.edf é carregado pelo ponto de ligação da URL que expõe o nó raiz do arquivo XML como o único objeto na sua coleção. O ponto de ligação Explode interno utiliza o ponto de ligação URL como sua fonte de dados e expõe todos os filhos dos objetos nesta coleção fonte. Neste caso, os filhos do nós raiz são as marcas XML de nível mais alto “menu” e “toolbar”. O ponto de ligação Filter utiliza o ponto de ligação Explode como sua fonte de dados e filtra os objetos expostos olhando somente para os nós que são “menus”. O ponto de ligação externo Explode utiliza o ponto de ligação Filter como sua fonte de dados e expõe todos os filhos dos nós de menu filtrados para proporcionar uma lista contendo os dois menus que são adicionados pela extensão. Uma vez que este arquivo XML particular contenha menus que foram identificados pelos pontos de ligação associados com o gerenciador de ligação menu, este gerenciador de ligação é então notificado que dois menus foram adicionados por uma extensão.Explode (Filter (“menus”, Explode (URL (“retail.edf”)))) [00168] This string represents all the menus in the retail.edf file. The XML file located at retail.edf is loaded by the URL connection point that exposes the root node of the XML file as the only object in its collection. The internal Explode connection point uses the URL connection point as its data source and exposes all children of objects in this source collection. In this case, the children of the root nodes are the top level XML tags "menu" and "toolbar". The Filter connection point uses the Explode connection point as its data source and filters the exposed objects by looking only at the nodes that are “menus”. The external Explode connection point uses the Filter connection point as its data source and exposes all children of the filtered menu nodes to provide a list containing the two menus that are added by the extension. Once this particular XML file contains menus that have been identified by the link points associated with the menu link manager, this link manager is then notified that two menus have been added by an extension.

[00169] Este processo é ilustrado de forma diagramática na Fig. 19, a qual apresenta os pontos de ligação 1900, 1902, 1904 e 1906. Cada[00169] This process is illustrated diagrammatically in Fig. 19, which shows the connection points 1900, 1902, 1904 and 1906. Each

Petição 870170015211, de 09/03/2017, pág. 52/64Petition 870170015211, of 03/09/2017, p. 52/64

51/54 ponto de ligação expõe uma lista de nós XML. O ponto de ligação URL 1900 toma como entrada (uma URL para um arquivo XML - por exemplo, retail.edf) e expõe uma lista de nós XML. Esta lista contém somente o nó raiz “<edf:extension>”. O ponto de ligação Explode 1902 toma como uma entrada o ponto de ligação 1900 e expõe uma lista de nós XML que são filhos dos nós XML fonte. Neste exemplo, a lista de nós XML exposta pelo ponto de ligação 1902 são os nós “<menus>” e os nós “<toolbar>”. O ponto de ligação Filter 1904 usa o ponto de ligação 1902 como uma entrada e filtra “menus”. Ele então expõe uma lista XML possuindo somente os nós “<menus>” na mesma. O ponto de ligação explode 1906 usa o ponto de ligação 1904 como uma entrada e expõe uma lista com os nós XML que estão contidos nos nós “<menus>” - aqui, ambos os nós “<menus>”.51/54 connection point exposes a list of XML nodes. The 1900 1900 connection point takes input (a URL to an XML file - for example, retail.edf) and exposes a list of XML nodes. This list contains only the root node “<edf: extension>”. The Explode 1902 connection point takes connection point 1900 as an input and exposes a list of XML nodes that are children of the source XML nodes. In this example, the list of XML nodes exposed by connection point 1902 are “<menus>” nodes and “<toolbar>” nodes. The Filter 1904 connection point uses connection point 1902 as an input and filters “menus”. It then exposes an XML list having only the “<menus>” nodes in it. The connection point explodes 1906 uses the connection point 1904 as an entry and displays a list of the XML nodes that are contained in the “<menus>” nodes - here, both “<menus>” nodes.

[00170] Considere adicionalmente que o gerenciador de ligação toolbar iria requisitar uma cadeia pressuposta de pontos de ligação que também utilizaria o ponto de ligação URL, um ponto de ligação Explode e um ponto de ligação Filter 1904 que filtra em “toolbar”. Assim, o ponto de ligação explode correspondente 1906 exporia uma lista XML contendo somente o nó “<toolbar>”. Mas, o gerenciador de ponto de ligação detectaria a comunidade do ponto de ligação URL e do ponto de ligação interno Explode, de modo que ele reutilizaria os mesmos pontos de ligação que ele criou para o gerenciador de ligação menu. Os pontos de ligação Filter utilizados pelo gerenciador de ligação toolbar e o gerenciador de ligação menu utilizariam o mesmo ponto de ligação Explode como suas fontes de dados mas exporiam coleções diferentes de nós, porque eles foram filtrados baseado em critérios diferentes.[00170] Additionally consider that the toolbar connection manager would request an assumed chain of connection points that would also use the URL connection point, an Explode connection point and a Filter 1904 connection point that filters in "toolbar". Thus, the connection point explodes corresponding 1906 would expose an XML list containing only the node “<toolbar>”. But, the connection point manager would detect the community of the URL connection point and the internal Explode connection point, so that it would reuse the same connection points that it created for the menu connection manager. The Filter connection points used by the toolbar connection manager and the menu connection manager would use the same Explode connection point as their data sources but would expose different collections of nodes, because they were filtered based on different criteria.

[00171] Considere a Fig. 20 que incorpora um ponto de ligação EDFHub 2000. Este ponto de ligação recebe todos os EDFs e, como discutido acima, combina os mesmos em uma única lista XML. O[00171] Consider Fig. 20, which incorporates an EDFHub 2000 connection point. This connection point receives all EDFs and, as discussed above, combines them into a single XML list. O

Petição 870170015211, de 09/03/2017, pág. 53/64Petition 870170015211, of 03/09/2017, p. 53/64

52/5452/54

EDFHub então expõe os nós raiz de todos os EDFs. O ponto de ligação explode 2002 então expõe uma lista XML que contém todos os nós de nível mais alto para todos os EDFs. Como um exemplo, podem existir vários EDFs, cada um dos quais contém nós menu de nível mais alto, nós barra de ferramenta, nós aceleradores e semelhantes. O ponto de ligação Explode 2002 expõe uma lista XML que contém todos estes nós de nível mais alto para todos os EDFs. O ponto de ligação Filter 2004 pode então filtrar a lista XML exposta pelo ponto de ligação Explode 2002 de acordo com quaisquer parâmetros adequados (isto é, nós de filtro ou de menu, nós de barra de ferramentas, nós aceleradores e semelhantes). O ponto de ligação final Explode 2006 então expõe uma lista de nós filhos individuais da lista exposta pelo ponto de ligação Filter 2004. Esta lista descreve todos os aspectos específicos (do tipo particular que foi filtrado) que foram adicionados por todos os EDFs.EDFHub then exposes the root nodes of all EDFs. The connection point explodes 2002 then exposes an XML list that contains all the top level nodes for all EDFs. As an example, there may be several EDFs, each of which contains top-level menu nodes, toolbar nodes, accelerator nodes and the like. The Explode 2002 connection point exposes an XML list that contains all of these top-level nodes for all EDFs. The Filter 2004 connection point can then filter the XML list exposed by the Explode 2002 connection point according to any suitable parameters (that is, filter or menu nodes, toolbar nodes, accelerator nodes and the like). The final Explode 2006 connection point then exposes a list of individual child nodes from the list exposed by the Filter 2004 connection point. This list describes all the specific aspects (of the particular type that has been filtered) that have been added by all EDFs.

[00172] A Tabela abaixo lista uma série de pontos de ligação diferentes que podem ser utilizados de acordo com esta modalidade descrita mas vários outros poderíam facilmente ser criados.[00172] The Table below lists a series of different connection points that can be used according to this described mode but several others could easily be created.

Ponto de Ligação Connecting Point Propósito Purpose URL URL Carrega a URL e expõe o nó XML de nível mais alto como um membro da coleção Loads the URL and exposes the XML node for highest level as a member of collection Context Context Para cada membro, ele pega o atributo “expression” e liga com o mesmo. Se a expressão avalia para verdadeiro, então o membro é exposto. For each member, he gets the attribute “Expression” and links with it. If the expression evaluates to true, then the member is exposed. EDF EDF O mesmo que o ponto de ligação URL, mas também expõe um membro fabricado com dados para criar uma APP The same as the URL connection point, but it also exposes a member manufactured with data to create an APP

Petição 870170015211, de 09/03/2017, pág. 54/64Petition 870170015211, of 03/09/2017, p. 54/64

53/5453/54

baseado na URL e na URN (As quais existem no XML DOM). based on URL and URN (Which exist in the XML DOM). Merge Merge Pega zero ou mais pontos de ligação (de qualquer tipo) e funde os mesmos juntos. A ordem e a continuidade das coleções originais serão mantidas. Takes zero or more connection points (of any kind) and fuses the same together. The order and continuity of original collections will be maintained. Filter Filter Monitora um único ponto de ligação e somente expõe estes nós que combinam com o nome especificado. A ordem da coleção original será mantida. Monitors a single connection point and it only exposes these nodes that match the specified name. The order of the original collection will be maintained. Duplicate Duplicate Monitora um único Ponto de ligação e filtra quaisquer duplicatas. Uma duplicata é definida como possuindo o mesmo atributo de URN. Se nenhum atributo de URN estiver presente, então o nó é exposto. A ordem da coleção original será mantida. Monitors a single connection point and filters out any duplicates. A duplicate is defined as having the same URN attribute. If none URN attribute is present, then the knot is exposed. Collection order original will be kept. Explode Explodes Monitora um único Ponto de Ligação e para cada membro exposto expõe os filhos deste membro como seus membros. A ordem da coleção original será mantida bem como a ordem dos filhos dentro dos nós. Monitors a single Connection Point and for each exposed member it exposes the this member's children as its members. The order of the original collection will be maintained as well as the order of the children inside the nodes. Link Link Monitora um único Ponto de Ligação e para cada membro procura por um atributo URL e cria uma URL AP e funde a mesma dentro dele próprio. Se o Conteúdo opcional incluso for estabelecido para verdadeiro, ele irá igualmente fundir a coleção original. Monitors a single Connection Point and for each member looks for a URL attribute and creates an AP URL and merges the same within himself. If the included optional Content is established for true, it will also fuse the original collection.

Petição 870170015211, de 09/03/2017, pág. 55/64Petition 870170015211, of 03/09/2017, p. 55/64

54/5454/54

Order Order Monitora um único Ponto de Ligação. Para cada membro, ele pega três atributos: id, antes e depois. Baseado nesta informação, ele reordena os membros como especificado. Se nenhuma informação sobre ordenação for fornecida, a ordem da coleção original será mantida. Monitors a single Connection Point. For each member, he takes three attributes: id, before and after. Based on this information, he reorders members as specified. If none ordering information is provided, the order of the original collection will be maintained. EDFHub EDFHub Este Ponto de Ligação é o ponto de fusão central que representa todos os pontos EDF. This Connection Point is the central merger representing all EDF points.

CONCLUSÃO [00173] As modalidades descritas acima proporcionam uma solução de plataforma que proporciona otimização e extensibilidade através de um mecanismo de extensibilidade consistente e lógico e um modelo de objeto que pode ser facilmente entendido por desenvolvedores de terceira parte. As transferências baseadas na Internet podem ser realizadas sem uma grande quantidade de intervenção do usuário e sem manipular quaisquer configurações persistentes do usuário. Extensões podem ser proporcionadas para uma plataforma de software ou programa de aplicação dinamicamente baseado no contexto de computação do usuário.CONCLUSION [00173] The modalities described above provide a platform solution that provides optimization and extensibility through a consistent and logical extensibility mechanism and an object model that can be easily understood by third party developers. Internet-based transfers can be performed without a large amount of user intervention and without manipulating any persistent user settings. Extensions can be provided for a software platform or application program dynamically based on the user's computing context.

[00174] Apear da invenção ter sido descrita em linguagem específica para aspectos estruturais e/ou etapas metodológicas, deve ser entendido que a invenção definida nas reivindicações anexas não está necessariamente limitada aos aspectos ou etapas específicos descritos. Ao invés disso, os aspectos e etapas específicos são revelados como formas preferidas para implementar a invenção reivindicada.[00174] Although the invention has been described in specific language for structural aspects and / or methodological steps, it should be understood that the invention defined in the attached claims is not necessarily limited to the specific aspects or steps described. Instead, specific aspects and steps are revealed as preferred ways to implement the claimed invention.

Petição 870170015211, de 09/03/2017, pág. 56/64Petition 870170015211, of 03/09/2017, p. 56/64

1/31/3

Claims (16)

REIVINDICAÇÕES 1. Método de distribuição de software através da rede compreendendo as etapas de:1. Method of software distribution over the network comprising the steps of: descrever (1502) uma ou mais extensões de software utilizando descrições, as extensões de software sendo configuradas para incorporação em uma plataforma de software executando em um cliente (100,300); e distribuir (1510) as descrições de um ou mais arquivos de extensões para o cliente através de uma rede, as descrições sendo configuradas para uso ao transferir as extensões de software através da rede;describe (1502) one or more software extensions using descriptions, the software extensions being configured for incorporation into a software platform running on a client (100,300); and distribute (1510) descriptions of one or more extension files to the client over a network, the descriptions being configured for use when transferring software extensions over the network; caracterizado pelo fato de que ainda compreende as etapas de:characterized by the fact that it still comprises the steps of: gerar um ou mais pacotes, cada pacotes incluindo pelo menos um arquivo de extensão de software, uma fila de download, a fila de download definindo um pedido no qual os pacotes são baixados; e transferir (1412,1512) os arquivos de extensão de software associados a uma das múltiplas funcionalidades diferentes para o cliente, compreendendo fazer o download dos pacotes na ordem definida e reorganizar a fila de download dependendo de uma ação que um usuário executar.generate one or more packages, each package including at least one software extension file, a download queue, the download queue defining an order in which the packages are downloaded; and transferring (1412,1512) the software extension files associated with one of the multiple different functionalities for the customer, comprising downloading the packages in the defined order and reorganizing the download queue depending on an action that a user performs. 2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a rede consiste na Internet.2. Method, according to claim 1, characterized by the fact that the network consists of the Internet. 3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as descrições compreendem uma linguagem hierárquica baseada em marcas.3. Method, according to claim 1, characterized by the fact that the descriptions comprise a hierarchical language based on marks. 4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as descrições consistem em descrições XML.4. Method, according to claim 1, characterized by the fact that the descriptions consist of XML descriptions. 5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que:5. Method, according to claim 1, characterized by the fact that: Petição 870170043459, de 23/06/2017, pág. 6/12Petition 870170043459, of 06/23/2017, p. 6/12 2/3 a rede consiste na Internet; e as descrições consistem em descrições XML.2/3 the network consists of the Internet; and the descriptions consist of XML descriptions. 6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as extensões de software são configuradas para fazer alterações baseadas no contexto na operação da plataforma de software, as alterações baseadas no contexto sendo associadas com o contexto de computação de um usuário.6. Method, according to claim 1, characterized by the fact that the software extensions are configured to make context-based changes in the operation of the software platform, the context-based changes being associated with a user's computing context . 7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a plataforma de software é configurada para proporcionar um único programa de aplicação possuindo várias funcionalidades diferentes que podem permitir a um usuário realizar várias tarefas diferentes.7. Method, according to claim 1, characterized by the fact that the software platform is configured to provide a single application program having several different functionalities that can allow a user to perform several different tasks. 8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que as extensões de software são configuradas para fazer alterações baseadas no contexto na operação de uma ou mais das múltiplas diferentes funcionalidades que alteram a maneira na qual um usuário pode realizar uma tarefa associada com uma funcionalidade particular.8. Method, according to claim 7, characterized by the fact that the software extensions are configured to make changes based on the context in the operation of one or more of the multiple different functionalities that change the way in which a user can perform a task associated with a particular feature. 9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as extensões de software proporcionam elementos de interface com o usuário.9. Method, according to claim 1, characterized by the fact that the software extensions provide elements of user interface. 10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as extensões de software proporcionam comportamentos, componentes ou objetos.10. Method, according to claim 1, characterized by the fact that software extensions provide behaviors, components or objects. 11. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as extensões de software proporcionam elementos de armazenamento.11. Method according to claim 1, characterized by the fact that the software extensions provide storage elements. 12. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as extensões de software proporcionam elementos definidos pelo usuário.12. Method, according to claim 1, characterized by the fact that the software extensions provide elements defined by the user. Petição 870170043459, de 23/06/2017, pág. 7/12Petition 870170043459, of 06/23/2017, p. 7/12 3/33/3 13. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as extensões de software proporcionam um ou mais entre o seguinte:13. Method according to claim 1, characterized by the fact that the software extensions provide one or more of the following: elementos de interface com o usuário; comportamentos, componentes ou objetos; elementos de armazenamento; e elementos definidos pelo usuário.user interface elements; behaviors, components or objects; storage elements; and user-defined elements. 14. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que pelo menos uma extensão de software proporciona uma capacidade de adicionar novos pontos de extensibilidade.14. Method according to claim 1, characterized by the fact that at least one software extension provides an ability to add new points of extensibility. 15. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a descrição de uma ou mais extensões de software compreende a etapa de descrever as extensões utilizando um arquivo de descrição de extensão (EDF) compreendendo um arquivo XML que descreve uma ligação lógica com a plataforma de software.15. Method according to claim 1, characterized by the fact that the description of one or more software extensions comprises the step of describing the extensions using an extension description file (EDF) comprising an XML file that describes a link logic with the software platform. 16. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que uma ou mais das descrições contém uma implementação de toda ou de parte da funcionalidade de uma extensão.16. Method according to claim 1, characterized by the fact that one or more of the descriptions contains an implementation of all or part of the functionality of an extension. Petição 870170043459, de 23/06/2017, pág. 8/12Petition 870170043459, of 06/23/2017, p. 12/8 ATHE

Family

ID=

Similar Documents

Publication Publication Date Title
US7392522B2 (en) Architectures for and methods of providing network-based software extensions
US6883168B1 (en) Methods, systems, architectures and data structures for delivering software via a network
US7979856B2 (en) Network-based software extensions
JP7044879B2 (en) Local tree update for client synchronization service
US7502807B2 (en) Defining and extracting a flat list of search properties from a rich structured type
Latteier et al. The Zope Book (2.)
US20120216100A1 (en) Service registry policy aggregator
JP2014044743A (en) Programming interface for computer platform
JP2011070707A (en) Architecture for distributed computing system and automated design, development and management of distributed application
US7590654B2 (en) Type definition language for defining content-index from a rich structured WinFS data type
US11522967B2 (en) System metamodel for an event-driven cluster of microservices with micro frontends
US8707171B2 (en) Service registry policy editing user interface
Jackson Debian policy manual
US20080163264A1 (en) Directory Service that Provides Information from a Plurality of Disparate Data Sources
BRPI0111802B1 (en) NETWORK-BASED SOFTWARE EXTENSION DISTRIBUTION METHOD
Allen et al. ASP. NET Applications
Dhillon Managing license incompatibilities distributing eclipse application stacks
Chou A package management system for Web based applications
Smecher OJS Technical Reference
Mihályi Development of browser-based desktop-oriented web applications
MacDonald Setting Up Internet Information Services and ASP. NET
Draper et al. Sharepoint 2003 advanced concepts: Site definitions, custom templates, and global customizations