BR112016027025B1 - Método e sistema para sintetizar elementos de interface do usuário de informações e aplicativos em uma forma de fluxo contínuo para cinematização de saída - Google Patents

Método e sistema para sintetizar elementos de interface do usuário de informações e aplicativos em uma forma de fluxo contínuo para cinematização de saída Download PDF

Info

Publication number
BR112016027025B1
BR112016027025B1 BR112016027025-8A BR112016027025A BR112016027025B1 BR 112016027025 B1 BR112016027025 B1 BR 112016027025B1 BR 112016027025 A BR112016027025 A BR 112016027025A BR 112016027025 B1 BR112016027025 B1 BR 112016027025B1
Authority
BR
Brazil
Prior art keywords
transformation
output
transformation chain
chain
devices
Prior art date
Application number
BR112016027025-8A
Other languages
English (en)
Other versions
BR112016027025A2 (pt
Inventor
Vijay Mital
Darryl Rubin
Vikram Bapat
Original Assignee
Microsoft Technology Licensing, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112016027025A2 publication Critical patent/BR112016027025A2/pt
Publication of BR112016027025B1 publication Critical patent/BR112016027025B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9038Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Television Receiver Circuits (AREA)

Abstract

MÉTODO PARA SINTETIZAR ELEMENTOS DE INTERFACE DE USUÁRIO DE INFORMAÇÃO E APLICATIVO EM UMA FORMA DE FLUXO CONTÍNUA, PRODUTO DE PROGRAMA DE COMPUTADOR E SISTEMA Sintetização de elementos de interface de usuário de informação e aplicativo em uma forma de fluxo contínua. Isto é feito ajustando um nível de cinematicidade para ser aplicado a uma sessão de informação na medida em que a sessão é apresentada. Níveis mais altos de cinematicidade usam graus mais altos de movimento na apresentação de elementos de interface de usuário representando a informação. Em contraste, níveis mais baixos de cinematicidade usam movimento mais baixo ou nenhum de elementos de interface de usuário representando a informação.

Description

ANTECEDENTES
[0001] A tecnologia de comutação tem revolucionado o modo como trabalhamos, atuamos e comunicamos. Na medida em que a tecnologia de computação avança, assim tem a diversidade de dispositivos que incorporam tais sistemas de computação ou exibem o conteúdo de um sistema de computação. Por exemplo, um sistema de computação pode tomar a forma de um rack de servidor, um computador desktop, um computador laptop, um tablet, um telefone inteligente, um console de jogos, um assistente, um refrigerador, uma casa inteligente, e semelhante.
[0002] Junto com a diversidade nos sistemas de computação, os tipos de dispositivos que podem ser usados para renderizar saída de computação e informação de entrada a um computador têm, do mesmo modo, diversificado. Por exemplo, os dispositivos de saída podem incluir exibições tais como projetores, monitores de televisão, monitores tridimensionais, laptops, computadores tablet, telefones, e semelhante. Dispositivos de saída podem incluir saída para som, tais como alto- falantes. Os dispositivos de saída também podem incluir atuadores, luzes, válvulas, e semelhante. Os dispositivos de entrada podem incluir teclados, dispositivos de ponteiro (tal como um mouse), telas de toque, microfones, câmeras de vídeo, câmeras estáticas, detectores de posição tridimensionais, monitores de sistema de posicionamento global, sensores de luz, acelerômetros, termômetros, compassos, e semelhante.
[0003] Os sistemas de computação e dispositivos de entrada e saída associados tornam-se bastante prolíficos e frequentemente móveis. Frequentemente, em qualquer localização dada, pode haver um grande número e ampla variedade de dispositivos presentes. Por exemplo, em uma sala de conferência média que é totalmente frequentada, pode haver projetores suspensos, telas de televisão, laptops, tablets, telefones inteligentes, microfones, câmeras, iluminação e semelhante. O paradigma convencional é que cada dispositivo executa seu próprio aplicativo, ou exibe o conteúdo de um aplicativo simples. Quando os aplicativos interagem, eles interagem frequentemente como aplicativos separados interagindo através de uma interface de programa de aplicativo.
[0004] O assunto reivindicado no presente documento não é limitado às modalidades que resolvem quaisquer desvantagens ou que operam somente em ambiente tais como os descritos acima. Preferivelmente, este fundamento é provido somente para ilustrar uma área de tecnologia exemplar onde algumas modalidades descritas no presente documento podem ser praticadas.
BREVE RESUMO
[0005] Pelo menos algumas modalidades descritas no presente documento referem-se à sintetização de elementos de interface de usuário de informação e aplicativo em uma forma de fluxo contínua. Isto é feito ajustando um nível de cinematicidade para ser aplicado a uma sessão de informação na medida em que a sessão é apresentada. Cinematicidade nível mais alto usam graus mais altos de movimento na apresentação de elementos de interface de usuário representando a informação. Em contraste, níveis mais baixos de cinematicidade usam movimento mais baixo ou nenhum de elementos de interface de usuário representando a informação.
[0006] Este sumário não se destina a identificar os aspectos chave ou aspectos essenciais do assunto reivindicado, nem se destina a ser usado como um auxílio na determinação do escopo do assunto reivindicado.
BREVE DESCRIÇÃO DOS DESENHOS
[0007] A fim de descrever o modo em que as vantagens e aspectos descritos acima e outras podem ser obtidas, uma descrição mais particular de várias modalidades será renderizada por referência aos desenhos anexos. O entendimento de que estes desenhos representam somente modalidades de amostra e, portanto, não devem ser considerados ser limitantes do escopo da invenção, as modalidades serão descritas e explicadas com especificidade e detalhes adicionais através do uso dos desenhos anexos em que: a figura 1 ilustra abstratamente um sistema de computação em que algumas modalidades descritas no presente documento podem ser empregadas; a figura 2 ilustra abstratamente uma cadeia de transformação simples em que existe apenas um link único acoplando uma fonte de dados única e um alvo de dados único e em que uma transformação representada pelo link é executada automaticamente usando um valor na fonte de dados como entrada para gerar um valor no alvo de dados; a figura 3 ilustra abstratamente outra cadeia de transformação exemplar simples em que uma transformação é executada usando valores de três fontes de dados a fim de gerar valores de saída em dois alvos de dados; a figura 4 ilustra uma cadeia de transformação na forma de uma combinação da cadeia de transformação da Figure 2 e a cadeia de transformação da figura 3; a figura 5 ilustra um ambiente exemplar em que os princípios descritos no presente documento podem operar e que inclui múltiplos dispositivos associados com as cadeias de transformação constituintes de um aplicativo de compostos, e que também inclui dispositivos de entrada e dispositivos de saída; as figuras 6A a 6D ilustram, cada uma, cadeias de transformação exemplares que podem ser associadas com os respectivos dispositivos na figura 5 (as setas através das quais os dados não fluem sem unir-se com outra cadeia de transformação são ilustradas com bordas revestidas tracejadas); a figura 7A ilustra uma cadeia de transformação aumentada representando a união das cadeias de transformação da figuras 6A e 6B; a figura 7B ilustra uma cadeia de transformação aumentada representando a união das cadeias de transformação da figuras 6A e 6C; a figura 7C ilustra uma cadeia de transformação aumentada representando a união das cadeias de transformação da figuras 6B e 6C; a figura 7D ilustra uma cadeia de transformação aumentada representando a união das cadeias de transformação da figuras 6A e 6D; a figura 8 A ilustra uma cadeia de transformação aumentada representando a união das cadeias de transformação das figuras 6A, 6B e 6C; a figura 8B ilustra uma cadeia de transformação aumentada representando a união das cadeias de transformação das figuras 6A, 6B e 6D; a figura 8C ilustra uma cadeia de transformação aumentada representando a união das cadeias de transformação das figuras 6A, 6C e 6D; a figura 9 ilustra uma cadeia de transformação aumentada representando a união das cadeias de transformação das figuras 6A, 6B, 6C e 6D; a figura 10 ilustra um fluxograma de um método para preparação para facilitação de um aplicativo de compostos; a figura 11 ilustra abstratamente um sistema que pode ser usado para executar o método das figuras 10, 12, 13 e 14, e que inclui uma biblioteca de definições de classes de cadeias de transformação e registros de dispositivos, bem como um serviço de apresentação; a figura 12 ilustra um fluxograma de um método para unir duas instâncias de classes de cadeias de transformação; a figura 13 ilustra um fluxograma de um método para desacoplar uma cadeia de transformação de uma cadeia de transformação maior; a figura 14 ilustra um fluxograma de um método para renderizar trocas e um ou mais nós de apresentação da cadeia de transformação sobre um dispositivo apropriado; as figuras 15A a 15J ilustram várias interfaces de usuário que podem ser experimentadas em um cenário referido no presente documento como um "cenário de dispositivo", em que um usuário deve ordenar um número de dispositivos; as figuras 15K a 150 ilustram várias interfaces de usuário que podem ser encontradas para trocar o aplicativo de compostos usado no cenário do dispositivo das figuras 15A a 15J; e a figura 16 ilustra um fluxograma de um método para sintetizar elementos de interface de usuário de informação e aplicativo em uma forma de fluxo contínua.
DESCRIÇÃO DETALHADA
[0008] Pelo menos algumas modalidades descritas no presente documento referem-se à sintetização de elementos de interface de usuário de informação e aplicativo em uma forma de fluxo contínua. Isto é feito ajustando um nível de cinematicidade para ser aplicado a uma sessão de informação na medida em que a sessão é apresentada. Os níveis mais altos de cinematicidade usam graus mais altos de movimento na apresentação de elementos de interface de usuário representando a informação. Em contraste, os níveis mais baixos de cinematicidade usam movimento mais baixo ou nenhum de elementos de interface de usuário representando a informação.
[0009] Alguma discussão introdutória de um sistema de computação será descrita com respeito à figura 1. Então, a tecnologia de aplicativo de dispositivo composto será descrita com respeito às figuras subsequentes.
[00010] Os sistemas de computação estão agora crescentemente tomando uma ampla variedade de formas. Os sistemas de computação podem, por exemplo, ser dispositivos portáteis, aparelhos, computadores laptop, computadores desktop, mainframes, sistemas de computação distribuídos, ou mesmo dispositivos que não têm sido convenientemente considerados um sistema de computação. Nesta descrição e nas reivindicações, o termo "sistema de computação" é definido amplamente como incluindo qualquer dispositivo ou sistema (ou combinação dos mesmos) que inclui pelo menos um processador físico e tangível, e uma memória física e tangível capaz de ter na mesma instruções executáveis por computador que podem ser executadas pelo processador. A memória pode tomar qualquer forma e pode depender da natureza e forma do sistema de computação. Um sistema de computação pode ser distribuído sobre um ambiente de rede e pode incluir múltiplos sistemas de computação constituintes.
[00011] Como ilustrado na figura 1, em sua configuração mais básica, um sistema de computação 100 inclui tipicamente pelo menos uma unidade de processamento de hardware 102 e memória 104. A memória 104 pode ser memória de sistema física, que pode ser volátil, ou alguma combinação das duas.A memória 104 pode ser uma memória de sistema física, que pode ser volátil, não volátil, ou alguma combinação das duas. O termo "memória" também pode ser usado no presente documento para se referir a armazenamento de massa não volátil tal como meios de armazenamento físicos. Se o sistema de computação é distribuído também. Como usado no presente documento, o termo "módulo executável" ou "componente executável " pode se referir a objetos de software, roteamentos, ou métodos que podem ser executados sobre o sistema de computação. Os componentes diferentes, módulos, máquinas, e serviços descritos no presente documento podem ser implementados como objetos ou processos que executam sobre o sistema de computação (por exemplo, como tópicos separados).
[00012] Na descrição a seguir, as modalidades são descritas com referência a atos que são executados por um ou mais sistemas de computação. Se tais atos são implementados em software, um ou mais processadores do sistema de computação associado que executam o ato direcionam a operação do sistema de computação em resposta a ter executado instruções executáveis por computador. Por exemplo, tais instruções executáveis por computador podem ser incorporadas em um ou mais meios legíveis por computador que formam um produto de programa de computador. Um exemplo de tal operação envolve a manipulação de dados. As instruções executáveis por computador (e os dados manipulados) podem ser armazenadas na memória 104 do sistema de computação 100. O sistema de computação 100 também pode conter canais de comunicação 108 que permitem que o sistema de computação 100 comunique-se com outros processadores de mensagem, por exemplo, através da rede 110.
[00013] O sistema de computação 100 também pode incluir potencialmente componentes de renderização de saída, tais como monitores, alto-falantes, luzes, atuadores ou semelhante. O sistema de computação 100 também pode incluir componentes de entrada, tais como teclado, dispositivo de ponteiro (tal como um mouse ou almofada de rastreamento), dispositivos de reconhecimento de voz, e também possivelmente sensores físicos (por exemplo, termômetros, sistemas de posicionamento global, detectores de luz, compassos, acelerômetros, e assim em diante).
[00014] As modalidades descritas no presente documento podem compreender ou utilizar um computador para fim especial ou para fim geral incluindo hardware de computador, tal como, por exemplo, um ou mais processadores e memória de sistema, como discutido em maior detalhe abaixo. As modalidades descritas no presente documento também incluem meios legíveis por computador físicos e outros para transportar ou armazenar instruções executáveis por computador e/ou estruturas de dados. Tais meios legíveis por computador podem ser meios disponíveis que podem ser acessados por um sistema de computador para fim geral ou fim especial. Os meios legíveis por computador que armazenam instruções executáveis por computador são meios de armazenamento físicos. Os meios legíveis por computador que transportam instruções executáveis por computador são meios de transmissão. Assim, a título de exemplo, e não de limitação, as modalidades da invenção podem compreender pelo menos dois tipos distintamente diferentes de meios legíveis por computador: meios de armazenamento em computador e meios de transmissão.
[00015] Os meios de armazenamento em computador incluem RAM, ROM, EEPROM, CD-ROM ou outros dispositivos de disco ótico, de armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro meio que pode ser usado para armazenar meio de código de programa na forma de instruções executáveis por computador ou estruturas de dados e que pode ser acessado por um computador para fim geral ou fim especial.
[00016] Uma "rede" é definida como um ou mais links de dados que possibilitam o transporte de dados eletrônicos entre sistema de computador e/ou modules e/ou outros dispositivos eletrônicos. Quando a informação é transferida ou provida sobre uma rede ou outra conexão de comunicações (tanto hardwired, sem fio, ou uma combinação de hardwired ou sem fio) a um computador, o computador propriamente visualiza a conexão como um meio de transmissão. Os meios de transmissão podem incluir uma rede e/ou links de dados que podem ser usados para transportar o meio de código de programa desejado na forma de instruções executáveis por computador ou estruturas de dados e que podem ser acessados por um computador para fim geral ou para fim especial. Combinações do descrito acima também devem ser incluídas dentro do escopo de meios legíveis por computador.
[00017] Além disso, ao alcançar vários componentes de sistema de computador, meio de código de programa na forma de instruções executáveis por computador ou estruturas de dados podem ser transferidos automaticamente dos meios de transmissão para meios de armazenamento em computador (ou vice versa). Por exemplo, instruções executáveis por computador ou estruturas de dados recebidas através de uma rede ou link de dados podem ser armazenadas temporariamente em RAM dentro de um módulo de interface de rede (por exemplo, um "NIC"), e então eventualmente transferidas para RAM do sistema de computador e/ou para meios de armazenamento em computador menos voláteis em um sistema de computador. Assim, deve ser entendido que os meios de armazenamento em computador podem ser incluídos em componentes do sistema de computador que também (ou mesmo primariamente) utilizam meios de transmissão.
[00018] As instruções executáveis por computador compreendem, por exemplo, instruções e dados que, quando executadas em um processador, levam um computador para fim geral, um computador para fim especial, ou dispositivo de processamento para fim especial a executar uma certa função ou grupo de funções. As instruções executáveis por computador podem ser, por exemplo, binárias ou mesmo instruções que sofrem alguma translação (tal como compilação) antes da execução direta pelos processadores, tais como instruções de formato intermediárias tal como linguagem de montagem, ou mesmo código de fonte. Embora o assunto tenha sido descrito na linguagem específica para aspectos estruturais e/ou atos metodológicos, deve ser entendido que o assunto definido nas reivindicações anexas não é necessariamente limitado aos aspectos ou atos descritos e são divulgados como formas exemplares de implementar as reivindicações.
[00019] Os peritos na técnica irão apreciar que a invenção pode ser praticada em ambientes de computação de rede com muitos tipos de configurações de sistema de computador, incluindo, computadores pessoais, computadores desktop, computadores laptop, processadores de mensagem, dispositivos portáteis, sistemas de multi-processadores, eletrônicas baseadas em microprocessador ou de consumido programável, PCs de rede, minicomputadores, computadores mainframe, telefones móveis, PDAs, paginação, roteadores, comutadores, e semelhante. A invenção também pode ser praticada em ambientes de sistema distribuídos onde sistemas de computadores locais e remotos, que são ligados (tanto por links de dados hardwired, links de dados sem fio, ou por uma combinação de links de dados hardwired e sem fio) através de uma rede, ambos realizam tarefas. Em um ambiente de sistema distribuído, módulos de programa podem estar localizados em dispositivos de armazenamento de memória tanto local como remoto.
[00020] Os princípios descritos no presente documento operam usando uma cadeia de transformação. A cadeia de transformação é um conjunto interconectado de nós que cada um pode representar fontes de dados ou alvos de dados. Existem links entre os nós, cada link representando uma transformação. Para qualquer link dado, a transformação associada recebe cópias de valores de uma ou mais fontes de dados situada em uma extremidade de entrada para o link, e gera os valores resultantes que são providos em um ou mais alvos de dados localizados na extremidade de saída do link. Para qualquer transformação dada, quando um valor em uma ou mais fontes de dados em sua extremidade muda, a transformação é automaticamente reavaliada potencialmente resultando em trocas no(s) valor(es) de um ou mais alvos de dados na extremidade de saída da transformação.
[00021] Em uma modalidade, independentemente de o quanto a cadeia de transformação é complexa, as transformações podem ser construídas de afirmações declarativas expressando equações, regras, restrições, simulações, ou qualquer outro tipo de transformação que pode receber um ou mais valores como entrada e prover um ou mais valores resultantes como saída. Um exemplo de uma cadeia de transformação é um programa de planilhas, onde qualquer uma das células pode ser uma fonte de dados ou um alvo de dados. Uma equação (isto é. uma transformação) pode ser associada com qualquer célula para fazer com que a célula seja um alvo de dados onde os resultados da equação são colocados.
[00022] Somente como um exemplo, a figura 2 ilustra uma cadeia de transformação 200 simples em que existe apenas um link 220 único. Na notação de desenho usada por toda esta descrição, um link será ilustrado como uma seta, com a extremidade de entrada sendo representada como a extremidade traseira da seta, e a extremidade de saída sendo representada como a cabeça da seta. Nos casos em que existem múltipls fontes de dados na extremidade de entrada do link, a seta será representada com múltiplas extremidades traseiras. Cópia dos valores da(s) fonte(s) de dados e a(s) extremidade(s) traseira(s) da seta representa a entrada para a transformação. Nos casos em que existem múltiplos alvos de dados afetados pelo(s) valor(es) resultante(s) da transformação, a seta será representada com múltiplas cabeças. Os valores do(s) alvo(s) de dados na(s) cabeça(s) da seta representa(m) a saída a partir da transformação.
[00023] Por exemplo, a figura 2 ilustra uma cadeia de transformação 200 simples que inclui uma fonte de dados 201, um alvo de dados 202, e um link 220 único. O link 220 representa uma transformação executada em uma cópia do valor 211 na fonte de dados 201 a fim de gerar um valor 212 no alvo de dados 202. O valor 211 deve mudar, a transformação representada pelo link 220 é reavaliada potencialmente resultando em uma troca no valor 212 no alvo de dados 202.
[00024] A figura 3 ilustra outra cadeia de transformação 300 exemplar simples que inclui três fontes de dados 301, 302 e 303; dois alvos de dados 304 e 305, e um link 320 único. O link 320 representa uma transformação executada em cópias dos valores dentro das fontes de dados 301, 302 e 303, a fim de gerar os valores nos alvos de dados 304 e 305. Qualquer um dos valores dentro das fontes de dados 301, 302 ou 303 deve mudar, o link de transformação 320 é reavaliado potencialmente resultando em uma troca nos valores dentro de qualquer um ou mais dos alvos de dados 304 e 305.
[00025] A figura 4 ilustra outra cadeia de transformação 400 exemplar, e ilustra o princípio de que as cadeias de transformação podem construir uma com a outra em que uma fonte de dados para um link pode ser um alvo de dados em outro link, a fim de criar cadeias de transformação ainda mais complicadas. Por exemplo, a cadeia de transformação 400 inclui uma instância 401 da cadeia de transformação 200, e uma instância de 402 da cadeia de transformação 300. Neste caso, o alvo de dados 202 do link 220 também é a fonte de dados 301 do link 320. O valor com a fonte de dados 201 deve mudar, a transformação representada pelo link 220 é reavaliado potencialmente resultando em uma troca no valor no alvo de dados 202, que é do mesmo modo uma fonte de dados 301 para o próximo link 320. Do mesmo modo, uma troca no valor da fonte de dados 301 pode resultar no link de transformação 320 sendo reavaliado potencialmente resultando em uma troca nos valores dentro de qualquer um ou mais dos alvos de dados 304 e 305. Os alvos de dados 304 e 305 podem do mesmo modo representar fontes de dados ainda para outros links. Consequentemente, em cadeias de transformação complexas, uma troca de valores pode usar trocas de valores propagadas através de múltiplos nós em uma cadeia de transformação através de reavaliação apropriada de transformações dentro da cadeia de transformação.
[00026] Embora a cadeia de transformação 400 exemplar inclua apenas dois links, as cadeias de transformação podem ser bastante complexas e envolver nós enumeráveis e links associados conectando estes nós enumeráveis. Os princípios descritos no presente documento podem operar independentemente da complexidade das cadeias de transformação.
[00027] A figura 5 ilustra um ambiente 500 em que existem seis dispositivos 501 a 506. As elipses 507 representam flexibilidade no número de dispositivos que estão presentes dentro do ambiente 500. De fato, pode haver dispositivos deixando e entrando no ambiente 500 muito dinamicamente. Embora não necessário, cada um dos dispositivos 507 pode ser estruturado como descrito para o sistema de computação 100 da figura 1.
[00028] O ambiente 500 não precisa ser um ambiente físico em que todos os dispositivos estão localizados na mesma proximidade, embora esse possa ser frequentemente o caso. O ambiente 500 pode em vez disso ser pensado como qualquer ambiente em que existe um conjunto de dispositivos através dos quais um ou mais usuários possa prover entradas, e múltiplos dispositivos através dos quais a saída possa ser provida para múltiplos usuários.
[00029] Alguns dos dispositivos (por exemplo, dispositivos 501 a 504) ajudam na formação do que é mais do que apenas operações de código com aplicativos. Em vez disso, os dispositivos 501 a 504 são, cada um, associados com um componente de um aplicativo de compostos. Como qualquer um dos dispositivos 501 a 504 deixam o ambiente 500, o aplicativo de compostos torna-se menor, deste modo resultando na funcionalidade trocada do aplicativo. Por outro lado, como os dispositivos (tais como os dispositivos 501 a 504) que têm componentes do aplicativo entram no ambiente 500, o aplicativo de compostos torna-se atualmente maior, deste modo trocando atualmente a funcionalidade e muita estrutura do aplicativo de compostos. De acordo com os princípios descritos no presente documento, a cadeia de transformação de um dispositivo pode ser unido com a cadeia de transformação de outros dispositivos, resultando em uma cadeia de transformação maior que pode mais eficazmente fazer uso do conjunto aumentado de dispositivos.
[00030] O dispositivo 505 representa um dispositivo de saída que pode ser usado no ambiente 500, mas não contribui necessariamente uma cadeia de transformação para a cadeia de transformação maior de um aplicativo de compostos. Por exemplo, o dispositivo 505 pode ser um monitor de tela grande. O dispositivo 506 representa um dispositivo de entrada que pode ser usado no ambiente 500, mas não contribui necessariamente uma cadeia de transformação para a cadeia de transformação maior do aplicativo de compostos. Por exemplo, o dispositivo 506 pode ser um microfone. A presença dos dispositivos 501 a 504 leva porções de respectivas cadeias de transformação associadas a serem contribuídas para a cadeia de transformação maior do aplicativo de compostos. No entanto, os dispositivos 501 a 504 também podem ter capacidade de entrada e capacidade de saída que podem ser usadas pelo aplicativo de compostos como um todo. O ambiente 500 pode incluir opcionalmente um sistema externo 510, que será descrito mais abaixo.
[00031] As figuras 6A a 6D ilustram instâncias ou classes de cadeias de transformação 600A a 600D exemplares. As instâncias terão a mesma estrutura como as classes e assim as formas ilustradas podem ser consideradas para representar as classes de transformação bem como as instâncias de transformação. As instâncias, no entanto, terão estado de instâncias particular associado com cada um ou mais dos nós da cadeia de transformação. Consequentemente, os elementos 600A a 600D podem ser referidos como classes de classes de cadeia de transformação ou instâncias de cadeia de transformação. O termo "cadeia de transformação" será usada para se referir geralmente tanto a classes de cadeia de transformação como suas instâncias de cadeia de transformação. Como um exemplo, as instâncias de cadeia de transformação 600A a 600D podem ser associadas com os respectivos dispositivos 501 a 504.
[00032] As cadeias de transformação 600A a 600D exemplares são relativamente simples a fim de impedir obscurecer os princípios mais amplos descritos no presente documento com um exemplo excessivamente complexo. Isso dito, os princípios descritos no presente documento aplicam-se independentemente de o quanto complexa a cadeia de transformação, e independentemente do número de cadeias de transformação e dispositivos associados que estão dentro do ambiente e formando o aplicativo de compostos.
[00033] Na notação das figuras 6A a 6D, os nós que pertencem à classe de transformação 600N (onde N está na faixa de A a D) são representados usando o sufixo N. Por exemplo, na figura 6A, a cadeia de transformação 600A inclui os nós 601A, 602A, 603A, e 604A. Os elementos restantes 601B, 601C e 601D não terminam com o sufixo "A", e assim não são nós dentro da cadeia de transformação 600A. Em vez disso, os elementos 601B, 601C e 601D representam dependências com outras cadeias de transformação.
[00034] Por todas as figuras 6A a 6D, 7A a 7D, 8A a 8C, e 9, para enfatizar os elementos que são elementos de dependência, em vez de nós na cadeia de transformação por si mesmos, os elementos de dependência são representados com limites revestidos tracejados. Os dados não fluem de um nó para um elemento de dependência a menos que a cadeia de transformação seja unida com outra cadeia de transformação que inclui um nó representado pelo elemento de dependência. O fato de que os dados não podem fluir ao longo de uma transformação particular é representado por todas as figuras pelo link que é marcado com um "X".
[00035] Por exemplo, o elemento 601B na cadeia de transformação 600A representa uma dependência com o nó 601B na cadeia de transformação 600B. O elemento de dependência 601B é limitado com linhas tracejadas, e todos os link levando a ou de que os elementos de dependência 601B são marcados com um "X" um vez neste estágio, a cadeia de transformação 600A não é unida com a cadeia de transformação 600B. O elemento 601C na cadeia de transformação 600A representa uma dependência com o nó 601C na cadeia de transformação 600C. O elemento 601D na cadeia de transformação 600A representa uma dependência com o nó 601D na classe de cadeia de transformação 600D.
[00036] Por conta própria, a instância de cadeia de transformação 600A pode funcionar como um aplicativo. Por exemplo, o valor da fonte de dados 601A pode ser usado para formar um resultado transformado como o valor do alvo de dados 604A. Além disso, os valores das fontes de dados 601A e 602A podem ser transformados para resultar no valor do alvo de dados 603A. Se a instância de instância de cadeia de transformação 600A está por conta própria, as transformações levando para e a partir dos elementos 601B, 601C e 601D não são avaliadas.
[00037] A cadeia de transformação 600B inclui três nós 601B, 602B e 603B. No entanto, a cadeia de transformação 600B também inclui elementos de dependência 601A, 602A, 601C e 603C que fazem referência a um nó em uma cadeia de transformação diferente. Novamente, a instância de cadeia de transformação 600B pode operar independentemente como um aplicativo único. Por exemplo, o valor da fonte de dados 601B pode ser provido através de uma transformação para gerar o valor resultante para o alvo de dados 602B. O valor a partir da fonte de dados 602B pode ser provido através de uma transformação para gerar o valor resultante para o alvo de dados 603B.
[00038] Embora as instâncias de cadeia de transformação 600A e 600B possam operar independentemente, a figura 7A ilustra uma cadeia de transformação 700A unida que inclui a cadeia de transformação 600A unida com a cadeia de transformação 600B. Os elementos de dependência em cada uma das cadeias de transformação são agora substituídos com o nó atual referido a. Por exemplo, o elemento de dependência 601B da figura 6A é agora o nó 601B, e o elemento de dependência 601A da figura 6B é agora o nó 601A. Todos os nós que têm o sufixo A ou B são nós dentro da cadeia de transformação 700A, e somente os nós que têm sufixos C ou D são elementos de dependência. Por exemplo, os nós 601A, 602A, 603A, 604A, 601B, 602B e 603B são nós dentro da cadeia de transformação aumentada 700A, e a funcionalidade do aplicativo de compostos torna- se um pouco melhor do que a soma da funcionalidade das cadeias de transformação 600A e 600B individuais por sua conta.
[00039] A cadeia de transformação 600C inclui três nós 601C, 602C e 603C. No entanto, a cadeia de transformação 600C também inclui elementos de dependência 603A, 601B e 603B que fazem referência a um nó em uma cadeia de transformação diferente. Novamente, a instância de cadeia de transformação 600C pode operar independentemente como um aplicativo único. Por exemplo, o valor da fonte de dados 601C pode ser provido através de uma transformação para gerar o valor resultante para o alvo de dados 602C. Do mesmo modo, o valor a partir da fonte de dados 601C também pode ser provido através de uma transformação para gerar o valor resultante do alvo de dados 603C.
[00040] Embora as instâncias de cadeia de transformação 600A e 600C possam operar independentemente, a figura 7B ilustra uma cadeia de transformação 700B unida que inclui a cadeia de transformação 600A unida com a cadeia de transformação 600C. Os elementos de dependência em cada uma das cadeias de transformação são agora substituídos com o nó atual referido à extensão que o elemento de dependência se refere a um nó dentro de qualquer uma das cadeias de transformação 600A ou 600C. Agora todos os nós que têm o sufixo A ou C são nós dentro da cadeia de transformação, e somente aqueles nós que têm sufixos B ou D são elementos de dependência. Por exemplo, os nós 601A, 602A, 603A, 604A, 601C, 602C e 603C são nós dentro da cadeia de transformação aumentada 700B. A funcionalidade do aplicativo de compostos torna- se melhor do que a soma das funcionalidades das instâncias de cadeia de transformação 600A e 600C individuais.
[00041] A figura 7C ilustra uma cadeia de transformação 700C unida que inclui a classe de cadeia de transformação 600B unida com a classe de cadeia de transformação 600C. Os elementos de dependência em cada uma das cadeias de transformação são substituídos com o nó atual referido na extensão em que o elemento de dependência refere-se a um nó dentro de qualquer uma das cadeias de transformação 600B ou 600C. Agora, todos os nós que têm o sufixo B ou C são nós dentro da cadeia de transformação, e somente aqueles nós que têm os sufixos A ou D são elementos de dependência. Por exemplo, os nós 601B, 602B, 603B, 601C, 602C e 603C são nós dentro da cadeia de transformação aumentada 700C, e a funcionalidade do aplicativo de compostos torna-se melhor do que a soma das funcionalidades das instância individuais da cadeia de transformação 600B e 600C.
[00042] A figura 8A ilustra uma cadeia de transformação 800A unida que inclui as cadeias de transformação 600A, 600B e 600C sendo também unidas. Os elementos de dependência em cada uma das cadeias de transformação são substituídas com o nó atual referido na extensão em que o elemento de dependência refere-se a um nó dentro de qualquer uma das cadeias de transformação 600A, 600B ou 600C. Notar que todos os nós ilustrados são atualmente nós na cadeia de transformação, exceto para o elemento de dependência 601D. A funcionalidade do aplicativo de compostos torna-se melhor do que a soma da funcionalidade das cadeias de transformação 600A, 600B e 600C individuais.
[00043] A cadeia de transformação 600D inclui dois nós 601D e 602D. No entanto, a cadeia de transformação 600D também inclui um elemento de dependência 603A único com referência a um nó em uma classe de classe de cadeia de transformação 600A diferente. Novamente, as instâncias de uma classe de cadeia de transformação independentemente como um aplicativo único. Por exemplo, o valor da fonte de dados 601D pode ser provido através de uma transformação para gerar o valor resultante para o alvo de dados 602D.
[00044] Embora as instâncias de cadeia de transformação 600A e 600D possam operar independentemente, a figura 7D ilustra uma cadeia de transformação 700D unida que inclui a cadeia de transformação 600A unida com a cadeia de transformação 600D. Os elementos de dependência em cada uma das cadeias de transformação são agora substituídos com o nó atual referido na extensão em que o elemento de dependência refere-se a um nó dentro de qualquer uma das cadeias de transformação 600A ou 600D. Agora, todos os nós que têm o sufixo A ou D são nós dentro de uma cadeia de transformação, e somente aqueles nós que têm os sufixos B ou C são elementos de dependência. Por exemplo, os nós 601A, 602A, 603A, 604A, 601D e 602D são nós dentro de uma cadeia de transformação aumentada 700D, e a funcionalidade do aplicativo de compostos torna-se um pouco melhor do que a soma da funcionalidade da cadeia de transformação 600A e 600D individual.
[00045] Notar que as figuras 7A a 7D ilustram todas as permutações possíveis envolvendo duas e somente duas das cadeias de transformação 600A, 600B, 600C e 600D. As cadeias de transformação 600B e 600D não são unidas diretamente em uma combinação de duas cadeias de transformação, uma vez que nenhuma cadeia de transformação tem um elemento de dependência referindo-se a um nó na outra cadeia de transformação. Além disso, a transformação 600C e 600D não são unidas diretamente em combinação de duas cadeias de transformação, uma vez que nenhuma tem uma referência de dependência com a outra.
[00046] A figura 8A ilustra uma de três combinações possíveis de três e somente três cadeias de transformação 600A, 600B, 600C e 600D. Em particular, A figura 8A ilustra uma cadeia de transformação aumentada 800A que combina as cadeias de transformação 600A, 600B e 600C. A figura 8B ilustra uma cadeia de transformação aumentada 800B que combina as cadeias de transformação 600A, 600B e 600D (em que todos os nós são parte de uma cadeia de transformação exceto os elementos de dependência 601C e 603C). A figura 8C ilustra uma cadeia de transformação 800C aumentada que combina as cadeias de transformação 600A, 600C e 600D (em que todos os nós são parte de uma cadeia de transformação exceto os elementos de dependência 601B e 603B). Notar que não há nenhuma combinação de cadeias de transformação 600B, 600C, e 600D ilustrada uma vez que uma cadeia de transformação 600D não inclui nenhuma referência de dependência à cadeia de transformação 600B (ou vice versa), ou à cadeia de transformação 600C (ou vice versa). A figura 9 ilustra uma cadeia de transformação 900 combinada que inclui todas das cadeias de transformação 600A, 600B, 600C e 600D combinadas.
[00047] Consequentemente, tendo em conta as cadeias de transformação 600A, 600B, 600C e 600D associadas com respectivos dispositivos 501 a 504 no ambiente, existem 8 aplicativos compostos possíveis que podem ser formados (correspondendo às cadeias de transformação das figuras 7A a 7D, as figuras 8A a 8C, e a figura 9). Assim, como as cadeias de transformação de vários dispositivos são unidas em e desacopladas do ambiente, as muitas cadeias de transformação por si mesmas mudam, e a estrutura do aplicativo de compostos deste modo muda. Por exemplo, uma troca no valor da fonte de dados 601A podem ter um impacto muito diferente sobre uma cadeia de transformação uma vez que os efeitos dessa troca são propagados automaticamente através de uma ou mais transformações, dependendo de se essa fonte de dados 601A está dentro da cadeia de transformação 600A sozinha, dentro da cadeia de transformação 700A, dentro da cadeia de transformação 700B, dentro da cadeia de transformação 700D, dentro da cadeia de transformação 800A, dentro da cadeia de transformação 800B, dentro da cadeia de transformação 800C, ou dentro da cadeia de transformação 900.
[00048] Como um exemplo, supõe-se que o dispositivo 501 primeiro entra no ambiente resultando em uma cadeia de transformação 600A sendo usada. O dispositivo 502 então entra no ambiente resultando em uma cadeia de transformação 600B unindo a cadeia de transformação 600A, resultando na cadeia de transformação 700A. Assim, a cadeia de transformação de operação troca da cadeia de transformação 600A para a cadeia de transformação 700A. Agora supõe-se que o terceiro dispositivo 503 entra no ambiente resultando em uma cadeia de transformação 600C unindo a cadeia de transformação 700A, deste modo resultando em uma cadeia de transformação 800A. Assim, a cadeia de transformação de operação troca de uma cadeia de transformação 700A para uma cadeia de transformação 800A. Agora supõe-se que o dispositivo 500B sai. A cadeia de transformação 700B pode então tornar-se operativa. Agora supõe-se que o dispositivo 504 entra no ambiente resultando em uma cadeia de transformação 600D unindo a cadeia de transformação 700B, resultando na cadeia de transformação 800C tornando-se a cadeia de transformação de operação. Agora supõe-se que o dispositivo 500C sai, resultando em uma cadeia de transformação 700D sendo operativa. Agora supõe-se que o dispositivo 501 sai, resultando em uma cadeia de transformação 600D sendo operativa. Finalmente, o dispositivo 504 sai, não deixando nenhuma cadeia de transformação de operação no ambiente. Neste cenário, o aplicativo de operação trocou a estrutura (e assim troca a funcionalidade) sete vezes como seguir: 1) começando com a cadeia de transformação 600A, 2) então deslocando para a cadeia de transformação 700A, 3) então deslocando para a cadeia de transformação 800A, 4) então deslocando para a cadeia de transformação 700B, 5) então deslocando para a cadeia de transformação 800C, 6) então deslocando para a cadeia de transformação 700D, 7) então completando com a cadeia de transformação 600D.
[00049] A figura 10 ilustra um fluxograma de um método 1000 para preparar para a facilitação do aplicativo de compostos representado pelas múltiplas instâncias de cadeia de transformação unida. O método 1000 pode ser executado por qualquer um dos dispositivos 501 a 507 que estão dentro do ambiente 500. Alternativamente, ou, além disso, o método 1000 pode ser executado externo aos dispositivos 501 a 507, tal como, por exemplo, pelo sistema 510 externo da figura 5. Por exemplo, o sistema 510 externo pode ser um serviço provido em um ambiente de computação de nuvem. Independentemente de onde o método 1000 é executado, a figura 11 ilustra um sistema 1100 que pode executar o método 1000. Consequentemente, independentemente de se o sistema 1100 é incorporado em um ou mais dos dispositivos 501 a 507 ou se o sistema 1100 é o sistema 510 externo da figura 5, ou combinações dos mesmos, o método 1000 será agora descrito com referência frequente ao sistema 1100 da figura 11.
[00050] O método 1000 inclui dois atos 1001 e 1002 que não têm nenhuma dependência temporal. Por exemplo, o método inclui identificar as dependências entre classes de cadeia de transformação (ato 1001) . Estas dependências são essencialmente autorizações criadas pelo autor da classe que gerou a classe a fim de permitir as instâncias de classes de cadeia de transformação diferentes a interoperarem (submeter à aprovação baseada em mais instâncias).
[00051] Por exemplo, o sistema 1100 inclui um componente lógico 1101 e uma biblioteca de definição de classe de transformação 1110 que é ilustrada como incluindo seis definições de classes de cadeia de transformação 1111 a 1116. No entanto, a elipse 1117 representa que a biblioteca de definição de classe da cadeia de transformação 1110 pode incluir um número de definições de classes de cadeia de transformação. Como um exemplo, supõe-se que as definições de classes de cadeia de transformação 1111, 1112, 1113 e 1114, respectivamente definam classes das cadeias de transformação 600A, 600B, 600C e 600D das figuras 6A a 6D. Uma vez que cada classe de cadeia de transformação define elementos de dependência, o sistema 1100 pode usar a biblioteca 1110 para identificar as dependências entre classes de cadeias de transformação diferentes.
[00052] Por exemplo, ao observar o elemento de dependência 601B de uma cadeia de transformação 600A, e elemento de dependência 601A na cadeia de transformação 600B, o componente lógico 1101 pode identificar uma dependência entre os nós 601A e 601B que podem existir se as classes de cadeia de transformação 600A e 600B estiverem unidas, ou se instâncias da classe estiverem unidas. O componente lógico 1101 pode inferir que os autores das cadeias de transformação 600A e 600B ambos consentem em autorizar a união (presumindo que os usuários também autorizam no nível de instâncias em tempo de execução) nesses elementos de dependência.
[00053] O método 1000 também inclui identificar (ato 1002) dispositivos que são associados com as instâncias de qualquer uma das classes de cadeia de transformação. Os dispositivos podem por si mesmos identificar o sistema 1100 talvez com o identificador de dispositivo, bem como potencialmente quaisquer classes cadeia de transformação que o dispositivo deseja usar. Alternativamente, o sistema 1100 pode ter uma classe de transformação associada padrão com cada dispositivo, e assim talvez apenas receber o identificador de dispositivo. Podem haver algumas classes de cadeia de transformação que um dispositivo é autorizado a usar e outras classes de cadeia de transformação que o dispositivo não está autorizado a usar.
[00054] Por exemplo, o sistema 1100 também inclui registros de dispositivo 1120 que incluem o registro de dispositivos como associados com várias classes de cadeia de transformação. Por exemplo, os registros de dispositivo 1120 incluem cinco registros de dispositivo 1121 a 1125, embora a elipse 1126 represente que os registros de dispositivo 1120 podem incluir qualquer número de registros de dispositivo. Além disso, os registros de dispositivo 1120 podem ser persistir durante um longo prazo e/ou podem talvez apenas ser mantidos durante um tempo curto. Independentemente, o sistema 1100 identifica múltiplos dispositivos e encontra cadeias de transformação associadas para esses dispositivos. Como um exemplo somente, talvez os dispositivos 501 a 504 da figura 5 sejam associados com os registros 1121 a 1124. Por tal associação, o sistema 1100 é capaz de detectar quais instâncias de cadeia de transformação 600A, 600B, 600C, 600D (respectivamente, definidas por definições de classes de cadeia de transformação 1111, 1112, 1113 e 1114) são respectivamente associadas com os dispositivos 501 a 504.
[00055] Em algumas modalidades, o sistema 1100 por si mesmo executa uma representação de uma instância da classe de cadeia de transformação particular em nome do respectivo dispositivo. Por exemplo, ao identificar que uma classe de cadeia de transformação 600A é associada com o dispositivo 501, o sistema 1100 pode operar uma representação de uma instância de cadeia de transformação 600A para o dispositivo 501. Consequentemente, como as entradas recebidas a partir do dispositivo, o sistema 1100 identifica uma troca com um nó particular em uma cadeia de transformação, e propaga as reivindicações por toda a cadeia de transformação. Isto será referido como uma "abordagem "prática". Esta abordagem prática tem algumas vantagens em que o processamento pode ser descarregado para dispositivos ou sistemas ou nuvens que têm capacidade de processamento maior do que o dispositivo que está provendo a entrada por si mesma.
[00056] Em outra abordagem referida no presente documento como uma abordagem de "transferência", o dispositivo é associado com a classe de transformação por si mesma executando a instância da classe. Quando uma dependência é encontrada com outra cadeia de transformação associada com outro dispositivo, os dados podem ser diretamente escoados (por exemplo, através de rede ponto aponto) para esse dispositivo se outro dispositivo também é engatado na abordagem de transferência. Alternativamente, o dispositivo pode fluir os dados indiretamente para o outro dispositivo (por exemplo, através de um sistema externo ou uma nuvem). Se o sistema externo 510 está executando a representação da instância de uma classe de cadeia de transformação para esse outro dispositivo, o dispositivo pode em vez disso fluir os dados para o sistema externo 510 para mais propagação para o restante de uma cadeia de transformação.
[00057] A figura 12 ilustra um fluxograma de um método 1200 para unir duas instâncias de classes de transformação. Primeiro, é confirmado que as classes de cadeia de transformação são o tipo que pode ser unido (ato 1201). Por exemplo, se as classes de cadeia de transformação não se referem uma à outra, então talvez não exista nenhuma autorização baseada na classe para unir as instâncias da respectiva classe. Por exemplo, a classe de cadeia de transformação 600D não pode ser unida com a classe de cadeia de transformação 600B ou a classe de cadeia de transformação 600C, porque uma classe de cadeia de transformação 600D não se refere a elementos em uma classe de cadeia de transformação 600B ou 600C. No entanto, a classe de cadeia de transformação 600D pode ser unida com a classe de cadeia de transformação 600A porque elas contêm mutuamente referências uma à outra.
[00058] Neste exemplo, no entanto, embora a classe de cadeia de transformação 600D não possa ser unida diretamente às classes de cadeia de transformação 600B e 600C, a classe de cadeia de transformação 600D pode ser unida com as cadeias de transformação 700A, 700B, e 800A ainda que essas cadeias de transformação 700A, 700B e 800A incluam uma ou ambas das cadeias de transformação 600B e 600C.
[00059] No entanto, em uma modalidade alternativa, o autor de uma classe de cadeia de transformação pode especificar mais restrições sobre unir outras classes de cadeia de transformação. Por exemplo, um autor pode indicar uma restrição geral que una uma instância de classe de transformação particular não é permitido se essa instância de classe de transformação já é uma cadeia de transformação de compostos e/ou se a cadeia de transformação de compostos tem uma cadeia de transformação constituinte particular. Por exemplo, o unir duas instâncias de cadeia de transformação, o sistema 1100 pode manter o controle das identidades de classes de transformação que foram usadas para construir a cadeia de transformação de compostos até esse ponto. Essa lista pode ser usada para confirmar se as condições para autorização baseada na classe foram satisfeitas.
[00060] O autor também pode expressar restrições à granularidade de um dependência única. Por exemplo, no elemento de dependência 601B da classe de cadeia de transformação 600A, o autor pode expressar que a união está autorizada sobre esse elemento de dependência somente se a cadeia de transformação em que está unido não incluir uma classe de cadeia de transformação identificada de autoria de um concorrente. O autor também pode controlar os dados que são escoados de uma cadeia de transformação para outra cadeia de transformação unida escrevendo restrições ou condições na transformação que podem transpor a dependência por si mesma (por exemplo, entre os nós 601A e o elemento de dependência 601B).
[00061] No entanto, ainda que as classes de cadeia de transformação podem interoperar, que não significa que o usuário quer sua instância particular dessa classe de cadeia de transformação para unir com outras instâncias de outras classes de cadeia de transformação. Depois de tudo, os dados por si mesmos (por exemplo, o estado da instância) podem ser sensíveis ao usuário. Consequentemente, o método 1200 também inclui determinar que instâncias de classes de cadeia de transformação diferentes devem ser unidas (ato 1202).
[00062] O critério de união para autorizar duas instâncias de classes de cadeia de transformação diferentes a se unirem pode incluir um ou mais do seguinte se ou não o usuário está em uma lista de reunião de participantes, uma relação (por exemplo, família, amigo de rede social, ou semelhante) de usuários dos vários dispositivos, uma capacidade de comunicação (por exemplo, campo próximo) entre os dispositivos, uma proximidade dos respectivos dispositivos (por exemplo, na mesma sala de conferências), a solicitação do usuários, de outros. Por exemplo, os critérios de união podem incluir alguns critérios de negócios tais como os usuários associados das instâncias estão na mesma equipe. Como outro exemplo, um dispositivo pode ser um quiosque em um espaço de varejo ou hotel, onde um cliente usa o quiosque e um assistente de loja ou porteiro pode usar automaticamente seu dispositivo para unir a cadeia de transformação com a do quiosque para deste modo interagir com o cliente usando o aplicativo de compostos. S condições podem ser aplicadas aos critérios de união. Por exemplo, um. dispositivo de recepcionista pode ser capaz de unir um aplicativo do cliente se o porteiro não está por perto (talvez detectado pelo porteiro não ativamente usando um aplicativo pareável para unir com o dos clientes, ou estando fora da rede).
[00063] A menos que a instância de uma a classe de cadeia de transformação associada com o dispositivo deva ser iniciada em um estado padrão definido por essa classe, na abordagem prática o dispositivo pode então carregar dados de instâncias (por exemplo, os valores de cada um dos nós de uma cadeia de transformação associada com o dispositivo) ao sistema 1100 (ato 1203). Na abordagem de transferência, talvez os dados de instâncias somente nos nós de limite são carregados ao sistema 1100.
[00064] A instância de cadeia de transformação então se une com o restante de uma cadeia de transformação (ato 1204). Por exemplo, isto pode ser realizado pesquisando a instância da cadeia de transformação fonte para os elementos de dependência que correspondem aos nós na instância de cadeia de transformação alvo. Uma vez que tal elemento de dependência é encontrado, esse elemento de dependência é substituído com o nó identificado atual na instância de cadeia de transformação alvo, deste modo criando um link atual entre as instâncias de cadeia de transformação fonte e alvo. Isto é repetido para todos esses elementos de dependência encontrados na instância de cadeia de transformação fonte que identifica um nó na instância de cadeia de transformação alvo. Se existem elementos de dependência encontrados na instância de cadeia de transformação fonte que não correspondem a um nó na instância de cadeia de transformação alvo, então esses elementos de dependência permanecem elementos de cadeia de dependência na instância de cadeia de transformação fundida.
[00065] Notar que nos exemplos das figuras 6A through 6D, nenhuma das classes de cadeia de transformação 600A a 600D inclui elementos de dependência que se referem à mesma classe. No entanto, os princípios descritos no presente documento podem operar mesmo se uma instância de uma classe de cadeia de transformação particular pode ter um elemento de dependência referindo-se a outro nó em outra instância da mesma classe de cadeia de transformação particular. Além disso, se permitido por um nó particular que é unido a, múltiplos nós de uma ou mais instâncias de cadeia de transformação diferentes podem unir o nó particular.
[00066] Uma vez unidos, uma cadeia de transformação aumenta e os dados fluem dentro de uma cadeia de transformação aumentada (ato 1205), muito como se uma cadeia de transformação foi criada originalmente na forma aumentada em primeiro lugar. Por exemplo, uma vez que uma instância de uma classe de cadeia de transformação 600A une uma instância de uma classe de cadeia de transformação 600B, o resultado é uma instância única de uma classe de cadeia de transformação 700A. Uma vez que uma instância de uma classe de cadeia de transformação 600A une uma instância de uma classe de cadeia de transformação 600C, o resultado é uma instância única de uma classe de cadeia de transformação 700B. Uma vez que uma instância de uma classe de cadeia de transformação 600B une uma instância de uma classe de cadeia de transformação 600C, o resultado é uma instância única de uma classe de cadeia de transformação 700C. Uma vez que uma instância de uma classe de cadeia de transformação 600A une uma instância de uma classe de cadeia de transformação 600D, o resultado é uma instância única de uma classe de cadeia de transformação 700D.
[00067] Uma instância de uma classe de cadeia de transformação 800A pode ser formada tanto unindo as instâncias das classes de cadeia de transformação 700A e 600C, ou unindo as instâncias de uma classe de cadeia de transformação 600A e 700C. Uma instância de uma classe de cadeia de transformação 800B pode ser formada unindo as instâncias de classes de cadeia de transformação 700A e 600D. Uma instância de uma classe de cadeia de transformação 800C pode ser formada unindo as instância de classes de cadeia de transformação 700B e 600D. Esta operação de união pode ser realizada muitas vezes para deste modo criar uma cadeia de transformação muito grande em situações em que existem muitos dispositivos disponíveis para colaboração em um dado ambiente.
[00068] Consequentemente, uma vez unidos (ato 1204), os dados podem fluir livremente (ato 1205) dentro de uma cadeia de transformação aumentada mesmo através do que costumava ser limites entre cadeias de transformação constituintes. Por exemplo, em uma cadeia de transformação 700A da figura 7A, os dados podem fluir livremente (sem o usuário de uma interface de programa de aplicativo e sem chamadas de função) a partir do nó 601A para o nó 601B (através de transformação(ões) apropriada(s)) precisamente como os dados podem fluir do nó 601A para o nó 604A (através de transformação(ões) apropriada(s)).
[00069] Consequentemente, o sistema pode ser usado para unir as transformações associadas com uma ampla variedade de dispositivos em um aspecto relativamente automatizado e conveniente para deste modo aumentar a cadeia de transformação de um aplicativo de compostos que é compartilhado através de múltiplos dispositivos. Isto possibilita uma ampla variedade de cenários.
[00070] Por exemplo, considerar os indivíduos chegando em uma sala de conferências particular. Após o primeiro usuário entrar na sala de conferências com um computador laptop e um telefone inteligente, uma instância de cadeia de transformação associada com o telefone inteligente é unida com a instância de cadeia de transformação do laptop de modo que um aplicativo único está funcionando eficazmente através dos primeiros telefone inteligente e laptop do usuário. Um segundo usuário entra na sala de conferências um momento depois. O segundo usuário está também no convite da reunião, e assim essa cadeia de transformação de telefone inteligente do usuário é unida à cadeia de transformação de compostos existente para aumentar mais a cadeia de transformação. Uma tela de televisão então, automaticamente, liga para emitir algum dos dados associados com a reunião. Um terceiro usuário entra com um computador tablet e também é um convidado da reunião. Assim, a cadeia de transformação associada com o computador tablet une a cadeia de transformação de compostos para aumentar mais a cadeia de transformação. Assim, como mais dispositivos unem um ambiente apropriado para unir as cadeias de transformação, o aplicativo funcionando através de todos os dispositivos é atualmente aumentado, deste modo trocando a funcionalidade do aplicativo por si memo. Múltiplos usuários podem, cada um, compartilhar no ambiente de modo que múltiplos usuários estão observando cada um de pelo menos alguns dos dispositivos.
[00071] A figura 13 ilustra um fluxograma de um método 1300 para cadeias de transformação. Assim, como existe um método para unir as cadeias de transformação quando os dispositivos entram em um ambiente, existe um método para desacoplar as cadeias de transformação quando os dispositivos saem do ambiente. Primeiro, o sistema determina que uma instância de uma classe de cadeia de transformação deve ser desacoplada (ato 1301). Em resposta, o fluxo de dados é descontinuado para e dessa instância (ato 1302). O critérios de desacoplamento usados para determinar que a instância deve ser desacoplada pode incluir quaisquer critérios, mas, como um exemplo, pode incluir uma ou mais de uma proximidade do dispositivo associado com a instância com outros dispositivos no ambiente, um estado de conclusão de reunião, uma capacidade de comunicação entre o dispositivo associado com a instância e outros dispositivos no ambiente, a solicitação do usuário, e assim em diante. Assim, as cadeias de transformação podem trocar dinamicamente na medida em que os dispositivos entram e saem do ambiente.
[00072] Em uma modalidade, o sistema 1100 inclui um serviço de apresentação 1150. Um ou mais nós de uma instância de cadeia de transformação que está funcionando pode acionar a renderização em um ou mais dispositivos circundantes. Do mesmo modo, um ou mais dispositivos pode prover entrada em um ou mais nós de uma instância de cadeia de transformação. Por exemplo, supõem-se que uma instância de uma cadeia de transformação 900 esteja funcionando no ambiente 500 da figura 5, e que os dispositivos 501 a 504 são associados com instâncias de respectivas classes de cadeia de transformação 600A a 600D, deste modo resultando na instância da classe de transformação aumentada 900. Com referência à figura 9, supõem-se que os nós 601A e 601C são nós de entrada e os nós 604A, 603B, 602C e 602D são nós de saída. O serviço de apresentação 1150 pode selecionar quais dispositivos podem prover entrada para os nós 601A e 601C, e se assim, que transformações devem ser executadas. Em um exemplo, os dispositivos são associados com suas respectivas porções de suas cadeias de transformação de modo que os nós de entrada dentro dessa respectiva porção são providos pelo respectivo dispositivo. Assim, por padrão, o nó de entrada 601A, sendo originalmente parte de uma cadeia de transformação 600A, pode ser provido a entrada a partir do dispositivo 501 (após potencialmente alguma(s) transformação(ões)). Também, no caso padrão, o nó de entrada 601C, sendo originalmente parte de uma cadeia de transformação 600C, pode ser provido a entrada a partir do dispositivo 503 (após potencialmente alguma(s) transformação(ões)). O serviço de apresentação 1150 também pode selecionar quais dispositivos devem renderizar a entrada dos nós 604A, 603B, 602C e 602D, e que (se alguma) transformações devem ser executadas.
[00073] A figura 14 ilustra um fluxograma de um método 1400 para renderizar a saída de uma cadeia de transformação em um ambiente de múltiplos dispositivos. O método 1400 pode ser executado pelo sistema 1100 da figura 11, ou talvez pelo serviço de apresentação 1150 da figura 11. O componente lógico 1101 determina (ato 1401) que um nó particular (um nó de apresentação) de uma instância de uma classe de cadeia de transformação foi trocado. Por exemplo, no exemplo, os nós 604A, 603B, 602C e 602D são, cada um, nós de saída, ou "nós de apresentação".
[00074] O componente lógico também identifica características (ato 1402) de múltiplos dispositivos candidatos em que pelo menos uma versão dessa saída trocada pode ser renderizada. Por exemplo, o componente lógico 1101 pode se referir ao registro de dispositivo 1120 e/ou indagados dos dispositivos diretamente a fim de determinar a capacidade de renderização de cada dispositivo. As características de cada dispositivo também podem incluir uma justaposição de cada usuário com respeito ao dispositivo.
[00075] O sistema então seleciona (ato 1403) em pelo menos um dos dispositivos candidatos sobre qual renderizar pelo menos a versão da renderização baseada nas características identificada. O sistema faz a seleção a fim de maximizar a capacidade de utilização da saída. Por exemplo, se a saída é destinada para todos os usuários, e todos os usuários estão fisicamente presentes, a saída pode ser renderizada em uma tela maior. Se a saída é interativa e requer entrada de um dispositivo particular, esse dispositivo pode ser selecionado para a saída.
[00076] O sistema determina se quaisquer transformações devem ser aplicadas (bloco de decisão 1404) para a renderização antes da saída atual para o dispositivo. As transformações levam em consideração a adequabilidade do(s) dispositivo(s) selecionado(s), onde as transformações podem diferir dependendo do(s) dispositivo(s) selecionado(s) para renderização. Exemplos de transformações incluem trocar um tipo de renderização (por exemplo, texto para fala, fala para texto, vídeo para texto, texto para vídeo, e assim em diante). As transformações também podem incluir cinematização de saída. Por exemplo, um vídeo pode ser criado a partir da entrada, em que um cenário é provido e talvez trocado como apropriado, e os elementos de movimento são movidos para dentro e para fora do vídeo.
[00077] Se as transformações devem ser executadas ("Sim" no bloco de decisão 1404), então essas transformações são executadas (ato 1405). Finalmente, a renderização é facilitada sobre o dispositivo selecionado (ato 1406). Consequentemente, a cadeia de transformação de compostos pode tomar a entrada de qualquer dispositivo em qualquer forma, e transformar a entrada, se necessário, em uma forma que é reconhecida por um nó de entrada da cadeia de transformação de compostos. Assim, esta entrada é propagada por toda a cadeia de transformação. Se os valores de um ou mais nós de apresentação mudam, um dispositivo apropriado pode ser selecionado para renderizar a saída. Consequentemente, o dispositivo mais apropriado para renderização pode ser selecionado sem considerar a qual dispositivo foi associado com a porção de uma cadeia de transformação que contém o nó de apresentação. Por exemplo, trocas no valor do nó de apresentação 604A não precisam ser renderizadas exclusivamente ou mesmo em todo o dispositivo 501 que corresponde a uma instância de cadeia de transformação 600A. Em algumas modalidades, a renderização pode envolver converter a informação em alguma atuação física incluindo algum tipo de movimento. Por exemplo, a renderização pode incluir abrir ou fechar uma porta, abrir ou fechar uma válvula, destravar e travar uma porta, ligar uma televisão ativada ou desligada, e assim em diante.
[00078] Um cenário detalhado (denominado daqui por diante o "cenário dos dispositivos) será agora descrito com respeito às figuras 15A a 15M (referido coletivamente como "figura 15"). Este cenário é provido apenas como uma de uma variedade infinita de cenários que são capacitados pelos princípios mais amplos descritos no presente documento. Neste cenário, um usuário está ordenando vários dispositivos de computação. O cenário envolve quadro dispositivos 1501, 1502, 1503 e 1504, embora o cenário comece na figura 15A somente com dois dispositivos 1501 e 1502 sendo visíveis. Cada um dos quadro dispositivos 1501 a 1504 participam em prover entrada para e receber saída de um aplicativo de compostos.
[00079] As figuras 15A introduzem dois dispositivos 1501 e 1502 que são computadores laptop. Supõem-se que estes dois dispositivos 1501 e 1502 são inicialmente os únicos dispositivos no ambiente de operação, e assim suas respectivas cadeias de transformação são unidas. A cadeia de transformação associada com o dispositivo 1501 permite a navegação e seleção de um fabricante. A cadeia de transformação associada com o dispositivo 1502 permite a navegação de uma lista de dispositivos oferecida pelo fabricante, e também permite o usuário trocar uma contagem de quaisquer dos dispositivos na lista.
[00080] Mais especificamente, o dispositivo 1501 permite ao usuário rolar horizontalmente através de um número de fabricantes, e selecionar um fabricante. Na figura 15A, o dispositivo 1501 mostra somente três de tais fabricantes rotulados "Vendedor 7", "Vendedor 8" e "Vendedor 9", com o usuário tendo selecionado "Vendedor 8". Por outro lado, o dispositivo 1502 mostra uma lista rolável horizontalmente de dispositivos que são providos pelo vendedor selecionado no dispositivo 1501. Na figura 15A, uma vez que o Vendedor 8 é selecionado no dispositivo 1501, o dispositivo 1502 ilustra uma lista de dispositivos providos pelo Vendedor 8. Cada item na lista de dispositivos inclui uma imagem 1505 do dispositivo, um nome 1506 do dispositivo, um custo unitário 1507 do dispositivo, e uma contagem 1508 do dispositivo sendo ordenada. A contagem para cada dispositivo pode ser controlada usando um controla de rolagem correspondente.
[00081] A figura 15B mostra um estado do cenário que progrediu a partir do estado da figura 15A, em que o usuário rolou a lista de fabricantes para a esquerda e também selecionou "Vendedor 4". Consequentemente, a saída do dispositivo 1502 troca automaticamente para exibir uma lista de dispositivos fabricados pelo Vendedor 4. Para fazer isto, os dados fluíram automaticamente (sem o uso de uma interface de programa de aplicativo) de uma cadeia de transformação associada com dispositivo 1501 a uma cadeia de transformação associada com o dispositivo 1502.
[00082] A figura 15C mostra um estado do cenário que progrediu a partir do estado da figura 15B, em que o usuário rolou a lista de fabricantes para a esquerda e também selecionou "Vendedor 2". Consequentemente, a saída do dispositivo 1502 muda automaticamente para exibir uma lista de dispositivos fabricados pelo Vendedor 2. Para assim fazer, os dados fluíram novamente automaticamente de uma cadeia de transformação associada com o dispositivo 1501 para uma cadeia de transformação associada com o dispositivo 1502.
[00083] A figura 15D mostra um estado do cenário que progrediu a partir do estado da figura 15C, em que o usuário usou controles de rolagem 1511 e 1512 exibidos no dispositivo 1502 a fim de trocar uma contagem de ordem para dois dispositivos oferecidos pelo Vendedor 2. A figura 15E mostra um estado do cenário que progrediu a partir do estado da figura 15D, em que o usuário usou o dispositivo 1502 para rolar para a direita através da lista de dispositivos oferecidos pelo Vendedor 2 e usou mais os controles de rolagem 1513 e 1514 exibidos no dispositivo 1502 a fim de trocar uma contagem da ordem para mais dois dispositivos oferecidos pelo Vendedor 2. Consequentemente, neste estágio, o usuário introduziu contagens de ordem para quatro dispositivos oferecidos pelo Vendedor 2.
[00084] A figura 15F mostra um estado do cenário que progrediu a partir do estado da figura 15E, em que um terceiro dispositivo 1503 é introduzido no ambiente. Por exemplo, o terceiro dispositivo 1503 pode ser associado com a cadeia de transformação que exibe um custo unitário máximo e um custo total para toda a ordem. Uma vez que o dispositivo 1503 é introduzido no ambiente, essa porção de uma cadeia de transformação é unida com a cadeia de transformação de compostos existente, deste modo trocando a funcionalidade do aplicativo de compostos, para agora emitir dais dados de custo ao dispositivo 1503. Uma vez que uma instância de cadeia de transformação é unido, os dados representando as contagens, e os custos unitários são escoados para essa porção de uma cadeia de transformação, levando o dispositivo 1503 a ser imediatamente preenchido. Notar que os fluxos também ocorrem na direção oposta na medida em que o dispositivo 1503 indica um preço unitário máximo, e assim, a lista de dispositivos mostrada no dispositivo 1502 é restrita a qualquer dispositivo abaixo do preço unitário máximo e assim não existe nenhuma troca nas visualizações no dispositivo 1502.
[00085] A figura 15G mostra um estado do cenário que progrediu a partir do estado da figura 15F, em que o usuário usou o controle de rolagem 1515 no dispositivo 1502 a fim de introduzir uma contagem para ainda outro dispositivo oferecido pelo Vendedor 2. Os dados de contagem e os dados de custo unitário fluem para a porção de uma cadeia de transformação correspondendo ao dispositivo 1503, resultando em uma troca no custo total exibido no dispositivo 1503.
[00086] A figura 15H mostra um estado do cenário que progrediu a partir do estado da figura 15G, em que o usuário ajustou para baixo o preço unitário máximo para $987 usando o controle de rolagem 1516 no dispositivo 1503. A troca de preço unitário máximo fluiu de uma porção da cadeia de transformação associada com o dispositivo 1503 para a porção da cadeia de transformação associada com o dispositivo 1502, levado vários dispositivos oferecidos pelo Vendedor 2 a ser retirados da lista. Se o usuário retorna a quantidade mais alta, os itens retirados serão automaticamente adicionados de volta à lista, talvez retornando o dispositivo 1502 ao estado ilustrado na figura 15G.
[00087] A figura 15I mostra um estado do cenário que progrediu a partir do estado da figura 15G, em que um quarto dispositivo 1504 é introduzido no ambiente. Por exemplo, o quarto dispositivo 1504 pode ser associado com a cadeia de transformação que exibe um peso máximo de um dispositivo. Uma vez que o dispositivo 1504 é introduzido no ambiente, essa porção de uma cadeia de transformação é unida com a cadeia de transformação de compostos existente, deste modo trocando a funcionalidade do aplicativo de compostos, para agora emitir tais dados de custo. Uma vez que uma instância de cadeia de transformação é unida, os dados representando o peso máximo flui a partir da porção de uma cadeia de transformação associada com o dispositivo 1504 para a porção de uma cadeia de transformação associada com o dispositivo 1502. O dispositivo 1502 responde exibindo avisos de excesso de peso 1518A, 1518B, 1518C e 1518D associados com cada dispositivo que é mais pesado do que o peso máximo. Atualmente, na figura 15I, o peso é apenas 606 g, e assim todos os dispositivos são listados com tal aviso.
[00088] A figura 15J mostra um estado do cenário que progrediu a partir do estado da figura 15I, em que o usuário usou o controle de rolagem 1516 no dispositivo 1504 a fim de aumentar o peso máximo para acima de 2 kg. A troca de peso máxima flui a partir da porção de uma a cadeia de transformação associada com o dispositivo 1504 para a porção de uma cadeia de transformação correspondendo ao dispositivo 1502, resultando na remoção dos avisos de excesso de peso 1518C e 1518D (os avisos de excesso de peso 1518A e 1518B permanecem).
[00089] Isso conclui o cenário a partir da perspectiva do usuário. As figures 15K a 150 ilustra, que um tempo de criação, o autor pode trocar de forma declarativa as transformações para deste modo trocar a funcionalidade do aplicativo de compostos. Na figura 15K, o elemento de interface de usuário 1520 é ilustrado como incluindo uma transformação declarativa que filtra para fora os dispositivos que têm um preço de varejo do fabricante que é menor do que o valor indicado pelo controle deslizante 1516. A figura 15L ilustra que esta restrição é agora removida, e assim os dispositivos exibidos não são agora are filtrados para fora pelo valor do controle deslizante 1516.
[00090] Na figura 15M, o elemento de interface de usuário 1521 é ilustrado como definindo uma cor de realce usada para o preço de varejo sugerido na fábrica. A figura 15N ilustra que a cor de realce agora depende de se ou não o preço de varejo sugerido pelo fabricante está acima do valor indicado pelo controle deslizante 1516. Se assim, a cor de realce troca para, por exemplo, verde. A figura 150 ilustra que como o controle deslizante 1516 é aumentado nesta situação, o comportamento do aplicativo de compostos trocou de um estado em que os dispositivos são removidos a partir da lista se seu preço de varejo do fabricante sugerido é maior do que o valor do controle deslizante 1516, para um estado em que preço de varejo sugerido de fábrica (como comparado ao valor do controle deslizante 1516) aciona o realce do preço de varejo sugerido do fabricante.
[00091] Como mencionado acima, uma transformação que o serviço de apresentação 1150 pode fazer para emissão de um nó de apresentação é para cinematizar a saída. Cinematização refere-se ao uso de uma ou mais técnicas cinematográficas. Um nível de cinematicidade refere-se ao número de técnicas cinematográficas que são usadas, combinadas com o grau em que cada técnica cinematográfica é usada.
[00092] As técnicas cinematográficas incluem o ajuste de um grau de movimento de elementos de interface de usuário sobre a interface de usuário. O movimento de elementos de interface de usuário para dentro da interface de usuário e fora da interface de usuário estimula o usuário a tratar a interface de usuário como mais de um filme do que uma interface de usuário padrão, deste modo deixando o usuário digerir levemente múltiplos aspectos da interface de usuário. Menos movimento, ou mesmo imobilidade, do elemento de interface de usuário permite ao usuário interagir com o elemento, e assim focaliza mais concretamente. Assim, na medida em que um usuário expressa uma intenção de interagir com um elemento de interface de usuário, o movimento geral de elementos de interface de usuário é diminuído para permitir a interação.
[00093] Outra técnica cinematográfica é o uso de cenários que se referem ao tópico sendo apresentado. Por exemplo, em jogos, cenários são usados para transportar a configuração do jogo. Os cenários podem mudar periodicamente se as trocas de tópico, ou se o cenário anterior esteve presente durante algum tempo. O usuário de cenários interessantes convida um usuário a visualizar a interface de usuário como um todo em suas múltiplas camadas. Os seres humanos foram compreendendo cenas de múltiplas camadas desde os tempos pré--históricos. Por exemplo, ao olharmos para fora para o horizonte, podemos focalizar sobre qualquer número de aspectos seja o campo que está perto ou distante milhas do pico da montanha, se estamos olhando diretamente para um objeto, ou o objeto está um pouco em nossa visão periférica.
[00094] Ainda outra técnica cinematográfica é o uso de iluminação e realce para prover ênfase em um aspecto particular da interface de usuário. O uso de cortes de salto é uma técnica cinematográfica em que as múltiplas camadas da interface de usuário são trocadas para apresentar a informação de um modo diferente. A técnica cinematográfica pode ser o uso de elementos de interface de usuário sintetizados (tais como cenários, ou outros elementos de interface de usuário no primeiro plano que iguala um tópico de discussão. Outra técnica cinematográfica é o uso de música de fundo que é apropriado para o tom ou tópico na informação que é provida. O fornecimento de um aspecto de avanço ou retrocesso também é uma técnica cinematográfica que imita o gravador de vídeo digital. Movimento panorâmico e troca de perspectiva com respeito às configurações (se bidimensionais ou tridimensionais) também é uma técnica cinematográfica. A cinematicidade pode ser reduzida permitindo focalizar sobre elementos de interface de usuário específicos (por exemplo, ofuscando ou removendo o cenário ou tornando o cenário estático).
[00095] Notar que um monitor pode estar exibindo a saída de uma cadeia de transformação em uma forma cinematográfica, enquanto outro usuário pode ser usuário de seu dispositivo pessoal para executar mais interação com a informação, assim usando menos cinematicidade aplicada ao mesmo fluxo de núcleo da informação de sessão. Consequentemente, os usuários em geral podem participar de uma visão cinematográfica geral da informação de sessão, mas os indivíduos podem interagir com a informação quando desejado, deste modo personalizando sua experiência com a informação de sessão.
[00096] A figura 16 ilustra um fluxograma de um método 1600 para sintetizar elementos de interface de usuário de informação e aplicativo em uma forma de fluxo contínua. O método 1600 pode ser executado, por exemplo, pelo serviço de apresentação 1150 quando a informação de sessão deve ser renderizada. O serviço de apresentação recebe a informação de sessão (ato 1601) e determina um nível de cinematicidade para aplicar à informação de sessão (ato 1602). A apresentação então aplica a cinematicidade (ato 1603) e faz com que a saída cinematográfica seja renderizada (ato 1604). Assim fazendo, o serviço de apresentação pode ajustar um nível de cinematicidade para ser aplicado à informação de sessão na medida em que a sessão é apresentada e o método 1600 é executado continuamente.
[00097] Os usuários podem interagir com as renderizações cinematizadas (por exemplo, para detalhar a informação sobre um objeto mostrado na renderização, para trocar o ritmo ou tempo do fluxo ("apresse-se através desta parte ... atél xxx ser encontrado /alcançado"), ou para encontrar clipes/quadros/padrões/ocorrências similares). Assim, parte da cinematização pode incluir a criação de pontos de acesso com os quais o(s) usuário(s) podem interagir, a criação de diálogo com o usuário ou dando quaisquer dicas visuais ou aurais para quando e como o usuário pode interagir.
[00098] Consequentemente, os princípios descritos no presente documento fornecem o uso de técnicas cinematográficas em um ambiente que inclui múltiplos dispositivos e múltiplas pessoas presentes.
[00099] O nível de cinematicidade pode diferir por dispositivo, e muita troca ao longo do tempo na medida em que o usuário focaliza ou interage com a informação. O uso de nível de cinematicidade mais alto, por outro lado, permite ao usuário fazer uma avaliação geral de grandes quantidades de dados.
[000100] A presente invenção pode ser incorporada em outras formas específicas sem sair de seu espírito ou características essenciais. As modalidades descritas devem ser consideradas em todos os aspectos somente como ilustrativas e não restritivas. O escopo da invenção é, portanto, indicado pelas reivindicações anexas em vez de pela descrição acima. Todas as trocas, que vêm dentro do significado e faixa de equivalência das reivindicações devem ser abarcadas dentro de seu escopo.

Claims (9)

1. Método implementado por computador para sintetizar elementos de interface do usuário de informações e aplicativos em uma forma de fluxo contínuo, o método caracterizado pelo fato de que compreende: um ato (1401) de determinar, por um componente lógico (1101), que um nó específico (604A, 603B, 602C, 602D) de uma instância de uma classe de cadeia de transformação foi alterado; um ato (1402) de identificar, pelo componente lógico (1101), características de vários dispositivos candidatos (501, 502, 503, 504, 505, 506) nos quais pelo menos uma versão da saída alterada pode ser renderizada, referindo-se a um registro de dispositivo (1120) e/ou consultando os dispositivos (501, 502, 503, 504, 505, 506) diretamente para determinar um recurso de renderização de cada um dos dispositivos (501, 502, 503, 504, 505, 506) ; um ato (1403) de selecionar, por um sistema (100, 1100), pelo menos um dos dispositivos candidatos (501, 502, 503, 504, 505, 506) no qual renderizar pelo menos a versão da saída alterada com base nas características identificadas, a fim de maximizar a capacidade de utilização da saída; um ato (1601) de receber a saída por um serviço de apresentação (1150); um ato (1602) de determinar um nível de cinematicidade a ser aplicado à saída pelo serviço de apresentação (1150); um ato de ajustar, pelo serviço de apresentação (1150), o nível de cinematicidade a ser aplicado à saída quando pelo menos um dispositivo renderiza a saída, aplicando a cinematicidade e fazendo com que a saída cinematográfica seja renderizada pelo serviço de apresentação (1150 ), em que o nível de cinematicidade se refere a um número de técnicas cinematográficas sendo usadas, combinadas com um grau em que cada técnica cinematográfica é usada, as técnicas cinematográficas compreendendo pelo menos uma dentre ajustar um grau de movimento dos elementos da interface do usuário em uma interface do usuário, usar cenários relacionados a um tópico que está sendo apresentado, usar cortes de salto alterando várias camadas da interface do usuário para apresentar as informações de uma maneira diferente, fornecer recursos de avanço e retrocesso, e movimento panorâmico e troca de perspectiva em relação às configurações bidimensionais ou configurações tridimensionais, em que níveis mais altos de cinematicidade usam graus mais altos de movimento no movimento de apresentação de elementos de interface de usuário representando a saída, e níveis mais baixos de cinematicidade usam movimento mais baixo ou nenhum de elementos de interface de usuário representando a saída.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que níveis mais altos de cinematicidade usam um cenário sintetizado de um tópico relacionado à saída.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que níveis mais altos de cinematicidade usam mais cortes de salto do que em níveis mais baixos de cinematicidade.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que nível mais alto de cinematicidade corresponde a múltiplos níveis de foco na interface de usuário e níveis mais baixos de cinematicidade correspondem a múltiplos níveis de foco na interface de usuário.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os níveis mais altos de cinematicidade fornecem música de fundo enquanto níveis mais baixos de cinematicidade têm menos ou nenhuma música de fundo.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que níveis mais altos de cinematicidade fornecem mais iluminação cinematográfica, enquanto níveis mais baixos de cinematicidade fornecem menos ou nenhuma iluminação cinematográfica.
7. Método, de acordo com a reivindicação 1, em que se o nível de cinematicidade é mais alto, o método é caracterizado pelo fato de que compreende: um ato de encontrar representações visuais de itens no texto; e exibir as visualizações.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que se o nível de cinematicidade é mais alto, avanço e retrocesso são oferecidos.
9. Sistema (100, 1100), caracterizado pelo fato de que compreende: um ou mais processadores (102); um ou mais meios de armazenamento legíveis por computador tendo um método para sintetizar elementos de interface de usuário de informações e aplicativos em uma forma de fluxo contínuo, o método compreendendo: um ato (1401) de determinar, por um componente lógico (1101), que um nó específico (604A, 603B, 602C, 602D) de uma instância de uma classe de cadeia de transformação foi alterado; um ato (1402) de identificar, pelo componente lógico (1101), características de vários dispositivos candidatos (501, 502, 503, 504, 505, 506) nos quais pelo menos uma versão da saída alterada pode ser renderizada, referindo-se a um registro de dispositivo (1120) e/ou consultando os dispositivos (501, 502, 503, 504, 505, 506) diretamente para determinar um recurso de renderização de cada um dos dispositivos (501, 502, 503, 504, 505, 506) ; um ato (1403) de selecionar, por um sistema (100, 1100), pelo menos um dos dispositivos candidatos (501, 502, 503, 504, 505, 506) no qual renderizar pelo menos a versão da saída alterada com base nas características identificadas, a fim de maximizar a capacidade de utilização da saída; um ato (1601) de receber a saída por um serviço de apresentação (1150); um ato (1602) de determinar um nível de cinematicidade a ser aplicado à saída pelo serviço de apresentação (1150); um ato de ajustar, pelo serviço de apresentação (1150), o nível de cinematicidade a ser aplicado à saída quando pelo menos um dispositivo renderiza a saída, aplicando a cinematicidade e fazendo com que a saída cinematográfica seja renderizada pelo serviço de apresentação (1150 ), em que o nível de cinematicidade se refere a um número de técnicas cinematográficas sendo usadas, combinadas com um grau em que cada técnica cinematográfica é usada, as técnicas cinematográficas compreendendo pelo menos uma dentre ajustar um grau de movimento dos elementos da interface do usuário em uma interface do usuário, usar cenários relacionados a um tópico que está sendo apresentado, usar cortes de salto alterando várias camadas da interface do usuário para apresentar as informações de uma maneira diferente, fornecer recursos de retrocesso e retrocesso e movimento panorâmico e troca de perspectiva em relação às configurações bidimensionais ou configurações tridimensionais, em que níveis mais altos de cinematicidade usam graus mais altos de movimento no movimento de apresentação de elementos de interface de usuário representando a saída, e níveis mais baixos de cinematicidade usam movimento mais baixo ou nenhum de elementos de interface de usuário representando a saída.
BR112016027025-8A 2014-06-30 2015-06-29 Método e sistema para sintetizar elementos de interface do usuário de informações e aplicativos em uma forma de fluxo contínuo para cinematização de saída BR112016027025B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/320,083 US9659394B2 (en) 2014-06-30 2014-06-30 Cinematization of output in compound device environment
US14/320,083 2014-06-30
PCT/US2015/038219 WO2016003848A1 (en) 2014-06-30 2015-06-29 Cinematization of output in compound device environment

Publications (2)

Publication Number Publication Date
BR112016027025A2 BR112016027025A2 (pt) 2021-06-08
BR112016027025B1 true BR112016027025B1 (pt) 2022-12-20

Family

ID=53776932

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016027025-8A BR112016027025B1 (pt) 2014-06-30 2015-06-29 Método e sistema para sintetizar elementos de interface do usuário de informações e aplicativos em uma forma de fluxo contínuo para cinematização de saída

Country Status (11)

Country Link
US (1) US9659394B2 (pt)
EP (1) EP3161687B1 (pt)
JP (1) JP6578302B2 (pt)
KR (1) KR102359017B1 (pt)
CN (1) CN106462419A (pt)
AU (1) AU2015284403B2 (pt)
BR (1) BR112016027025B1 (pt)
CA (1) CA2948656C (pt)
MX (1) MX361305B (pt)
RU (1) RU2698421C2 (pt)
WO (1) WO2016003848A1 (pt)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9396698B2 (en) * 2014-06-30 2016-07-19 Microsoft Technology Licensing, Llc Compound application presentation across multiple devices

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0350421A3 (en) 1988-06-28 1991-12-04 International Business Machines Corporation Generalized data stream transform service
US5748186A (en) 1995-10-02 1998-05-05 Digital Equipment Corporation Multimodal information presentation system
US6006227A (en) 1996-06-28 1999-12-21 Yale University Document stream operating system
US6768999B2 (en) 1996-06-28 2004-07-27 Mirror Worlds Technologies, Inc. Enterprise, stream-based, information management system
US6342901B1 (en) 1998-12-22 2002-01-29 Xerox Corporation Interactive device for displaying information from multiple sources
US6778698B1 (en) 1999-06-11 2004-08-17 Pts Corporation Method and apparatus for digital image segmentation
WO2002017115A2 (en) 2000-08-21 2002-02-28 Thoughtslinger Corporation Simultaneous multi-user document editing system
US7373656B2 (en) 2000-10-27 2008-05-13 Sandisk Il Ltd. Automatic configuration for portable devices
AU2002318447A1 (en) 2001-06-26 2003-01-08 Mirror Worlds Technologies, Inc. Stream-based enterprise and desktop information management systems
US7454760B2 (en) 2002-04-22 2008-11-18 Rosebud Lms, Inc. Method and software for enabling n-way collaborative work over a network of computers
US7987491B2 (en) 2002-05-10 2011-07-26 Richard Reisman Method and apparatus for browsing using alternative linkbases
US7444595B2 (en) 2003-08-13 2008-10-28 National Instruments Corporation Graphical programming system and method for creating and managing a scene graph
US7911409B1 (en) 2003-10-07 2011-03-22 Adobe Systems Incorporated Independent views generated for multiple display devices by a software application
US7817163B2 (en) * 2003-10-23 2010-10-19 Microsoft Corporation Dynamic window anatomy
US7839419B2 (en) * 2003-10-23 2010-11-23 Microsoft Corporation Compositing desktop window manager
US7743382B2 (en) 2003-11-03 2010-06-22 Ramal Acquisition Corp. System for deadlock condition detection and correction by allowing a queue limit of a number of data tokens on the queue to increase
US7437371B2 (en) 2004-02-10 2008-10-14 Microsoft Corporation Systems and methods for the implementation of unordered and ordered collections in a data store
US6976029B2 (en) 2004-02-10 2005-12-13 Microsoft Corporation System and method for providing user defined types in a database system
US20050203877A1 (en) 2004-02-27 2005-09-15 Baggenstoss Paul M. Chain rule processor
US20050289505A1 (en) 2004-06-25 2005-12-29 Williams Stanley N Method and system for improving performance and scalability of applications that utilize a flow-based-programming methodology
WO2007065357A1 (fr) 2005-12-05 2007-06-14 Beijing Sursen Co., Ltd Système et procédé de traitement de documents
US20070208498A1 (en) * 2006-03-03 2007-09-06 Inrix, Inc. Displaying road traffic condition information and user controls
US8429300B2 (en) 2006-03-06 2013-04-23 Lg Electronics Inc. Data transferring method
US8111686B2 (en) * 2006-08-07 2012-02-07 Microsoft Corporation Aggregating endpoint capabilities for a user
US20090128567A1 (en) * 2007-11-15 2009-05-21 Brian Mark Shuster Multi-instance, multi-user animation with coordinated chat
US8314838B2 (en) 2007-12-28 2012-11-20 Motorola Mobility Llc System and method for collecting media associated with a mobile device
US8489474B2 (en) 2007-12-31 2013-07-16 Software Ag Systems and/or methods for managing transformations in enterprise application integration and/or business processing management environments
US7899798B2 (en) 2008-02-25 2011-03-01 Microsoft Corporation Observing and reporting changes in complex software dependencies
US9063755B2 (en) * 2008-04-07 2015-06-23 Express Mobile, Inc. Systems and methods for presenting information on mobile devices
US8527679B2 (en) 2008-06-16 2013-09-03 Samsung Electronics Co., Ltd. Apparatus and method for adaptation of input/output interface in virtualization environment
JP5148534B2 (ja) * 2009-03-03 2013-02-20 株式会社東芝 通信サーバ、装置及びセッション制御方法
US20100235769A1 (en) * 2009-03-16 2010-09-16 Microsoft Corporation Smooth layout animation of continuous and non-continuous properties
US20100306657A1 (en) * 2009-06-01 2010-12-02 3Dlabs Inc., Ltd. Audio-Enhanced User Interface for Browsing
US8352397B2 (en) 2009-09-10 2013-01-08 Microsoft Corporation Dependency graph in data-driven model
EP2325762A1 (en) 2009-10-27 2011-05-25 Exalead Method and system for processing information of a stream of information
US9258394B2 (en) 2009-11-12 2016-02-09 Arun Sobti & Associates, Llc Apparatus and method for integrating computing devices
US20110154197A1 (en) 2009-12-18 2011-06-23 Louis Hawthorne System and method for algorithmic movie generation based on audio/video synchronization
US8326880B2 (en) 2010-04-05 2012-12-04 Microsoft Corporation Summarizing streams of information
US8438533B2 (en) 2010-04-26 2013-05-07 Sag Ag Performance-related decision support for compositions of process modeling environments
US8819026B2 (en) 2010-08-27 2014-08-26 SCR Technologies, Inc. Sequential chain registry
WO2012030318A1 (en) 2010-09-03 2012-03-08 Packetvideo Corporation System and method for transferring media content
US8843239B2 (en) * 2010-11-19 2014-09-23 Nest Labs, Inc. Methods, systems, and related architectures for managing network connected thermostats
US20120159326A1 (en) 2010-12-16 2012-06-21 Microsoft Corporation Rich interactive saga creation
US9779097B2 (en) * 2011-04-28 2017-10-03 Sony Corporation Platform agnostic UI/UX and human interaction paradigm
US8786634B2 (en) 2011-06-04 2014-07-22 Apple Inc. Adaptive use of wireless display
US20130002708A1 (en) * 2011-07-01 2013-01-03 Nokia Corporation Method, apparatus, and computer program product for presenting interactive dynamic content in front of static content
US9258344B2 (en) 2011-08-01 2016-02-09 Intel Corporation Multi-hop single sign-on (SSO) for identity provider (IdP) roaming/proxy
KR20130133319A (ko) * 2012-05-23 2013-12-09 삼성전자주식회사 3d그래픽 사용자 인터페이스 제작 장치 및 방법
US9613084B2 (en) 2012-06-13 2017-04-04 Microsoft Technology Licensing, Llc Using cinematic techniques to present data
CN103516994A (zh) 2012-06-29 2014-01-15 深圳市快播科技有限公司 多屏适配器摄像头配置方法、多屏适配器及多屏互动系统
WO2014008386A2 (en) 2012-07-05 2014-01-09 Flextronics Ap, Llc Method and system for controlling supply chains
EP2688263A1 (en) * 2012-07-17 2014-01-22 Tele2 Sverige AB System and method for delegated authentication and authorization
US20140025650A1 (en) 2012-07-18 2014-01-23 Microsoft Corporation Abstract relational model for transforming data into consumable content
US9235327B2 (en) * 2013-04-29 2016-01-12 International Business Machines Corporation Applying contextual function to a graphical user interface using peripheral menu tabs
US20150046363A1 (en) 2013-08-07 2015-02-12 Flextronics Ap, Llc Method and Apparatus for Managing, Displaying, Analyzing, Coordinating, and Optimizing Innovation, Engineering, Manufacturing, and Logistics Infrastructures
US20150135067A1 (en) * 2013-11-14 2015-05-14 Wells Fargo Bank, N.A. Intelligent data presentation

Also Published As

Publication number Publication date
MX2016016525A (es) 2017-05-01
JP2017520827A (ja) 2017-07-27
RU2016151336A (ru) 2018-06-28
RU2698421C2 (ru) 2019-08-26
US9659394B2 (en) 2017-05-23
EP3161687B1 (en) 2020-03-18
CA2948656A1 (en) 2016-01-07
KR20170023882A (ko) 2017-03-06
KR102359017B1 (ko) 2022-02-04
US20150379746A1 (en) 2015-12-31
EP3161687A1 (en) 2017-05-03
WO2016003848A1 (en) 2016-01-07
JP6578302B2 (ja) 2019-09-18
MX361305B (es) 2018-12-03
AU2015284403B2 (en) 2020-04-30
AU2015284403A1 (en) 2016-11-17
CA2948656C (en) 2022-06-21
RU2016151336A3 (pt) 2019-01-30
CN106462419A (zh) 2017-02-22
BR112016027025A2 (pt) 2021-06-08

Similar Documents

Publication Publication Date Title
CA2948662C (en) Compound application presentation across multiple devices
BR112016027025B1 (pt) Método e sistema para sintetizar elementos de interface do usuário de informações e aplicativos em uma forma de fluxo contínuo para cinematização de saída
US9773070B2 (en) Compound transformation chain application across multiple devices
EP3161619B1 (en) Authorization of joining of transformation chain instances

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 29/06/2015, OBSERVADAS AS CONDICOES LEGAIS