BR112021014123B1 - Método para gerar recomendações de microaplicativo, sistema e mídia legível por computador não transitória - Google Patents
Método para gerar recomendações de microaplicativo, sistema e mídia legível por computador não transitória Download PDFInfo
- Publication number
- BR112021014123B1 BR112021014123B1 BR112021014123-5A BR112021014123A BR112021014123B1 BR 112021014123 B1 BR112021014123 B1 BR 112021014123B1 BR 112021014123 A BR112021014123 A BR 112021014123A BR 112021014123 B1 BR112021014123 B1 BR 112021014123B1
- Authority
- BR
- Brazil
- Prior art keywords
- correlation
- interactions
- trees
- sequence
- microapplication
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000003993 interaction Effects 0.000 claims abstract description 104
- 230000004044 response Effects 0.000 claims abstract description 26
- 230000009471 action Effects 0.000 claims description 242
- 230000000694 effects Effects 0.000 claims description 67
- 230000001364 causal effect Effects 0.000 claims description 7
- 238000013479 data entry Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 12
- 238000004458 analytical method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000000875 corresponding effect Effects 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 230000010354 integration Effects 0.000 description 6
- 230000002596 correlated effect Effects 0.000 description 4
- 230000001052 transient effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000012559 user support system Methods 0.000 description 3
- 230000002730 additional effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0631—Item recommendations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/77—Software metrics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/453—Help systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Databases & Information Systems (AREA)
- Development Economics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Tourism & Hospitality (AREA)
- Operations Research (AREA)
- Educational Administration (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Game Theory and Decision Science (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
- User Interface Of Digital Computer (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
MÉTODO PARA GERAR RECOMENDAÇÕES DE MICROAPLICATIVO, SISTEMA E MÍDIA LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIA. A presente invenção refere-se a método, sistema e meio de armazenamento em computador para gerar recomendações de microaplicativo que compreende receber dados observacionais que focalizam interações entre usuários e aplicativos. O método ainda compreende definir um conjunto de árvores de correlação com base nos dados observacionais recebidos. Cada árvore de correlação no conjunto representa uma sequência de interações entre um dos usuários e um ou mais dos aplicativos. O conjunto inclui uma primeira quantidade de árvores de correlação. O método ainda compreende identificar um subconjunto de árvores de correlação similares, sendo que cada uma das quais é incluída no conjunto. O subconjunto inclui uma segunda quantidade de árvores de correlação que é menor do que a primeira quantidade. O método ainda compreende estabelecer uma determinação de que a segunda quantidade é maior do que uma quantidade limítrofe. O método ainda compreende, em resposta ao estabelecimento da determinação, gerar uma recomendação de microaplicativo com base na sequência de interações representada por uma árvore de correlação que é representativa do subconjunto.
Description
[0001] Um espaço de trabalho digital é uma estrutura de software projetada para entregar e gerenciar aplicativos de um usuário, dados e áreas de trabalho de maneira consistente e segura, independentemente do dispositivo ou localização do usuário. Espaços de trabalho digitais intensificam a experiência de usuário otimizando-se e automatizando-se aquelas tarefas que um usuário realiza frequentemente, tais como aprovar relatórios de custos, confirmar compromissos de calendário, enviar tíquetes de suporte de usuário e revisar solicitações de férias. Um espaço de trabalho digital permite que usuários acessem a funcionalidade fornecida por múltiplos aplicativos corporativos — incluindo aplicativos de "software como serviço" (SaaS), aplicativos da web, aplicativos de área de trabalho e aplicativos de proprietário — através de uma interface única. Um espaço de trabalho digital também estende as capacidades desses aplicativos através do uso de microaplicati- vos. Um microaplicativo sincroniza dados a partir de aplicativos corporativos complexos para otimizar a funcionalidade e pode, portanto, ser entendido como um caso de uso otimizado que usuários podem acessar por dentro de um espaço de trabalho digital.
[0002] Em uma primeira implementação exemplificativa, um méto do para gerar recomendações de microaplicativo é fornecido. O método compreende receber dados observacionais que focalizam interações entre uma pluralidade de usuários e uma pluralidade de aplicativos. O método ainda compreende definir um conjunto de árvores de correlação com base nos dados observacionais recebidos. Cada árvo- re de correlação no conjunto representa uma sequência de interações entre um dos usuários e um ou mais dos aplicativos. O conjunto inclui uma primeira quantidade de árvores de correlação. O método ainda compreende identificar um subconjunto de árvores de correlação similares, sendo que cada uma das quais é incluída no conjunto. O subconjunto inclui uma segunda quantidade de árvores de correlação que é menor do que a primeira quantidade. O método ainda compreende realizar uma determinação de que a segunda quantidade é maior do que uma quantidade limítrofe. O método ainda compreende, em resposta à realização da determinação, gerar uma recomendação de mi- croaplicativo com base na sequência de interações representada por uma árvore de correlação que é representativa do subconjunto.
[0003] Em uma segunda implementação exemplificativa, a gera ção da recomendação de microaplicativo ainda compreende gerar instruções legíveis por máquina, que, quando executadas, fazem com que a sequência de interações representada pela árvore de correlação representativa a ser invocada.
[0004] Em uma terceira implementação exemplificativa, o método da primeira implementação exemplificativa ainda compreende extrair uma pluralidade de conjuntos de ações frequentes do conjunto de árvores de correlação; identificar uma relação causal entre um particular dos conjuntos de ações frequentes e uma ação frequente subsequente, em que a ação frequente subsequente é associada a um parâmetro de confiabilidade que representa a frequência a ação frequente subsequente segue o conjunto de ações frequentes particular; e em resposta à determinação de que o parâmetro de confiabilidade excede uma confiabilidade limítrofe, gerar uma recomendação de microaplicativo que inclui a ação frequente subsequente.
[0005] Em uma quarta implementação exemplificativa, a sequência de interações representada por uma particular dentre as árvores de correlação no conjunto inclui uma interação de autenticação de usuário, uma ação de entrada de dados de usuário, e uma interação de logoff.
[0006] Em uma quinta implementação exemplificativa, a identifica ção do subconjunto de árvores de correlação similares ainda compreende (a) identificar um centroide das árvores de correlação similares no subconjunto; e (b) determinar distâncias entre cada das árvores de correlação similares no subconjunto e o centroide, em que cada uma das distâncias é menor do que uma distância limítrofe.
[0007] Em uma sexta implementação exemplificativa, o método da primeira implementação exemplificativa ainda compreende determinar distâncias entre uma particular dentre as árvores de correlação similares no subconjunto e cada uma das outras árvores de correlação similares no subconjunto, em que cada uma das distâncias é menor do que uma distância limítrofe.
[0008] Em uma sétima implementação exemplificativa, o conjunto de árvores de correlação inclui uma árvore de correlação de aplicativo único que representa uma sequência de interações entre um dos usuários e um dos aplicativos; e uma árvore de correlação cruzada de aplicativo único que representa uma sequência de interações entre um dos usuários e pelo menos duas aplicações diferentes.
[0009] Em uma oitava implementação exemplificativa, o método da primeira implementação exemplificativa ainda compreende identificar um ponto de associação que liga duas das árvores de correlação no conjunto, em que as duas árvores de correlação ligadas representam funcionalidade fornecida pelo primeiro e pelo segundo aplicativos, e em que o ponto de associação representa dados que passam do primeiro aplicativo ao segundo aplicativo; gerar uma árvore de correlação cruzada de aplicativo que representa uma sequência de interações entre um dos usuários e o primeiro e o segundo aplicativos; e incluir a árvore de correlação cruzada de aplicativo no conjunto definido de árvores de correlação.
[0010] Em uma nona implementação, o método da primeira im plementação exemplificativa ainda compreende identificar um ponto de associação que liga duas das árvores de correlação no conjunto, em que as duas árvores de correlação ligadas representam funcionalidade fornecida pelo primeiro e pelo segundo aplicativos, e em que o ponto de associação representa uma operação de cópia no primeiro aplicativo e uma operação de colagem no segundo aplicativo.
[0011] Em uma décima implementação exemplificativa, um siste ma compreende um servidor de espaço de trabalho digital. O servidor de espaço de trabalho digital inclui uma memória e pelo menos um processador acoplado à memória. O servidor de espaço de trabalho digital é configurado para gerar recomendações de microaplicativo recebendo-se dados observacionais que definem interações entre uma pluralidade de usuários e uma pluralidade de aplicativos. O servidor de espaço de trabalho digital é adicionalmente configurado para gerar recomendações de microaplicativo definindo-se um conjunto de árvores de correlação com base nos dados observacionais recebidos. Cada árvore de correlação no conjunto representa uma sequência de interações entre um dos usuários e um ou mais dos aplicativos. O servidor de espaço de trabalho digital é adicionalmente configurado para gerar recomendações de microaplicativo extraindo-se uma pluralidade de conjuntos de ações frequentes do conjunto de árvores de correlação. O servidor de espaço de trabalho digital é adicionalmente configurado para gerar recomendações de microaplicativo identificando-se uma relação causal entre um particular dos conjuntos de ações frequentes e uma ação frequente subsequente. A ação frequente subsequente é associada a um parâmetro de confiabilidade que representa a frequência que a ação frequente subsequente segue o conjunto de ações frequentes particular. O servidor de espaço de trabalho digital é adici-onalmente configurado para gerar recomendações de microaplicativo, em resposta à determinação de que o parâmetro de confiabilidade excede uma confiabilidade limítrofe, gerando-se uma recomendação de microaplicativo que inclui a ação frequente subsequente.
[0012] Em uma décima primeira implementação exemplificativa, (a) o servidor de espaço de trabalho digital é adicionalmente configurado para gerar recomendações de microaplicativo ligando-se duas das árvores de correlação definidas; (b) uma primeira das árvores de correlação ligadas inclui um ponto de associação que representa uma primeira ação tomada em relação a um elemento de dados; e (c) uma segunda das árvores de correlação ligadas inclui uma segunda ação tomada em relação ao elemento de dados.
[0013] Em uma décima segunda implementação exemplificativa, o servidor de espaço de trabalho digital é adicionalmente configurado para gerar recomendações de microaplicativo identificando-se um subconjunto de árvores de correlação similares, sendo que cada uma das quais é incluída no conjunto; realizar uma determinação de que há mais do que uma quantidade limítrofe de árvores de correlação no subconjunto; e em resposta à realização da determinação, gerar uma recomendação de microaplicativo com base na sequência de interações representadas por uma árvore de correlação que é representativa do subconjunto.
[0014] Em uma décima terceira implementação exemplificativa, a geração da recomendação de microaplicativo ainda compreende exibir, em uma interface de usuário, uma representação da ação frequente subsequente.
[0015] Em uma décima quarta implementação exemplificativa, ca da conjunto de ações frequentes é associado a um parâmetro de suporte que representa uma frequência com a qual o conjunto de ações frequentes é observado.
[0016] Em uma décima quinta implementação exemplificativa, uma mídia legível por computador não transitória armazena instruções exe-cutáveis por processador para gerar recomendações de microaplicati- vo. As instruções executáveis por processador compreendem instruções para receber dados observacionais que definem interações entre uma pluralidade de usuários e uma pluralidade de aplicativos. As instruções executáveis por processador ainda compreendem instruções para define um conjunto de árvores de correlação com base nos dados observacionais recebidos. Cada árvore de correlação no conjunto representa uma sequência de interações entre um dos usuários e um ou mais dos aplicativos. O conjunto inclui uma primeira quantidade de árvores de correlação. As instruções executáveis por processador ainda compreendem instruções para identificar um subconjunto de árvores de correlação similares, sendo que cada uma das quais é incluída no conjunto. O subconjunto inclui uma segunda quantidade de árvores de correlação que é menor do que a primeira quantidade. As instruções executáveis por processador ainda compreendem instruções para realizar uma determinação de que a segunda quantidade é maior do que uma quantidade limítrofe. As instruções executáveis por processador ainda compreendem instruções para, em resposta à realização da determinação, gerar uma recomendação de microaplicativo com base na sequência de interações correspondente a uma árvore de correlação que é representativa do subconjunto.
[0017] Em uma décima sexta implementação exemplificativa, as instruções executáveis por processador ainda compreendem instruções para: identificar pontos iniciais e finais de uma sequência particular de interações; e identificar uma pluralidade de ações de usuário que ocorrem entre os pontos iniciais e finais.
[0018] Em uma décima sétima implementação exemplificativa, as instruções executáveis por processador ainda compreendem instruções para salvar dados que representam o conjunto de árvores de correlação em um banco de dados de árvore.
[0019] Em uma décima oitava implementação exemplificativa, (a) as instruções executáveis por processador ainda compreendem instruções para identificar um ponto inicial de uma sequência particular de interações; e (b) o ponto inicial é selecionado dentre um grupo que consiste em uma ação de autenticação de usuário e um envio de locador de recurso uniforme.
[0020] Em uma décima nona implementação exemplificativa, (a) as instruções executáveis por processador ainda compreendem instruções para identificar um ponto final de uma sequência particular de interações; e (b) o ponto final é selecionado dentre um grupo que consiste em uma ação de logoff de usuário, uma ação de fechamento de página, e um evento de tempo transcorrido de atividade detectada.
[0021] Em uma vigésima implementação exemplificativa, as instru ções executáveis por processador ainda compreendem instruções para identificar um ponto final de uma primeira sequência de interações; identificar um ponto inicial de uma segunda sequência de interações; identificar um objeto de dados que é operado por ambos os pontos iniciais e finais; e, em resposta a identificar o objeto de dados, designar o ponto final da primeira sequência de interações como um ponto de associação entre a primeira e a segunda sequências.
[0022] Vários aspectos, de pelo menos um exemplo, são discuti dos abaixo em referência às figuras anexas, que não são destinadas a serem desenhadas em escala. As Figuras são incluídas para fornecer uma ilustração e um entendimento adicional dos vários aspectos e são incorporadas e constituem uma parte desta divulgação. No entanto, as Figuras não são destinadas como uma definição dos limites de qual- quer exemplo particular. As Figuras, em conjunto com o restante desta divulgação, servem para explicar princípios e operações dos aspectos descritos e reivindicados. Nas Figuras, cada componente idêntico ou quase idêntico que é ilustrado é representado por uma referência numérica similar. Para fins de clareza, cada componente pode não ser rotulado em cada Figura.
[0023] A Figura 1 é um diagrama de blocos que ilustra esquemati camente uma sequência de operações de fluxo de trabalho que são conectados por pontos de associação.
[0024] A Figura 2 é um diagrama de blocos que ilustra esquemati camente componentes selecionados de uma implementação exempli- ficativa de uma estrutura de recomendação de microaplicativo que gera recomendações de funcionalidade de microaplicativo analisando-se sequências de interação de usuário dentro de um ou mais aplicativos.
[0025] A Figura 3 é um fluxograma que ilustra um método exempli- ficativo para gerar recomendações de funcionalidade de microaplicati- vo analisando-se sequências de interação de usuário dentro de um ou mais aplicativos.
[0026] A Figura 4 é um fluxograma que ilustra um método exempli- ficativo para identificar e detectar sequências de interação de usuário dentro de um ou mais aplicativos.
[0027] A Figura 5 é um fluxograma que ilustra um método exempli- ficativo para construir e ligar árvores de correlação que representam sequências de interação de usuário dentro de um ou mais aplicativos.
[0028] A Figura 6 é um fluxograma que ilustra um método exempli- ficativo para analisar árvores de correlação para identificar ações de usuário frequentemente invocadas e sequências de ações dentro de um ou mais aplicativos.
[0029] A Figura 7 é uma árvore de correlação de aplicativo único que representa sequências de interação de usuário exemplificativas dentro de um aplicativo Jira.
[0030] A Figura 8 é uma árvore de correlação cruzada de aplicati vo que representa sequências de interação de usuário exemplificativas tanto dentro de um aplicativo Jira quanto dentro de um aplicativo Git.
[0031] A Figura 9 é um diagrama de blocos que ilustra esquemati camente um exemplo de identificação de sequências de interação de usuário de alta frequência a partir de uma pluralidade de árvores de correlação.
[0032] A Figura 10 é um diagrama de blocos que ilustra esquema ticamente um exemplo de identificação de um trajeto crítico que representa uma sequência de interações de usuário que podem formar a base para funcionalidade de microaplicativo recomendado.
[0033] A Figura 11 é um diagrama de blocos que ilustra esquema ticamente um método exemplificativo para gerar recomendações de funcionalidade de microaplicativo analisando-se sequências de interação de usuário dentro de um ou mais aplicativos.
[0034] Conforme notado acima, um espaço de trabalho digital permite que usuários acessem a funcionalidade fornecida por múltiplos aplicativos através de uma interface única de usuário. Microaplicativos sincronizam dados a partir desses aplicativos para otimizar a experiência de usuário dentro de um espaço de trabalho digital. Portanto, microaplicativos permitem que um usuário visualize informações e realize ações sem lançar o aplicativo subjacente ou alternar para uma interface diferente. A partir de um ponto de vista conceitual, microaplica- tivos podem, desse modo, ser entendidos como desassociando a funcionalidade fornecida por aplicativos de um usuário para fornecer ao usuário ações simplificadas dentro da interface de espaço de trabalho digital. Ações de usuário tomadas dentro de um microaplicativo servem como a base para entradas fornecidas aos aplicativos subjacen- tes do usuário. Essas ações de usuário são projetadas para abordar problemas comuns específicos e usam casos rápida e facilmente, au-mentando assim a produtividade do usuário. Exemplos de tais ações frequentemente invocadas incluem aprovar relatórios de custos, confirmar compromissos de calendário, enviar tíquetes de suporte de usuário e revisar solicitações de férias.
[0035] Os benefícios de produtividade de amplo alcance e usabili- dade de microaplicativos não somente levaram a rápido crescimento no número de microaplicativos disponíveis, mas também resultou no desenvolvimento de ferramentas que facilitam para que desenvolvedores criem integrações customizadas. Tais ferramentas de desenvolvimento simplificam o processo de extrair ações frequentemente invocadas de aplicativos de um usuário (ou usuária) ao seu espaço de trabalho digital. Por exemplo, modelos de ação de microaplicativo pré- formados podem ser diretamente integrados ao espaço de trabalho digital de um usuário, enquanto um criador de microaplicativo permite que administradores customizem e instalem novos microaplicativos para aplicativos de legado, proprietários, ou outros aplicativos de SaaS especializados. Ferramentas tais como essas permitem que uma lista de "ações disponíveis" seja curada e apresentada a um usuário, permitindo assim que o usuário interaja com um conjunto inteiro de aplicativos diversos sem nunca deixar a interface de espaço de trabalho digital.
[0036] Ferramentas de desenvolvimento de microaplicativo exis tentes, portanto, ajudam administradores a desenvolver e instalar um conjunto de microaplicativos que é adaptado para as necessidades de um grupo de trabalho particular. Esse processo de desenvolvimento permanece amplamente dependente de conhecimento humano e intuição para identificar os fluxos de trabalho que os microaplicativos devem facilitar. Por exemplo, para criar integrações de microaplicativo úteis, desenvolvedores devem saber quais aplicativos são frequentemente usados, e mais especificamente, qual funcionalidade de aplicativo é frequentemente invocada por usuários específicos. Desenvolvedores também devem saber como a funcionalidade se estende através de diferentes aplicativos corporativos, tal como ocorre quando um usuário realiza uma reserva de viagem com uso de um primeiro aplicativo e então envia por e-mail uma cópia da confirmação de reserva com uso de um segundo aplicativo. Em uma grande organização, é difícil que administradores curem esses dados de uso individualizado através de grupos de trabalho, apresentando desse modo um obstáculo ao desenvolvimento de um conjunto útil de microaplicativos.
[0037] Em um sentido mais geral, a funcionalidade fornecida por um microaplicativo e os aplicativos subjacentes que um microaplicativo potencializa são frequentemente selecionados com base no julgamento subjetivo de um desenvolvedor, administrador, ou outro engenheiro de software. É frequentemente desafiante que engenheiros de software realizem julgamentos em relação a qual funcionalidade de microa- plicativo mais provavelmente renderá benefícios em termos de eficiência aprimorada e fluxos de trabalho otimizados. Mais especificamente, engenheiros de software encarregados de desenvolver um espaço de trabalho digital e a funcionalidade de microaplicativo fornecida no mesmo frequentemente não estão cientes da funcionalidade de aplicativo que usuários em outros campos veem como mais úteis. Por exemplo, usuários nos serviços financeiros ou indústrias de cuidado com a saúde provavelmente exigirão funcionalidade diferente do que engenheiros de software ou gerentes de produto. Em outras palavras, embora desenvolvedores possam ter grande habilidade em gerar e criar microaplicativos, os mesmos frequentemente carecem de percepção nas ações particulares que os microaplicativos devem fornecer. Uma abordagem mais analítica para a avaliação de atividade de usuário, portanto, otimizaria o processo de desenvolvimento de micro- aplicativo tornando o mesmo menos dependente de conhecimento humano e intuição, assim como menos dependente do julgamento e/ou pressupostos subjetivos de desenvolvedores e engenheiros de software.
[0038] Em vista do supracitado, é divulgada no presente documen to uma estrutura de recomendação de microaplicativo que gera reco-mendações de funcionalidade de microaplicativo analisando-se sequências de interação de usuário observadas que envolvem um ou mais aplicativos corporativos. Em determinadas implementações, tal estrutura fornece a capacidade de identificar analiticamente uma sequência frequentemente invocada de ações atualmente realizadas no curso de competir tarefas do dia a dia em diferentes campos. Essa sequência identificada de ações é algumas vezes denominada como um "trajeto crítico". Em alguns casos, o trajeto crítico pode se estender através de múltiplos aplicativos, em cujo caso a estrutura de recomendação de microaplicativo identifica um ou mais "pontos de associação" que representam ações que ligam a funcionalidade em duas aplicações diferentes. Por exemplo, uma ação de cópia e colagem que é usada para mover dados de um aplicativo a outro serve como um pon-to de associação entre os dois aplicativos. Independentemente do número de aplicativos envolvidos, a sequência identificada de ações pode ser fornecida como uma recomendação a um microaplicativo desenvolvedor, ou pode ser fornecida diretamente a um criador de mi- croaplicativo. Em outras palavras, pontos de associação representam ações que pode ser automatizada ou recomendada em um criador de microaplicativo. A estrutura de recomendação de microaplicativo divulgada no presente documento também possibilita opcionalmente a identificação de ações frequentemente invocadas individuais, independentemente de qualquer sequência abrangente. Em alguns casos a funcionalidade de microaplicativo recomendado é aprovada por um administrador ou outro usuário designado antes de ser instalado no espaço de trabalho digital de um usuário.
[0039] A Figura 1 é um diagrama de blocos que ilustra esquemati camente uma sequência de nós de etapa de fluxo de trabalho 10 que são conectadas por pontos de associação 12. Os nós de etapa 10 representam estágios distintos de um fluxo de trabalho a partir do qual uma ou mais ações podem ser tomadas. Pontos de ligação 12 representam ações que, quando invocadas, antecipam o fluxo de trabalho de um nó de etapa ao próximo. A sequência estabelecida por pontos de associação 12 define um trajeto crítico que pode formar a base para funcionalidade de microaplicativo recomendado. Conforme adicionalmente ilustrado na Figura 1, ações adicionais são tomadas dos nós de etapa 10, incluindo ações frequentemente observadas 14 e ações não frequentemente observadas 16. Ações frequentemente observadas 14 podem formar, adicional ou alternativamente a base para outra funcionalidade de microaplicativo recomendado. O fluxo de trabalho ilustrado na Figura 1 é apresentado a partir de uma perspectiva "cên- trica de usuário", em vez da perspectiva de qualquer um aplicativo usado no fluxo de trabalho.
[0040] Por exemplo, em um exemplo fluxo de trabalho um supervi sor recebe e responde a uma solicitação de férias de um subordinado. As ações que o supervisor é observado a tomar em tal fluxo de trabalho pode formar a base para funcionalidade de microaplicativo recomendado, conforme derivado com uso das técnicas analíticas divulgadas no presente documento. Por exemplo, mediante recebimento da solicitação, o supervisor pode acessar um calendário compartilhado, decidir aprovar ou negar a solicitação, e enviar uma notificação de decisão ao solicitador. Nesse fluxo de trabalho, o ponto no qual o supervisor recebe a solicitação pode ser entendido como um primeiro nó de etapa. A ação do supervisor de acessar o calendário compartilhado pode ser entendida como um primeiro ponto de associação. Em alguns casos, esse ponto de associação pode representar funcionalidade de aplicativo cruzado, tal como quando dados de chegada de um aplicativo de envio de mensagens são fornecidos a um aplicativo de agenda- mento. O ponto no qual o supervisor é apresentado com o calendário compartilhado pode ser entendido como um segundo nó de etapa. A ação do supervisor de enviar uma notificação ao solicitador pode ser entendida como um segundo ponto de associação, e o ponto no qual a solicitação foi aprovada ou negada pode ser entendida como um terceiro nó de etapa. Quando a sequência de receber a solicitação, exibir um calendário compartilhado, e enviar uma notificação de resposta é observada frequentemente, essa sequência representa um trajeto crítico que forma a base para funcionalidade de microaplicativo recomendado.
[0041] Embora esse fluxo de trabalho de solicitação de férias exemplificativo envolva três nós de etapa ligados por dois pontos de associação, mais ou menos nós de etapa e pontos de associação podem ser implicados em outras implementações. Além disso, as técnicas analíticas divulgadas no presente documento também podem ser usadas para identificar outras ações frequentemente observadas que podem formar a base para funcionalidade de microaplicativo recomendado, mesmo quando aquelas ações potencializam a funcionalidade fornecida por um único aplicativo. Por exemplo, em alguns casos, pode ser observado que o supervisor frequentemente envia uma mensagem ao departamento de recursos humanos depois de receber uma solicitação de férias. Enviar tal mensagem pode ser entendido como uma ação frequentemente observada que é tomada a partir de quaisquer dos nós de etapa que compreendem o fluxo de trabalho de solicitação de férias. Uma ampla variedade de diferentes tipos de ações frequentemente observadas pode formar a base para criar uma reco-mendação de funcionalidade de microaplicativo, incluindo ações que são automatizadas e ações que necessitam de entrada humana. Algumas implementações da estrutura de recomendação de microaplica- tivo divulgadas no presente documento podem se distinguir entre ações frequentemente observadas que devem formar a base para funcionalidade de microaplicativo recomendado e ações não frequentemente observadas que não devem formar a base para tal recomendação. Por exemplo, se for observado que o supervisor acessou as revisões de desempenho do solicitador de férias em somente ocasiões isoladas, a estrutura de recomendação de microaplicativo pode ser configurada para ignorar tais observações isoladas ao criar recomendações de funcionalidade de microaplicativo.
[0042] Várias vantagens podem ser derivadas das várias imple mentações da estrutura de recomendação de microaplicativo divulgadas no presente documento. Por exemplo, determinadas técnicas divulgadas no presente documento se baseiam em coletar e analisar dados de uso de aplicativo de um grande número de usuários que trabalham em uma gama diversa de contextos de uso. Técnicas de aprendizado por máquina podem ser usadas para analisar esses dados de uso e extraem padrões que formam a base para identificar ações frequentemente invocadas e sequências de ações. As recomendações de funcionalidade de microaplicativo resultante se baseiam desse modo em identificar e analisar padrões de uso de aplicativo que poderiam ser difíceis ou mesmo impossíveis para um analista humano identificar. Determinadas técnicas divulgadas também possibilitam que recomendações de funcionalidade de microaplicativo sejam especificamente adaptadas para uma função particular e os padrões de uso de aplicativo associados a essa função. Criando-se precisamente recomendações de microaplicativo individualmente adaptadas pode não ser viável para um analista humano, particularmente em uma grande organização. A funcionalidade de microaplicativo que é amplamente adaptada para as necessidades de usuários particulares e grupos de trabalho particulares definitivamente levarão a experiência de usuário e produtividade aprimorados.
[0043] Conforme usados no presente documento, o termo "micro- aplicativo" se refere, adicionalmente ao seu significado comum, a um aplicativo de software de peso leve configurado para fornecer a um usuário acesso simplificado a funcionalidade e/ou dados específicos que são fornecidos por um ou mais aplicativos subjacentes. Por exemplo, microaplicativos permitem um usuário visualize informações e realize ações sem lançar ou mudar de contexto para um aplicativo subjacente. Microaplicativos podem ser definidos como sendo "acionados por evento" ou "iniciados por usuário". Microaplicativos acionados por evento são invocados em resposta à detecção de um determinado evento ou condição, e pode ser configurado para gerar notificações de usuário quando algo exige atenção. Por exemplo, um microaplicativo acionado por evento pode exibir um relatório de orçamento em resposta ao recebimento de uma solicitação de aprovação de custos ou exibir um programa em resposta à abertura de um período de registro de curso. Microaplicativos iniciados por usuário, por outro lado, são invocados em resposta a uma ação de usuário, e atuam como um atalho para ações frequentemente realizadas, tal como aprovar relatórios de custos, confirmar compromissos de calendário, enviar tíquetes de suporte de usuário, e revisar solicitações de férias. Microaplicativos simplificam fluxos de trabalho reduzindo-se mudança de contexto e eliminando a necessidade de aprender como usar aplicativos complexos.
[0044] Conforme usados no presente documento, o termo "árvore de correlação" se refere, adicionalmente ao seu significado comum, a dados que representam uma ou mais sequências de ações realizadas por um software aplicativo. Em alguns casos uma árvore de correlação representa um conjunto de ações que são realizadas sequencialmente, uma após a outra. Em outros casos uma árvore de correlação representa múltiplos conjuntos de ações, pelo menos uma dos quais é mutuamente exclusiva a outra. Tal exclusividade mútua pode ocorrer em que, por exemplo, um usuário precisa escolher entre duas ações mutuamente exclusivas (por exemplo, deletar ou salvar um objeto de dados). Ações mutuamente exclusivas podem ser representadas por diferentes ramificações de uma única árvore de correlação. As ações podem ser realizadas por um único aplicativo ("árvore de correlação de aplicativo único") ou múltiplos aplicativos ("árvore de correlação cruzada de aplicativo"). Uma árvore de correlação é representada por dados que pode ser armazenada em qualquer formato adequado, incluindo em uma estrutura de dados legível por máquina, ou como um gráfico esquemático legível por humano em que ações são representadas por nós que são ligados por bordas. As Figuras 7 e 8 ilustram exemplos de árvores de correlação que são representadas por gráficos esquemáticos legíveis por humano. Os dados usados para representar uma ár-vore de correlação podem ser salvos em, por exemplo, uma estrutura de memória distribuída, um banco de dados relacional, ou qualquer outra estrutura de dados adequada.
[0045] Conforme usados no presente documento, o termo "ponto de associação" se refere, adicionalmente ao seu significado comum, a uma ação de usuário que forma uma ligação entre funcionalidades fornecidas por um ou mais aplicativos subjacentes. A funcionalidade de ligação pode ser fornecida por um microaplicativo. Por exemplo, um usuário pode invocar um comando "copiar" em um aplicativo de bloco de notas, mudar de contextos para um navegador da web, e então invocar um comado "colar" no navegador da web. O comando "copiar" pode ser entendido como um ponto de associação devido ao fato de que o mesmo é uma ação de usuário que liga funcionalidade fornecida pelo aplicativo de bloco de notas com funcionalidade fornecida pelo navegador da web. Nesse exemplo, um microaplicativo pode ser gerado que permite que dados sejam rapidamente transferidos do aplicativo de bloco de notas ao navegador da web. Outros pontos de associação exemplificativos em um fluxo de trabalho incluem uma ação de logoff, uma ação de fechamento de página, uma ação de entrada de usuário, uma ação de transferência de arquivo, e uma ação de linguagem de marcação de hipertexto (HTML). Um ponto de associação pode ser entendido como funcionalidade de ligação fornecida por aplicações diferentes em uma árvore de correlação cruzada de aplicativo.
[0046] A Figura 2 é um diagrama de blocos que ilustra esquemati camente componentes selecionados de uma implementação exempli- ficativa de uma estrutura de recomendação de microaplicativo 2000 que gera recomendações de funcionalidade de microaplicativo analisando-se sequências de interação de usuário dentro de um ou mais aplicativos. A estrutura 2000 inclui um servidor de espaço de trabalho digital 100 que tem capacidade de analisar como um usuário, associado a um ponto final 200, interage com aplicativos fornecidos por um ou mais servidores de aplicativo 300. O associado do usuário a ponto final 200 pode existir em virtude de, por exemplo, o usuário ser logado ou autenticado ao ponto final. Embora somente um ponto final e três servidores de aplicativo exemplificativos sejam ilustrados na Figura 2 por clareza, será verificado que, em geral, a estrutura 2000 tem capacidade de analisar interações entre um número arbitrário de pontos finais e um número arbitrário de servidores de aplicativo. O servidor de espaço de trabalho digital 100, o ponto final 200, e servidores de aplicativo 300 se comunicam entre si por meio de uma rede 500. A rede 500 pode ser uma rede pública (tal como a Internet) ou uma rede privada (tal como uma intranet corporativa ou outra rede com acesso restrito). Outras modalidades podem ter menos ou mais trajetórias de comunicação, redes, subcomponentes, e/ou recursos dependendo da granulari- dade de uma implementação particular. Por exemplo, em algumas implementações, pelo menos uma porção da funcionalidade de aplicativo é fornecida por um ou mais aplicativos hospedados de modo localizado em um ponto final. Desse modo, referências a servidores de aplicativo 300 devem ser entendidas como abrangendo aplicativos que são hospedados de modo localizado em um ou mais pontos finais. Portanto, deve-se verificar que as modalidades descritas e ilustradas no presente documento não são destinadas a serem limitadas à provisão ou exclusão de quaisquer serviços e/ou recursos particulares.
[0047] O servidor de espaço de trabalho digital 100 é configurado para gerar recomendações de funcionalidade de microaplicativo analisando-se interações entre ponto final 200 e servidores de aplicativo 300. O servidor de espaço de trabalho digital 100 pode compreender um ou mais dentre uma variedade de dispositivos de computação adequados, tal como um computador do tipo desktop, um computador do tipo laptop, uma estação de trabalho, um computador servidor de classe corporativa, um computador do tipo tablet ou qualquer outro dispositivo com capacidade de suportar as funcionalidades divulgadas no presente documento. Uma combinação de diferentes dispositivos pode ser usada em determinadas modalidades. Conforme ilustrado na Figura 2, o servidor de espaço de trabalho digital 100 inclui um ou mais módulos de software configurados para implementar determinadas funcionalidades divulgadas no presente documento assim como hardware com capacidade de possibilitar tal implementação.
[0048] O hardware de implementação pode incluir, porém, sem limitação, um processador 110, memória 120, e quaisquer outros com- ponentes adequados que possibilitam que o servidor de espaço de trabalho digital 100 interaja com outros componentes de estrutura 2000 ou usuários humanos. Exemplos de tais outros componentes incluem, porém, sem limitação, um módulo de comunicação, um barra- mento e/ou interconexão, um visor, um dispositivo de entrada textual (tal como um teclado), um dispositivo de entrada baseado em apontador (tal como um mouse), um microfone, e uma câmera. Por exemplo, um módulo de comunicações pode incluir uma ou mais interfaces para possibilitar que o servidor de espaço de trabalho digital 100 acesse uma rede de computador tal como uma rede de área local, uma rede de área ampla, uma rede de área pessoal, ou a Internet através de uma variedade de conexões com fio/sem fio, incluindo conexões celulares.
[0049] O processador 110 pode ser implementado por um ou mais processadores programáveis para executar uma ou mais instruções executáveis, tais como um programa de computador, para realizar funções divulgadas no presente documento. Conforme usados no presente documento, o termo "processador" descreve o conjunto de circuitos que realiza uma função, uma operação, ou uma sequência de operações. A função, operação, ou sequência de operações pode ser codificada permanentemente no conjunto de circuitos ou codificada não permanentemente por meio de instruções mantidas na memória 120 e executadas pelo conjunto de circuitos de processador. O processador 110 pode realizar a função, operação, ou sequência de operações com uso de valores digitais e/ou com uso de sinais análogos. Em alguns exemplos, o processador 110 pode ser incorporado em um ou mais aplicativo conjunto de circuitos integrados específicos, microprocessadores, processadores de sinal digital, unidades de processamento gráfico, microcontroladores, arranjos de porta programáveis de campo, arranjos lógicos programáveis, processadores de múltiplos núcleos, ou computadores de propósito geral com memória associada. O processador 110 pode ser análogo, digital ou misturado. O processador 110 pode ser um ou mais processadores físicos, que, em alguns casos, podem ser remotamente localizados a partir do servidor de espaço de trabalho digital 100. Um processador que inclui múltiplos núcleos de processador e/ou múltiplos processadores podem fornecer funcionalidade para execução simultânea paralela de instruções ou para execução simultânea paralela de uma instrução em mais do que uma peça de dados.
[0050] A memória 120 pode ser implementada com uso de qual quer tipo adequado de armazenamento digital, tal como um ou mais dentre um disco rígido, um arranjo redundante de discos independentes, um dispositivo de memória flash, ou um dispositivo de memória de acesso aleatório (RAM). Em determinadas modalidades, a memória 120 é usada para armazenar instruções que, quando executadas com uso do processador 110, fazem com que as operações associadas aos vários módulos descritos no presente documento sejam invocadas. A memória 120 pode incluir um ou mais tipos de RAM e/ou uma memória cache que pode oferecer um tempo de resposta mais rápido do que uma memória principal.
[0051] O software de implementação, por outro lado, pode incluir, porém, sem limitação, um serviço de microaplicativo 140, um serviço analítico de microaplicativo 150, e quaisquer outros componentes ade-quados que possibilitam que o servidor de espaço de trabalho digital 100 realize as funcionalidades divulgadas no presente documento. Exemplos de tais outros componentes incluem, porém, sem limitação, um módulo de comunicação e um sistema operacional. Em particular, um módulo de comunicação pode incluir qualquer chip de rede apropriado ou chipset com permite que conexão com fio ou sem fio a outros componentes de servidor de espaço de trabalho digital 100 e/ou à rede 500. Isso permite que o servidor de espaço de trabalho digital 100 se comunique com outros sistemas de computação locais e remotos, serviços, e recursos, cujos exemplos incluem ponto final 200 e servidores de aplicativo 300. Como outro exemplo, o servidor de espaço de trabalho digital 100 pode incluir qualquer sistema operacional adequado. Em geral, as técnicas fornecidas no presente documento podem ser implementadas sem relação ao sistema operacional particular fornecido em conjunto com o servidor de espaço de trabalho digital 100 e, portanto, também podem ser implementados com uso de qualquer plataforma existente ou subsequentemente desenvolvida adequada.
[0052] Ainda em referência à modalidade exemplificativa ilustrada na Figura 2, o serviço de microaplicativo 140 e serviço analítico de mi- croaplicativo 150 são, cada um, implementados com uso de uma mídia legível por computador não transitória (tal como memória 120) e um ou mais processadores (tais como processador 110) de um aparelho de computação. Em tais modalidades, a mídia legível por computador não transitória armazena instruções de programa executáveis pelo um ou mais processadores para fazer com que o servidor de espaço de trabalho digital 100 realize determinados aspectos das técnicas divulgadas no presente documento. Outras modalidades podem ter menos ou mais módulos, dependendo da granularidade de uma implementação particular.
[0053] Por exemplo, em determinadas modalidades, o serviço de microaplicativo 140 fornece os microaplicativos e serviços de suporte que permitem que um usuário acesse dados e funcionalidade fornecidos por um ou mais servidores de aplicativo 300. Por fim, essa estrutura permite que um usuário visualize informações e realize ações sem ter de lançar o aplicativo subjacente ou alterne para uma interface diferente. Para essa finalidade, o serviço de microaplicativo 140 inclui uma pluralidade de microsserviços 142 assim como uma biblioteca de mi- croaplicativos 144 que armazena os microaplicativos particulares. Em determinadas implementações serviço de microaplicativo 140, há um único serviço de locatário que cria, gerencia, e fornece serviços de implementação para suportar os microaplicativos armazenados na biblioteca de microaplicativos 144. Isso é concluído através de comunicações periódicas com servidores de aplicativo 300 e aquisições de dados a partir dos mesmos. Em algumas implementações, a biblioteca de microaplicativos 144 é hospedada de modo localizado no servidor de espaço de trabalho digital 100, tal como na memória 120, embora em outras implementações, a biblioteca de microaplicativos 144 seja parcial ou totalmente hospedada em um repositório de armazenamento em rede.
[0054] O serviço de microaplicativo 140 inclui um ou mais micros- serviços 142 que fornecem funcionalidade de implementação para suportar a execução dos microaplicativos armazenados na biblioteca de microaplicativos 144. Por exemplo, um microsserviço de cache de dados ativos é um serviço de locatário único que pode armazenar informações de configuração e dados de microaplicativo com uso de uma chave de criptografia de banco de dados por locatário e credenciais de banco de dados por locatário. Um microsserviço de carteira de credencial pode armazenar credenciais de serviço criptografadas para aplicativos fornecidos por servidores de aplicativo 300, assim como tokens de autenticação de usuário, tais como tokens OAuth2. Um mi- crosserviço de fornecedor de integração de dados pode (a) interagir com servidores de aplicativo 300 para descriptografar credenciais de usuário e (b) se comunicar com servidores de aplicativo 300 sob a identidade do usuário. Tais comunicações usam a conta atual do usuário para garantir que todas as ações estejam em conformidade com as políticas de dados aplicáveis. Um microsserviço de notificação processa notificações criadas no curso de interagir com servidores de aplica- tivo 300. Notificações podem ser armazenadas em um banco de dados, servidas em um feed de notificação, e/ou transmitidas como notificações de push. Um microsserviço de notificação inclui opcionalmente controles de conteúdo que são configuráveis para restringir a exposição de conteúdo sensível. Será verificado que os microsserviços descritos no presente documento representam somente alguns exemplos de microsserviços que suportam a criação, administração, e execução dos microaplicativos armazenados na biblioteca de microaplica- tivos 144. Microsserviços adicionais ou alternativos podem ser incluídos em serviço de microaplicativo 140 em outras modalidades.
[0055] Novamente em referência à Figura 2, o serviço analítico de microaplicativo 150 processa interações observadas entre o ponto final 200 e servidores de aplicativo 300, cria árvores de correlação com base nas interações observadas, e gera recomendações de funcionalidade de microaplicativo derivadas das árvores de correlação. Essas recomendações podem ser fornecidas a um administrador por meio de uma interface de usuário, e/ou podem ser usadas para gerar automaticamente novos microaplicativos. Para essa finalidade, em uma implementação, o serviço analítico de microaplicativo 150 compreende um analisador de atividade de usuário 151, um criador de árvore de correlação 152, um analisador de árvore de correlação 153, e um criador de microaplicativo 154. Cada um desses subcomponentes pode ser implementado com uso de uma mídia legível por computador não transitória que armazena instruções de programa executáveis pelo processador 110 para fazer com que o serviço analítico de microaplicativo 150 realize determinadas funcionalidades divulgadas no presente documento. Outras modalidades podem ter menos ou mais subcompo- nentes, dependendo da granularidade de uma implementação particular. Conforme ilustrado na Figura 2, em determinadas modalidades, o serviço analítico de microaplicativo 150 também inclui recursos de ar- mazenamento, tal como um banco de dados de atividade 158 para armazenar dados que representam as interações observadas e um banco de dados de árvore 159 para armazenar dados que representam as árvores de correlação. O banco de dados de atividade 158 e o banco de dados de árvore 159 podem ser hospedados de modo localizado no servidor de espaço de trabalho digital 100, tal como em memória 120, embora em outras modalidades, tais bancos de dados são parcial ou totalmente hospedados em um repositório de armazenamento em rede.
[0056] Em uma implementação exemplificativa, o analisador de atividade de usuário 151 é configurado para detectar e analisar interações entre uma pluralidade de usuários (cujo um exemplo é representado pelo ponto final 200) e uma pluralidade de servidores de aplicativo 300. Isso pode ser concluído, por exemplo, com uso de qualquer software existente ou subsequentemente desenvolvido adequado que tem capacidade de monitorar a atividade de usuário e em conformidade com as informações de uso que reflete a atividade monitorada. Por exemplo, em determinadas implementações, o analisador de atividade de usuário 151 compreende um plugin de navegador que tem capacidade de capturar interações entre um usuário e um navegador da web. Exemplos de interações monitoradas incluem, porém, sem limitação, interações de autenticação; interações entrada de dados (incluindo entrada fornecida por meio de um dispositivo de apontamento ou teclado); interações de exibição e/ou recebimento de dados; interações de mudança de contexto de aplicativo; interações de logoff; interações de fechamento de aba, página e/ou janela de navegador; interações de abertura de aba, página e/ou janela de navegador; detecção de tempo transcorrido; interações de área de transferência (incluindo corte, cópia, e colagem) e interações de comando de protocolo de transferência de hipertexto (HTTP). Em alguns casos, os dados que repre- sentam a atividade de usuário monitorada são armazenados no banco de dados de atividade 158.
[0057] Em uma implementação exemplificativa, o criador de árvore de correlação 152 é configurado para gerar, e opcionalmente ligar, árvores de correlação com base na atividade de usuário observada. Isso pode ser concluído, por exemplo, reconhecendo-se que uma dada atividade do usuário corresponde a uma sequência de ações que pode ser representada por uma ramificação particular de uma árvore de correlação. Múltiplas sequências de ações podem ser representadas por uma única árvore de correlação, por exemplo, com ações mutuamente exclusivas sendo representadas por diferentes ramificações de uma única árvore de correlação. Uma árvore de correlação cruzada de aplicativo pode ser gerada identificando-se nós em que dados comuns existem em múltiplos aplicativos, tais como em que dados são copiados de um primeiro aplicativo e colados em um segundo aplicativo. Em alguns casos, dados que representam uma ou mais árvores de correlação são salvos no banco de dados de árvore 159. Os dados usados para representar uma árvore de correlação podem ser salvos em, por exemplo, uma estrutura de memória distribuída, um banco de dados relacional, ou qualquer outra estrutura de dados adequada.
[0058] Em uma implementação exemplificativa, o analisador de árvore de correlação 153 é configurado para analisar uma coleção de árvores de correlação para identificar as ações frequentemente invocadas e/ou sequências de ações. As sequências de ações identificadas podem envolver um usuário que interage com um ou mais aplicativos. A identificação de ações frequentemente invocadas pode ser concluída, por exemplo, com uso de aprendizado de regra de associação para extrair conjuntos de ações frequentes de banco de dados de árvore 159. De modo similar, um processo de similaridade de árvore pode ser usado para agrupar árvores de correlação similares e identificar desse modo sequências de ações frequentemente invocadas. Uma sequência de ações frequentemente invocadas fornece percepção em ambas a maior parte das ações frequentemente invocadas, assim como o trajeto crítico que se estende através de múltiplos aplicativos quando ações nos múltiplos aplicativos são concatenados. Um exemplo simples de tal trajeto crítico é uma ação de cópia invocada em um primeiro aplicativo seguido por uma ação de pasta correspondente invocada em um segundo aplicativo. As técnicas divulgadas no presente documento permitem que tal trajeto crítico seja aprendido a partir da perspectiva do fluxo de trabalho do usuário, em vez da perspectiva de analisar a operação de qualquer um aplicativo.
[0059] As sequências de ações identificadas frequentemente invo cadas podem formar a base para funcionalidade de microaplicativo recomendado. Ambas as ações de usuário frequentemente invocadas e as sequências de ações frequentemente invocadas podem ser passadas ao criador de microaplicativo 154. Em determinadas implementações, o criador de microaplicativo 154 pode ser configurado para fornecer funcionalidade de microaplicativo recomendado a um administrador para aprovação. Em outras implementações, o criador de mi- croaplicativo 154 pode ser configurado para gerar automaticamente novos microaplicativos com base nas ações frequentemente invocadas identificadas ou sequências de ações. Microaplicativos gerados são opcionalmente armazenados em um repositório de microaplicativo.
[0060] Conforme notado acima, em determinadas modalidades, o ponto final 200 é incorporado em um dispositivo de computação que é usado pelo usuário. Exemplos de tal dispositivo de computação incluem, porém, sem limitação, um computador do tipo desktop, um computador do tipo laptop, um computador do tipo tablet e um telefone inteligente. O servidor de espaço de trabalho digital 100 e seus componentes são configurados para interagir com uma pluralidade de pontos fi- nais. Em uma modalidade exemplificativa, o usuário interage com uma pluralidade de aplicativos de espaço de trabalho 212 que são acessíveis através de um espaço de trabalho digital 210. São as interações do usuário com aplicativos de espaço de trabalho 212 e/ou servidores de aplicativo 300 que são analisadas pelo analisador de atividade de usuário 151 e que formam definitivamente a base para funcionalidade de microaplicativo recomendado. Quaisquer microaplicativos gerados podem ser disponibilizados ao usuário através de espaço de trabalho digital 210, permitindo assim que o usuário visualize informações e realize ações sem lançar (ou mudar de contexto para) os aplicativos de espaço de trabalho 212 subjacentes. Aplicativos de espaço de trabalho 212 podem ser fornecidos por servidores de aplicativo 300 e/ou podem ser fornecidos de modo localizado no ponto final 200. Por exemplo, exemplo aplicativos de espaço de trabalho 212 incluem um aplicativo de SaaS 310, um aplicativo da web 320 e um aplicativo corporativo 330, embora quaisquer outros aplicativos existentes ou subsequentemente desenvolvidos adequados também possam ser usados, incluindo aplicativos de proprietário e aplicativos de área de trabalho.
[0061] A Figura 3 é um fluxograma que ilustra um método exempli- ficativo 3000 para gerar recomendações de funcionalidade de microa- plicativo analisando-se sequências de interação de usuário dentro de um ou mais aplicativos. O método 3000 começa com o analisador de atividade de usuário 151 que detecta e analisa interações entre uma pluralidade de usuários (por exemplo, conforme representado pelo ponto final 200) e uma pluralidade de servidores de aplicativo 300. Consultar a referência numérica 4000 na Figura 3. Detalhes adicionais relacionados à funcionalidade fornecida por analisador de atividade de usuário 151 são fornecidos na Figura 4. O método 3000 inclui adicionalmente o criador de árvore de correlação 152 que gera árvores de correlação com base nas interações de usuário observadas. Consultar a referência numérica 5000 na Figura 3. Detalhes adicionais relacionados à funcionalidade fornecida por criador de árvore de correlação 152 são fornecidos na Figura 5. O método 3000 inclui adicionalmente o analisador de árvore de correlação 153 que explora padrões de uma coleção de árvores de correlação para identificar ações frequentemente invocadas e/ou sequências de ações. Consultar a referência numérica 6000 na Figura 3. Detalhes adicionais relacionados à funcionalidade fornecida por analisador de árvore de correlação 153 são fornecidos na Figura 6. O método 3000 inclui adicionalmente o criador de microaplicativo 154 que cria microaplicativos e/ou recomenda a funcionalidade de microaplicativo com base nas ações frequentemente invocadas e/ou sequências de ações. Consultar a referência numérica 7000 na Figura 3. Por exemplo, uma sequência de ações que se observa que um ou mais usuários invocou frequentemente define um trajeto crítico que pode formar a base para funcionalidade de microaplica- tivo recomendado.
[0062] A Figura 11 é um diagrama de blocos que ilustra esquema ticamente uma vista geral do método exemplificativo 3000 para gerar recomendações de funcionalidade de microaplicativo. Conforme discutido em mais detalhes abaixo, analisador de atividade de usuário 151 detecta atividade de usuário com base em um ponto inicial de sequência de ações identificadas 60, ponto final de sequência de ações 64, e intervindo no período de produtividade 62. A atividade de usuário detectada é armazenada no banco de dados de atividade 158. Na conclusão de uma dada sequência de ação, uma determinação é realizada em relação à possibilidade de um usuário comutar ou se associar a um segundo aplicativo, conforme indicado pela referência numérica 66. Se nenhuma tal comutação ocorrer, o fluxo de trabalho observado pode ser entendido a ter chegado a uma conclusão. Se o usuário co- meçar a usar um segundo aplicativo, sequências adicionais de ações podem ser observadas e registradas no banco de dados de atividade 158. O criador de árvore de correlação 152 usa os dados armazenados no banco de dados de atividade 158 para construir árvores de correlação que representam as sequências de ações observadas. As árvores de correlação geradas são armazenadas no banco de dados de árvore 159. O analisador de árvore de correlação 153 analisa as árvores de correlação para gerar atividade de usuário padrões 68 que representam sequências de ações frequentemente invocadas. Essas sequências de ações frequentemente invocadas servem como a base para gerar recomendações de funcionalidade de microaplicativo. Detalhes adicionais em relação à operação do analisador de atividade de usuário 151, criador de árvore de correlação 152, e analisador de árvore de correlação serão fornecidos por sua vez.
[0063] A Figura 4 é um fluxograma que ilustra uma operação de análise de atividade de usuário exemplificativa 4000 que identifica e detecta sequências de interação de usuário dentro de um ou mais aplicativos. A operação 4000 pode ser implementada, por exemplo, com uso da arquitetura de sistema ilustrada na Figura 2 e descrita no presente documento, e em particular, com uso de analisador de atividade de usuário 151. No entanto, outras arquiteturas de sistema podem ser usadas em outras implementações. Para essa finalidade, a correlação das várias funcionalidades mostradas na Figura 4 ao analisador de atividade de usuário 151 não se destina a implicar nenhuma limitação estrutural ou de uso. Em vez disso, outras implementações podem incluir, por exemplo, graus variados de integração em que determinadas funcionalidades são realizadas de modo eficaz por diferentes sistemas ou módulos. Por exemplo, em uma implementação alternativa, módulos de software separados são usados para detectar ativi- dade de usuário e armazenam a atividade detectada no banco de dados de atividade 158. Em outra implementação um módulo de software separado é usado para avaliar gramática e comandos de HTTP como um modo para detectar a atividade de usuário. Desse modo, outras modalidades podem ter menos ou mais módulos, dependendo da gra- nularidade de uma implementação particular. Conforme pode ser visto, a operação 4000 inclui várias fases e subprocessos, cuja sequência pode variar de uma implementação a outra. No entanto, quando consideradas em agregado, essas fases e subprocessos têm capacidade de detectar e analisar interações entre uma pluralidade de usuários e uma pluralidade de servidores de aplicativo 300.
[0064] Em uma implementação exemplificativa, a operação de análise de atividade de usuário 4000 funciona como um processo de base que monitora interações entre usuários e seus aplicativos em uma base em curso. As interações monitoradas podem ser entendidas como compreendendo uma pluralidade de sequências de ações distintas, sendo que cada uma das quais começa com um "ponto inicial" que é representado por um usuário particular que interage com um aplicativo particular. Cada sequência de ação termina em um "ponto final" ou "ponto de associação". Um ponto final se refere a uma interação final entre o usuário particular e o aplicativo particular, enquanto um ponto de associação se refere a um ponto final que forma uma ligação à funcionalidade fornecida por um segundo aplicativo. Desse modo, embora possa-se dizer que o analisador de atividade de usuário 151 monitore interações entre uma pluralidade de usuários e uma pluralidade de aplicativos em um sentido geral, em um analisador de nível mais fino 151 pode ser entendido como detectando e registrando sequências de ações distintas entre um usuário particular e um aplicativo particular.
[0065] Para essa finalidade, mesmo em que a operação de análise de atividade de usuário 4000 possa ser entendida como um processo de base de execução contínua, um processo exemplificativo de detecção e registo de uma sequência de ação distinta pode ser entendido como sendo quando um ponto inicial é detectado. Consultar a referência numérica 4110 na Figura 4. Em um sentido geral, um ponto inicial pode ser entendido como o ponto no qual um usuário particular começa uma sequência de interações com um aplicativo particular. Por exemplo, em uma implementação analisador de atividade de usuário 151 detecta um ponto inicial em resposta à observação de uma intera-ção de login, tal como uma interação de autenticação de usuário com uso de autenticação de senha, autenticação biológica e/ou autenticação pareada. A interação de login pode usar técnicas padrão proprietárias e/ou abertas para trocar dados de autenticação, cujo um exemplo é o padrão aberto de Linguagem de Marcação de Asserção de Segurança. O analisador 151 pode detectar um ponto inicial em resposta à observação de uma interação de assinatura única (SSO). A interação de SSO observada pode ser gerenciada por um provedor de gerenciamento de identidade tal como Okta, Inc. (São Francisco, CA). O ana-lisador de atividade de usuário 151 pode ser configurado para detectar outros tipos de interações de login em outras modalidades.
[0066] Uma atividade de navegador de usuário pode formar, adici onal ou alternativamente, a base para detectar um ponto inicial. Por exemplo, em uma implementação, uma ação do usuário ao inserir um locador de recurso uniforme (URL) alvo é detectada como um ponto inicial. Um URL pode ser inserido manualmente, por meio de um marcador salvo, por meio de redirecionamento de outro URL, ou por meio de um aplicativo de SaaS lançado a partir de um espaço de trabalho digital.
[0067] Conforme notado acima, uma sequência de ação distinta pode ser entendida como sendo com um ponto inicial e terminando em um ponto final ou ponto de associação. Desse modo, em uma modali- dade depois de detectar o ponto inicial, o analisador de atividade de usuário 151 detecta um ponto final ou ponto de associação. Consultar a referência numérica 4120 na Figura 4. O ponto final ou ponto de associação pode ser detectado com uso de técnicas que são similares a aquelas usadas para detectar o ponto inicial. Um ponto final pode ser detectado como tendo ocorrido quando um usuário completa uma sequência de ações sem mudar de contexto de um primeiro aplicativo. Um ponto de associação, por outro lado, pode ser detectado como tendo ocorrido quando um usuário completa uma sequência de ações com uso de um primeiro aplicativo, obtém resultados ou outros dados desse primeiro aplicativo, e então muda de contexto para um segundo aplicativo. Depois de mudar de contexto, o usuário pode iniciar uma segunda sequência de ação distinta no segundo aplicativo com uso dos resultados ou outros dados obtidos do primeiro aplicativo.
[0068] Por exemplo, em uma implementação, o analisador de ati vidade de usuário 151 detecta um ponto final ou ponto de associação em resposta à observação de uma ação de logoff, ação de navegação de fechamento de página, ação completa de envio, ou outra ação de usuário substancialmente similar. Em outras implementações, o ponto final ou ponto de associação pode ser detectado em resposta a uma página de aplicativo, aba de navegador, ou outra interface de usuário focada que detecta um "tempo transcorrido" ou outro período designado de inatividade. Em ainda outras implementações, o analisador 151 detecta um ponto final ou ponto de associação em resposta à observação de determinadas ações associadas a uma área de transferência, tal como um comando de cópia em sequência (por exemplo, quando um usuário copia um identificador de pedido de aquisição ou quando um usuário copia um tíquete de serviço), um comando de cópia de arquivo (por exemplo, quando um usuário transfere por downlo-ad um arquivo ou quando um usuário salva um arquivo a um local ou recurso de armazenamento baseado em nuvem), ou um comando de cópia de URL.
[0069] O analisador 151 inclui opcionalmente um submódulo com capacidade de avaliar a gramática e comandos de HTTP como um modo para detectar um ponto final ou ponto de associação. Por exemplo, um ponto final ou ponto de associação pode ser detectado em resposta à observação de um comando de HTTP que retorna código, posta dados, obtém dados, ou retorna um identificador de tipo de conteúdo. Tal submódulo opcionalmente capaz de avaliar o corpo de comandos de HTTP para identificar sequências particulares que são indicativas de um ponto final ou ponto de associação, tal como "tchau" ou "tarefa concluída". Um plugin de navegador é adicional ou alternativamente usado para detectar interações de usuário com um navegador da web.
[0070] O analisador de atividade de usuário 151 pode ser entendi do como detectando e registrando uma sequência de ação distinta que começa com o ponto inicial detectado e termina com o ponto final ou ponto de associação detectado. Entre o começo e o final da sequência de ações, há um "período de produtividade". A operação de análise de atividade de usuário 4000 inclui adicionalmente identificar ações de usuário durante esse período de produtividade. Consultar a referência numérica 4140 na Figura 4. O analisador 151 pode ser configurado para detectar e identificar quaisquer ações de usuário relevantes que ocorrem durante o período de produtividade. Exemplos de tais ações incluem, porém, sem limitação, operações de abertura de página; operações de abertura de aba de navegador; operações de abertura de janela; operações de abertura de usuário (incluindo, por exemplo, entrada de movimento fornecida por meio de um dispositivo de apontamento e entrada textual fornecida por meio de um teclado); ações de novo foco que fazem com que uma janela particular ou interface se tornem ativas (também denominadas como ações de comutação de contexto); e ações de área de transferência, tais como um comando de colagem associado a uma fonte do conteúdo colado. Será verificado que a lista precedente é fornecida por meio de exemplo, e que, em geral, qualquer ação detectável relevante pode ser identificada durante o período de produtividade. Em alguns casos, a entrada de usuário detectada pode ser definida em termos de uma taxa de ações detectadas por período de tempo, e o período de produtividade pode ser entendido como continuando até que a taxa de ações detectadas esteja abaixo de um limiar estabelecido.
[0071] A Figura 4 ilustra uma sequência de operações em que um ponto inicial e ponto final (ou ponto de associação) são detectados antes de as ações de usuário no período de produtividade serem identificadas. Isso pode ser concluído analisando-se um log registrado de atividade de usuário, em que o ponto inicial e ponto final (ou ponto de associação) são identificados em uma operação inicial, e então ações de intervenção no período de produtividade são identificados em uma operação subsequente. No entanto, será verificado que essas operações podem ser invocadas em uma sequência diferente em outras implementações. Por exemplo, em uma implementação alternativa, um ponto inicial é identificado primeiro, ações no período de produtividade são identificadas, e então um ponto final (ou ponto de associação) é detectado. Desse modo, deve-se verificar que a sequência exemplifi- cativa de operações ilustradas na Figura 4, e a sequência na qual tais operações são descritas nesse aplicativo, não são limitadores.
[0072] Uma ampla faixa de instrumentação existente, telemetria, e plataformas de geração de percepção de negócios tem capacidade de capturar a maioria ou todas as atividades de navegador. Um exemplo de tal plataforma é Citrix Insight Services fornecida por Citrix Systems, Inc. (Ft. Lauderdale, FL). Uma ampla faixa de plugins de navegador também pode detectar uma atividade de navegador de usuário. De modo similar, um submódulo com capacidade de avaliar gramática e comandos de HTTP pode ser usada para detectar um ponto inicial, um ponto final (ou um ponto de associação), e/ou outra atividade de usuário de intervenção. Quaisquer ferramentas existentes ou subsequentemente desenvolvidas adequadas tais como essas podem ser usadas para detectar um ponto inicial, um ponto final ou ponto de associação, e ações de usuário em um período de produtividade de intervenção. Adicionalmente, conforme notado, um log registrado de atividade de usuário pode ser adicional ou alternativamente usado para detectar e identificar ações de usuário relevantes. Tal atividade de usuário log pode ser configurada para registrar quaisquer das várias ações divulgadas no presente documento, assim como outras ações relevantes, incluindo ações de atalho de usuário. Em alguns casos, as ações de usuário podem ser derivadas ou abstraídas de fluxos de trabalho de negócio estabelecidos.
[0073] Em uma implementação exemplificativa, dados que definem um ponto inicial detectado, um ponto final ou ponto de associação de-tectado, e ações relevantes de intervenção de usuário podem ser ar-mazenadas no banco de dados de atividade 158. Consultar a referência numérica 4150 na Figura 4. Essa operação de armazenamento op-cionalmente ocorre qualquer em qualquer tempo depois de os dados relevantes serem adquiridos. Desse modo, por exemplo, em uma mo-dalidade alternativa, os dados que definem um ponto inicial são arma-zenados no banco de dados de atividade 158 imediatamente depois que o ponto inicial é detectado. Conforme notado acima, a operação de análise de atividade de usuário 4000 pode ser entendida como um processo de base de execução contínua que monitora interações entre usuários e seus aplicativos. Desse modo, depois que os dados relevantes são armazenados, uma determinação pode ser realizada em relação à possibilidade de o usuário observado se associar a um segundo aplicativo. Consultar a referência numérica 4160 na Figura 4. Em caso positivo, por exemplo, em um caso em que a sequência de ação distinta termina com um ponto de associação, outra sequência de ação distinta pode ser analisada. Em caso negativo, a operação 4000 pode ser entendida como terminando, pelo menos em relação a uma sequência de ação distinta. Em um sentido mais amplo, a operação 4000 pode ser entendida como terminando em relação a uma sequência de ação distinta, enquanto continua a monitorar e analisar outras interações entre um usuário e um aplicativo.
[0074] A Figura 5 é um fluxograma que ilustra uma operação de geração de árvore de correlação 5000 exemplificativa que cria e liga árvores de correlação que representam sequências de interação de usuário observadas dentro de um ou mais aplicativos. A operação 5000 pode ser implementada, por exemplo, com uso da arquitetura de sistema ilustrada na Figura 2 e descrita no presente documento, e em particular, com uso de criador de árvore de correlação 152. No entanto, outras arquiteturas de sistema podem ser usadas em outras implementações. Para essa finalidade, a correlação das várias funcionalidades mostradas na Figura 5 ao criador de árvore de correlação 152 não se destina a implicar nenhuma limitação estrutural ou de uso. Em vez disso, outras implementações podem incluir, por exemplo, graus variados de integração em que determinadas funcionalidades são realizadas de modo eficaz por diferentes sistemas ou módulos. Por exemplo, em uma implementação alternativa, os módulos de software separados são usados para definir uma árvore de correlação e identificar operações de associação que podem se ligar a árvores de correlação. Desse modo, outras modalidades podem ter menos ou mais módulos, dependendo da granularidade de uma implementação particular. Con- forme pode ser visto, a operação 5000 inclui várias fases e subproces- sos, cuja sequência pode variar de uma implementação a outra. No entanto, quando consideras no agregado, essas fases e subprocessos têm capacidade de detectar e analisar interações entre uma pluralidade de usuários e uma pluralidade de servidores de aplicativo 300.
[0075] Em uma implementação exemplificativa, a operação de ge ração de árvore de correlação 5000 funciona como um processo de base que monitora atividade de usuário registrada, tal como atividade de usuário registrada no banco de dados de atividade 158. Em alguns casos, a operação 5000 é invocada quando novos dados são registrados no banco de dados de atividade 158, embora outros gatilhos podem ser usados em outras modalidades. Por exemplo, em uma implementação alternativa, a operação 5000 é invocada em uma base periódica ou é invocada em resposta a um comando de usuário, tal como um comando invocado por um administrador de servidor de espaço de trabalho digital 200. Independentemente do evento ou condição de disparo, a operação de geração de árvore de correlação 5000 começa quando os conjuntos de usuário relacionada são identificados no banco de dados de atividade 158. Consultar a referência numérica 5110 na Figura 5. Um conjunto de ações pode ser relacionado pelo fato de que, coletivamente, as ações representam uma ou mais sequências de ações tomadas por um usuário particular que interage com um aplicativo particular. Um conjunto de ações relacionadas é desse modo entendido como sendo correlacionado com um aplicativo particular. As ações podem ser relacionadas em virtude de pelo menos uma ação que liga múltipla sequências de ações, tal como um ponto de inicial comum (por exemplo, uma operação de autenticação de usuário inicial). As ações relacionadas podem, portanto, incluir múltiplas sequências de ações, pelo menos algumas das quais são mutuamente exclusivas. Tal exclusividade mútua pode ocorrer em que, por exemplo, um usuário precisa escolher entre duas ações mutuamente exclusivas (por exemplo, deletar ou salvar um objeto de dados).
[0076] Uma primeira árvore de correlação pode ser então definida com base em um conjunto de ações relacionadas realizadas em um primeiro aplicativo. Consultar a referência numérica 5120 na Figura 5. De modo similar, uma segunda árvore de correlação pode ser definida com base em um conjunto de ações relacionadas realizadas em um segundo aplicativo. Consultar a referência numérica 5140 na Figura 5. Em geral, uma árvore de correlação pode ser criada definindo-se um nó para cada ação de usuário no conjunto de ações relacionadas, em que ações sequenciais (ou seja, nós) são ligadas por uma borda. Exemplos de ações que podem ser representadas por um nó incluem uma ação de clique de mouse, uma ação de seleção de URL, uma ação de seleção de botão, uma ação de entrada de dados e uma ação de geração de dados. As ações observadas de usuário, conforme registrado no banco de dados de atividade 158, podem ser correlacionadas às sequências de ações distintas. Essas sequências de ações identificadas podem ser usadas para definir uma ou mais árvores de correlação. As árvores de correlação definidas podem ser incorporadas em uma estrutura de dados armazenada em uma mídia legível por computador. Uma árvore de correlação não precisa ser, e de fato, em muitas implementações, não será, renderizada ou exibida em um formato legível por humano.
[0077] A Figura 7 ilustra uma árvore de correlação de aplicativo único que representa sequências de interação de usuário exemplifica- tivas dentro de um aplicativo Jira 20. Jira é um produto de software de rastreamento de problema proprietário desenvolvido por Atlassian (Sydney, Austrália). A árvore de correlação ilustrada na Figura 7 inclui uma pluralidade de nós, cada uma das quais corresponde a uma interação de usuário observado (ou seja, ação) com o aplicativo Jia 20. Ações exemplificativas incluem "criar epic" (representado por nó 21), "mudar destinatários de históricos de ligação" (representado pelo nó 22), "pesquisar históricos" (representado pelo nó 23), "ligar histórico a epic" (representado pelo nó 24), "mudar destinatário de histórico" (representado pelo nó 25), "enviar notificação de e-mail" (representado pelo nó 26), e "copiar URL epic para a área de transferência" (representado pelo nó 27). A árvore de correlação exemplificativa ilustrada na Figura 7 pode ser gerada com base em interações observadas entre um ou mais usuários com aplicativo Jira 20, conforme identificado e detectado com uso das técnicas de análise de atividade de usuário divulgadas no presente documento. No entanto, será verificado que árvores de correlação também podem ser geradas de dados coletados com uso de outras técnicas de coleta e monitoramento de dados. Os nós são conectados por bordas direcionais, em que uma sequência de nós conectados representa uma sequência de ações realizadas por um usuário que interage com o aplicativo Jira 20.
[0078] Por exemplo, considere um usuário do aplicativo Jira 20 que curou uma grande quantidade de históricos. O usuário deseja criar um epic e ligar alguns dos históricos existentes ao epic recém-criado. Primeiro, o usuário se registra no aplicativo Jira 20 e cria um epic inserindo-se dados relevantes, conforme representado pelo nó 21. Em seguida, o usuário pesquisa por históricos relevantes, conforme representado pelo nó 23. Finalmente, o usuário abre uma aba de navegador da web para um histórico selecionado e modifica o histórico selecionado para ligar o mesmo ao epic recém-criado, conforme representado pelo nó 24. A sequência resultante de ações "criar epic", "pesquisar por históricos", e "ligar histórico a epic" pode ser visto como uma série de nós conectados por bordas na árvore de correlação ilustrada na Figura 7. Outras sequências de ações são possíveis, tais como quando um usuário muda o destinatário para um histórico depois de realizar uma pesquisa (conforme representado pelo nó 25) ou quando um usuário muda a destinatário de um histórico de ligação depois de criar o novo epic (conforme representado pelo nó 22). Ainda outra possível sequência de ação ocorre quando um usuário insere descrição aplicável a todos os históricos ligados depois de criar o novo epic.
[0079] Nesses exemplos, a primeira ação na sequência ("criar epic") pode ser entendida como um ponto inicial. De modo similar, a última ação em cada sequência ("mudar destinatários de armazenamentos de ligação", "ligar histórico a epic", ou "ligar histórico a epic") pode ser entendido como um ponto final ou um ponto de associação. Um ponto final especificamente se refere à última ação em um fluxo de trabalho que é limitado a um único aplicativo. Por exemplo, "enviar notificação de e-mail" pode ser entendido como sendo um ponto final que é alcançado depois que um novo epic é criado. Na árvore de correlação exemplificativa ilustrada na Figura 7, um nó ("copiar URL de epic para área de transferência") é identificado como um ponto de associação que serve como uma ligação à funcionalidade fornecida por um segundo aplicativo, conforme será discutido, por sua vez. A árvore de correlação pode ser gerada correlacionando-se as atividades de usuário observado com base nas várias sequências nas quais as atividades foram observadas como tendo ocorrido.
[0080] A operação de geração de árvore de correlação 5000 conti nua com identificar pontos de associação que ligam a primeira e a segunda árvores de correlação. Consultar a referência numérica 5150 na Figura 5. Um ponto de associação pode ser entendido como ligando a funcionalidade fornecida por um primeiro aplicativo (conforme representado pela primeira árvore de correlação) e funcionalidade fornecida por um segundo aplicativo (conforme representado pela segunda árvore de correlação). Por exemplo, a Figura 8 ilustra uma árvore de correlação cruzada de aplicativo que representa sequências de interação de usuário exemplificativas dentro tanto do aplicativo Jira 20 quanto de um aplicativo Git 30. Adicionalmente aos nós ilustrados na Figura 7, a árvore de correlação cruzada de aplicativo inclui adicionalmente nós que representam as ações "criar ramificação de Git colando-se o URL de epic" (representado pelo nó 31), "comutar repositório local para nova ramificação" (representado pelo nó 32), e "atualizar leia-me" (representado pelo nó 33).
[0081] Considerar o usuário supracitado de aplicativo Jira 20. Me diante criação de novo epic, o usuário tem capacidade de copiar um URL e/ou identificador de tíquete para o novo epic. O usuário então abre o aplicativo Git 30, cria uma nova ramificação, e cola o URL de epic copiado e/ou identificador de tíquete na ramificação recém-criada. Essa ação no aplicativo Git é representada pelo nó 31 na Figura 8. Nesse exemplo, o aplicativo Jira 20 fornece funcionalidade para copiar um URL de epic e/ou identificador de tíquete a uma área de transferência, e aplicativo Git 30 fornece funcionalidade para criar uma ramificação de Git com uso do URL de epic como colada da área de transferência. Isso estabelece uma correlação entre atividades de usuário no aplicativo Jira 20 e aplicativo Git 30. Mais especificamente, esses aplicativos são correlacionados como um resultado de observar que o usuário copiou conteúdo do aplicativo Jira 20 e colou esse conteúdo no aplicativo Git 30. A operação de colagem de cópia e conteúdo copiado associado (o URL de epic ou identificador de tíquete) fornecem a ligação que estabelece a correlação entre os dois aplicativos e, adicionalmente, que estabelece o nó 27 como um ponto de associação para criar uma árvore de correlação cruzada de aplicativo.
[0082] Embora a Figura 8 ilustre uma árvore de correlação exem- plificativa de aplicativo cruzado com base em um usuário que copia um URL de epic e/ou identificador de tíquete em uma nova ramificação de Git, será verificado que essa funcionalidade é divulgada como somen- te um exemplo de uma faixa essencialmente ilimitada de funcionalidades que que podem ligar dois ou mais aplicativos. Por exemplo, em outra implementação, um usuário acessa uma reserva de viagem com uso de um aplicativo de e-mail, copia um número de confirmação, e cola o número de confirmação em um gerenciador financeiro para efetuar pagamento para a reserva de viagem. De modo mais geral, quando dados passam de um aplicativo a outro como parte de um fluxo de trabalho abrangente, uma árvore de correlação cruzada de aplicativo pode ser usada para representar a funcionalidade fornecida por tal fluxo de trabalho. Outros exemplos de ações que pode servir como pontos de associação entre dois aplicativos incluem, porém, sem limitação, entrada e saída de aplicativo (tal como um URL gerado por Jira para um novo epic), conteúdo de aplicativo (tal como um identificador de tíquete de Jira), e ações de usuário firmemente unidas (tal como ações de copiar e colar e aplicativos de transferência de arquivo).
[0083] Embora o nó 27 seja fornecido como um ponto de associa ção nas árvores de correlação exemplificativas ilustradas nas Figuras 7 e 8, em implementações alternativas, o nó 27 pode não ser um ponto de associação, tal como em um fluxo de trabalho em que o URL copiado é colado dentro do mesmo aplicativo Jira 20, por exemplo, dentro de uma subpágina dentro de aplicativo Jira 20. Desse modo, a possibilidade de uma dada ação ser identificada como um ponto de associação pode depender da possibilidade de ações subsequentemente observadas são realizadas dentro de um mesmo aplicativo ou aplicativo diferente.
[0084] Identificar pontos de associação serve como a base para ligar funcionalidade entre aplicações diferentes, e desse modo, para gerar árvores de correlação cruzada de aplicativo. Em geral, quando um usuário completa uma sequência de ações em um primeiro aplicativo, isso pode ser entendido como resultante em dados de saída, tais como dados de arquivo copiados em uma área de transferência ou outra estrutura de dados. O usuário então move a um segundo aplicativo e realiza ações adicionais com uso dos dados gerados pelo primeiro aplicativo. Um exemplo disso é representado pelas operações de copiar e colar que ligam o aplicativo Jira 20 e aplicativo Git 30 ilustrados na Figura 8. A atividade de usuário pode ser correlacionada através de múltiplos aplicativos quando os mesmos dados existem nos múltiplos aplicativos. A árvore de correlação cruzada de aplicativo resultante pode ser entendida como existente em um espaço de trabalho que é independente de qualquer um aplicativo. O comportamento de usuário é, portanto, aprendido identificando-se pontos finais e pontos de associação com base em fluxos de trabalho observados e, em particular, pode ser aprendido sem se focar em interações de usuário com qualquer um aplicativo. Embora a Figura 8 ilustre uma árvore de correlação exemplificativa de aplicativo cruzado ligando a funcionalidade fornecida por aplicativo Jira 20 e aplicativo Git 30, em geral, qualquer número adequado de aplicativos pode ser ligado em uma árvore de correlação cruzada de aplicativo.
[0085] Em alguns casos, nenhum ponto de associação pode ser identificado, tal como em que uma sequência de ações forma um fluxo de trabalho independente que existe dentro de um único aplicativo, e que não se liga à funcionalidade fornecida por outros aplicativos. Desse modo, uma determinação é realizada em relação à possibilidade de qualquer associação ser identificada. Consultar a referência numérica 5160 na Figura 5. Se um ponto de associação for identificado, a primeira e a segunda árvores de correlação podem ser ligadas para definir uma árvore de correlação cruzada de aplicativo. Consultar a referência numérica 5170 na Figura 5. Conforme notado acima, a Figura 8 ilustra um exemplo de uma árvore de correlação cruzada de aplicativo. Não é necessário, de fato, renderizar a árvore de correlação cruzada de aplicativo em um formato legível por humano. Dados que representam a árvore de correlação cruzada de aplicativo podem ser então salvas no banco de dados de árvore 159. Consultar a referência numérica 5180 na Figura 5. Se nenhum ponto de associação entre a primeira e a segunda árvores de correlação for identificado, então dados que representam a primeira e a segunda árvores de correlação podem ser salvos no banco de dados de árvore 159. Consultar a referência numérica 5190 na Figura 5. Em alguns casos, dados que representam a primeira e a segunda árvores de correlação como elementos distintos são salvos no banco de dados de árvore 159 mesmo em casos um ponto de associação ser identificado, embora isso não seja necessário. Os dados usados para representar uma árvore de correlação podem ser salvos em, por exemplo, uma estrutura de memória distribuída, um banco de dados relacional, ou qualquer outra estrutura de da-dos adequada.
[0086] Em uma implementação alternativa, a operação de geração de árvore de correlação 5000 é modificada para definir e salvar uma única árvore de correlação. Em tais implementações, árvores de correlação individuais podem ser definidas e salvas em uma fase operacional inicial, e pontos de associação que ligam as árvores de correlação definidas podem ser identificados em uma fase operacional subsequente. Portanto, deve-se verificar que a sequência de operações ilustrada na Figura 5 pode ser modificada em outras implementações.
[0087] A Figura 6 é um fluxograma que ilustra uma operação de análise de árvore de correlação exemplificativa 6000 que analisa uma coleção de árvores de correlação para identificar ações de usuário fre-quentemente invocadas e sequências de ações dentro de um ou mais aplicativos. A operação 6000 pode ser implementada, por exemplo, com uso da arquitetura de sistema ilustrada na Figura 2 e descrita no presente documento, e em particular, com uso de analisador de árvore de correlação 153. No entanto, outras arquiteturas de sistema podem ser usadas em outras implementações. Para essa finalidade, a correlação das várias funcionalidades mostradas na Figura 6 ao analisador de árvore de correlação 153 não se destina a implicar nenhuma limitação estrutural ou de uso. Em vez disso, outras implementações podem incluir, por exemplo, graus variados de integração em que determinadas funcionalidades são realizadas de modo eficaz por diferentes sistemas ou módulos. Por exemplo, em uma implementação alternativa, módulos de software separados são usados para extrair conjuntos de ações frequentes de banco de dados de árvore 159 e para agrupar árvores de correlação similares. Desse modo, outras modalidades podem ter menos ou mais módulos, dependendo da granularidade de uma implementação particular. Conforme pode ser visto, a operação 6000 inclui várias fases e subprocessos, cuja sequência pode variar de uma implementação a outra. No entanto, quando consideradas em agregado, essas fases e subprocessos têm capacidade de detectar e analisar interações entre uma pluralidade de usuários e uma pluralidade de servidores de aplicativo 300.
[0088] Em uma implementação exemplificativa, a operação de análise de árvore de correlação 6000 funciona como um processo de base que monitora uma estrutura de dados que tem dados que representam uma pluralidade de árvores de correlação, tais como banco de dados de árvore 159. Em alguns casos, a operação 6000 é invocada quando novos dados são registrados no banco de dados de árvore 159, embora outros gatilhos podem ser usados em outras implementações. Por exemplo, em uma implementação alternativa, a operação 6000 é invocada em uma base periódica ou é invocada em resposta a um comando de usuário, tal como um comando invocado por um administrador de servidor de espaço de trabalho digital 200. Independen- temente do evento ou condição de disparo, em uma implementação, a operação de análise de árvore de correlação 6000 começa quando conjuntos de ações frequentes são identificados e extraídos do banco de dados de árvore 159 com uso de aprendizado de regra de associação. Consultar a referência numérica 6110 na Figura 6. Isso é ilustrado esquematicamente na Figura 9, em que atividades de usuário 50, re-presentadas por uma pluralidade de árvores de correlação 50a armazenadas no banco de dados de árvore 159, são processadas com uso de aprendizado de regra de associação 52 para gerar uma pluralidade de conjuntos de ações frequentes 54. Conjuntos de ações frequentes 54 podem formar a base para funcionalidade de microaplicativo recomendado e, em particular, podem formar parte de um trajeto crítico que se estende através de múltiplos aplicativos conectados por um ou mais pontos de associação.
[0089] Conforme notado acima, em determinadas implementa ções, os conjuntos de ações frequentes são identificados com uso de aprendizado de regra de associação. Aprendizado de regra de associação se refere a uma classe de técnicas de aprendizado por máquina que têm capacidade de constatar relações entre variáveis em um grande banco de dados, e particularmente relevante a esta divulgação, para constatar os padrões mais frequentes e/ou relevantes em tal banco de dados. No contexto de analisar uma coleção de árvores de correlação 50a, o aprendizado de regra de associação pode ser usado para inferir uma relação causal entre ações individualmente observadas de usuário. Por exemplo, o aprendizado de regra de associação pode ser usado para inferir que, quando é observado que um usuário invocou a atividade de sequência-1 ^ atividade-2 ^ atividade-3, então é provável que o usuário invocará em seguida a atividade-4. Muitos algoritmos diferentes foram desenvolvidos para gerar regras de associação, incluindo o algoritmo de crescimento de padrão frequente ("crescimento de FP"). Os conjuntos de ações frequentes identificados formam a base para recomendar funcionalidade de microaplicativo particular e para possibilitar que o criador de microaplicativo 154 implemente a funcionalidade recomendada.
[0090] Conforme ilustrado na Figura 9, o aprendizado de regra de associação pode ser usado não somente para gerar conjuntos de ações frequentes 54, mas também valores de suporte correspondentes para os mesmos. Valores de suporte representam a frequência na qual é observado que um conjunto de ações particular ocorre, em que um alto grau de suporte representa um conjunto de ações frequentemente observadas. Quando uma relação causal é identificada, tal como em que a atividade de sequência-1 ^ atividade-2 ^ atividade-3 é prevista para ser seguida pela atividade-4, a atividade prevista (ativi- dade-4 nesse exemplo) pode ser associada a um grau de suporte. Se a relação causal tiver um grau suficientemente alto de suporte, por exemplo, que excede um limiar estabelecido, a atividade prevista pode ser identificada como uma ação frequentemente observada. Consultar a referência numérica 6120 na Figura 6. Nesse caso, a ação frequentemente observada identificada pode ser representada como corres-pondente a ações frequentemente observadas 14 ilustradas na Figura 1. Conforme notado acima, em uma implementação, o algoritmo de crescimento de FP é usado para identificar conjuntos de ações frequentes 54 e seus valores de suporte correspondentes. As ações frequentemente observadas podem ser usadas para gerar funcionalidade de microaplicativo recomendado que é definitivamente fornecida ao criador de microaplicativo 154. Consultar a referência numérica 6170 na Figura 6.
[0091] O aprendizado de regra de associação, incluindo técnicas de descoberta de padrão frequente, tais como o algoritmo de crescimento de FP supracitado, também podem ser usados que derivam pa drões de conjuntos de ações frequentes 54, conforme representado pela geração de padrão 56 ilustrada na Figura 9. Esses padrões representam um trajeto crítico que se estende através de múltiplos aplicativos quando ações nos múltiplos aplicativos são concatenados. Cada padrão identificado é opcionalmente associado ao valor de confiabilidade correspondente.
[0092] Adicionalmente ao uso de árvores de correlação para iden tificar ações frequentemente observadas, árvores de correlação também podem ser usadas para identificar um trajeto crítico e pontos de associação correspondentes que representam uma sequência de interações de usuário que forma a base para funcionalidade de microapli- cativo recomendado. Desse modo, em modalidades alternativas, a operação 6000 começa quando um algoritmo de similaridade de árvore é usado para agrupar árvores de correlação similares. Consultar a referência numérica 6140 na Figura 6. Isso é ilustrado esquematicamente na Figura 10, em que atividades de usuário 50, representadas por uma pluralidade de árvores de correlação 50a armazenadas no banco de dados de árvore 159, são processados com uso de um algoritmo de similaridade de árvore para gerar uma pluralidade de grupos de árvores de correlação 58a. Grupos de árvores de correlação 58a podem ser coletivamente denominados como árvores de correlação agrupadas 58.
[0093] Um exemplo de um algoritmo de similaridade de árvore que pode ser usado em relação a isso é divulgado em Xu, "An Algorithm for Comparing Similarity Between Two Tree", tese enviada em cumprimento parcial dos requisitos para o grau de Mestre da Ciência no Departamento de Ciência de computação na Escola de Graduação da Universidade de Duke, enviada em 13 de agosto de 2015, recuperada a partir de <https://arxiv.org/pdf/1508.03381.pdf>. Outros algoritmos de similaridade de árvore existentes ou subsequentemente desenvolvidos adequados podem ser usados em outras modalidades. Em um alto nível, esse algoritmo pode ser entendido como calculando uma distância entre duas árvores, em que árvores similares são separadas por uma distância menor. Por exemplo, considere Árvores A, B, C e D, em que a distância dij separa as árvores i e j. Se dAB e dCD são ambos menores do que dAC e dBD, então, pode-se concluir que (a) Árvores A e B são similares entre si e desse modo, devem ser agrupados, e (b) Árvores C e D são similares entre si e, desse modo, devem ser agrupados.
[0094] Uma vez que as árvores de correlação agrupadas 58 são organizadas com uso de um algoritmo de similaridade de árvore, uma determinação pode ser realizada em relação à possibilidade de um grupo de árvore de correlação particular 58a inclui mais do que um número limítrofe de árvores de correlação. Consultar a referência numérica 6150 na Figura 6. Em caso negativo, qualquer sequência de ação correspondente às árvores de correlação agrupadas é entendida como sendo invocada de modo demasiadamente infrequente para suportar uma recomendação de funcionalidade de microaplicativo. Por outro lado, se o grupo de árvores de correlação 58a inclui mais do que o número limítrofe de árvores de correlação então um trajeto crítico 59 pode ser derivado de uma árvore representativa 59a do grupo de árvores de correlação 58a Suficientemente grande. Consultar a referência numérica 6160 na Figura 6. Em uma implementação, a árvore representativa 59a é definida por nós comuns a partir do grupo de árvores de correlação 58a suficientemente grande O trajeto crítico pode ser usado para gerar funcionalidade de microaplicativo recomendado que é definitivamente fornecida ao criador de microaplicativo 154. Consultar a referência numérica 6170 na Figura 6.
[0095] Uma vez que a funcionalidade de microaplicativo recomen dado foi definida, tais recomendações podem ser passadas ao criador de microaplicativo 154. O criador de microaplicativo 154 é configurado para criar microaplicativos e/ou recomendar funcionalidade de microa- plicativo com base nas ações frequentemente invocadas e/ou sequências de ações. Microaplicativos podem ser gerados automaticamente e/ou recomendações podem ser realizadas a um administrador que toma uma decisão final em relação a qual funcionalidade de microapli- cativo será definitivamente empregada, por exemplo, por meio de um espaço de trabalho digital. Isso permite que a funcionalidade de micro- aplicativo seja desenvolvida a partir de um grande número de usuários que trabalham em uma gama diversa de contextos de uso, permitindo desse modo que padrões de uso de aplicativo sejam identificados de modo que poderia ser difícil ou mesmo impossível para um analista humano. Isso também permite que recomendações de funcionalidade de microaplicativo sejam especificamente adaptados a uma função específica e os padrões de uso de aplicativo associados a essa função. Criando-se precisamente recomendações de microaplicativo individualmente adaptadas pode não ser viável para um analista humano, particularmente em uma grande organização. A funcionalidade de mi- croaplicativo que é amplamente adaptada para as necessidades de usuários particulares e grupos de trabalho particulares definitivamente levarão a experiência de usuário e produtividade aprimorados.
[0096] A descrição precedente e desenhos de várias modalidades são apresentados a título de exemplo somente. Esses exemplos não se destinam a serem exaustivos ou a limitar a invenção às formas precisas divulgadas. Alterações, modificações, e variações serão evidentes em luz desta divulgação e são destinadas a estarem dentro do escopo da invenção conforme apresentado nas reivindicações. Além disso, a fraseologia e a terminologia usadas no presente documento têm o propósito de descrição e não devem ser consideradas como limitan- tes. Quaisquer referências a exemplos, componentes, elementos, ou ações dos sistemas e métodos no presente documento referidos no singular também pode abranger exemplos incluindo uma pluralidade, e quaisquer referências no plural a qualquer exemplo, componente, elemento ou ações no presente documento também podem abranger exemplos incluindo somente uma singularidade. Referências na forma singular ou plural não são destinadas a limitar os sistemas ou métodos atualmente divulgados, seus componentes, ações ou elementos. O uso no presente documento de "incluir", "compreender", "ter", "conter", "envolver", e variações dos mesmos se destina a abranger os itens listados após os mesmos e equivalentes dos mesmos assim como itens adicionais. Referências a "ou" podem ser interpretadas como inclusivas de modo que quaisquer termos descritos com uso de "ou" possam indicar quaisquer dentre um único, mais do que um, e todos os termos descritos.
Claims (20)
1. Método para gerar recomendações de microaplicativo, o método caracterizado pelo fato de que compreende: receber dados observacionais que definem interações entre uma pluralidade de usuários e uma pluralidade de aplicativos; definir um conjunto de árvores de correlação com base nos dados observacionais recebidos, em que cada árvore de correlação no conjunto representa uma sequência de interações entre um dos usuários e um ou mais dos aplicativos, e em que o conjunto inclui uma primeira quantidade de árvores de correlação; identificar um subconjunto de árvores de correlação similares, sendo que cada uma das quais é incluída no conjunto, em que o subconjunto inclui uma segunda quantidade de árvores de correlação que é menor do que a primeira quantidade; realizar uma determinação de que a segunda quantidade é maior do que uma quantidade limítrofe; e em resposta à realização da determinação, gerar uma re-comendação de microaplicativo com base na sequência de interações representadas por uma árvore de correlação que é representativa do subconjunto.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a geração da recomendação de microaplicativo ainda compreende gerar instruções legíveis por máquina, que, quando executadas, fazem a sequência de interações representadas pela árvore de correlação representativa ser invocada.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende: extrair uma pluralidade de conjuntos de ações frequentes do conjunto de árvores de correlação; identificar uma relação causal entre um particular dos con- juntos de ações frequentes e uma ação frequente subsequente, em que a ação frequente subsequente é associada a um parâmetro de confiabilidade que representa a frequência com que a ação frequente subsequente segue o conjunto de ações frequentes particular; e em resposta à determinação de que o parâmetro de confia-bilidade excede uma confiabilidade limítrofe, gerar uma recomendação de microaplicativo que inclui a ação frequente subsequente.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a sequência de interações representada por uma particular dentre as árvores de correlação no conjunto inclui uma interação de autenticação de usuário, uma ação de entrada de dados de usuário e uma interação de logoff.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a identificação do subconjunto de árvores de correlação similares ainda compreende: identificar um centroide das árvores de correlação similares no subconjunto; e determinar distâncias entre cada uma das árvores de correlação similares no subconjunto e o centroide, em que cada uma das distâncias é menor do que uma distância limítrofe.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende determinar distâncias entre uma particular dentre as árvores de correlação similares no subconjunto e cada uma das outras árvores de correlação similares no subconjunto, em que cada uma das distâncias é menor do que uma distância limítrofe.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o conjunto de árvores de correlação inclui: uma árvore de correlação de aplicativo único que representa uma sequência de interações entre um dos usuários e um dos apli- cativos; e uma árvore de correlação cruzada de aplicativo que representa uma sequência de interações entre um dos usuários e pelo menos duas aplicações diferentes.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende: identificar um ponto de associação que liga duas das árvores de correlação no conjunto, em que as duas árvores de correlação ligadas representam funcionalidade fornecida pelo primeiro e pelo segundo aplicativos, e em que o ponto de associação representa dados que passam do primeiro aplicativo ao segundo aplicativo; gerar uma árvore de correlação cruzada de aplicativo que representa uma sequência de interações entre um dos usuários e o primeiro e o segundo aplicativos; e incluir a árvore de correlação cruzada de aplicativo no conjunto definido de árvores de correlação.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende identificar um ponto de associação que liga duas das árvores de correlação no conjunto, em que as duas árvores de correlação ligadas representam funcionalidade fornecida pelo primeiro e pelo segundo aplicativos, e em que o ponto de associação representa uma operação de cópia no primeiro aplicativo e uma operação de colagem no segundo aplicativo.
10. Sistema caracterizado pelo fato de que compreende um servidor de espaço de trabalho digital (100), em que o servidor de espaço de trabalho digital (100) inclui uma memória (120) e pelo menos um processador (110) acoplado à memória (120), e em que o servidor de espaço de trabalho digital (100) é configurado para gerar recomendações de microaplicativo ao: receber dados observacionais que definem interações entre uma pluralidade de usuários e uma pluralidade de aplicativos; definir um conjunto de árvores de correlação com base nos dados observacionais recebidos, em que cada árvore de correlação no conjunto representa uma sequência de interações entre um dos usuários e um ou mais dos aplicativos; extrair uma pluralidade de conjuntos de ações frequentes do conjunto de árvores de correlação; identificar uma relação causal entre um particular dos conjuntos de ações frequentes e uma ação frequente subsequente, em que a ação frequente subsequente é associada a um parâmetro de confiabilidade que representa a frequência com que a ação frequente subsequente segue o conjunto de ações frequentes particular; e em resposta à determinação de que o parâmetro de confia-bilidade excede uma confiabilidade limítrofe, gerar uma recomendação de microaplicativo que inclui a ação frequente subsequente.
11. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que: o servidor de espaço de trabalho digital (100) é ainda configurado para gerar recomendações de microaplicativo ao ligar duas das árvores de correlação definidas; uma primeira das árvores de correlação ligadas inclui um ponto de associação que representa uma primeira ação tomada em relação a um elemento de dados; e uma segunda das árvores de correlação ligadas inclui uma segunda ação tomada em relação ao elemento de dados.
12. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que o servidor de espaço de trabalho digital (100) é ainda configurado para gerar recomendações de microaplicativo ao: identificar um subconjunto de árvores de correlação similares, sendo que cada uma das quais é incluída no conjunto; realizar uma determinação de que há mais do que uma quantidade limítrofe de árvores de correlação no subconjunto; e em resposta à realização da determinação, gerar uma re-comendação de microaplicativo com base na sequência de interações representadas por uma árvore de correlação que é representativa do subconjunto.
13. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que a geração da recomendação de microaplicativo ainda compreende exibir, em uma interface de usuário, uma representação da ação frequente subsequente.
14. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que cada conjunto de ações frequentes é associado a um parâmetro de suporte que representa uma frequência com a qual o conjunto de ações frequentes é observado.
15. Mídia legível por computador não transitória caracterizada pelo fato de que armazena instruções executáveis por processador (110) para gerar recomendações de microaplicativo, as instruções executáveis por processador (110) compreendendo instruções para: receber dados observacionais que definem interações entre uma pluralidade de usuários e uma pluralidade de aplicativos; definir um conjunto de árvores de correlação com base nos dados observacionais recebidos, em que cada árvore de correlação no conjunto representa uma sequência de interações entre um dos usuários e um ou mais dos aplicativos, e em que o conjunto inclui uma primeira quantidade de árvores de correlação; identificar um subconjunto de árvores de correlação similares, sendo que cada uma das quais é incluída no conjunto, em que o subconjunto inclui uma segunda quantidade de árvores de correlação que é menor do que a primeira quantidade; realizar uma determinação de que a segunda quantidade é maior do que uma quantidade limítrofe; e em resposta à realização da determinação, gerar uma re-comendação de microaplicativo com base na sequência de interações correspondentes a uma árvore de correlação que é representativa do subconjunto.
16. Mídia legível por computador não transitória, de acordo com a reivindicação 15, caracterizada pelo fato de que as instruções executáveis por processador (110) ainda compreendem instruções para: identificar pontos iniciais e finais de uma sequência particular de interações; e identificar uma pluralidade de ações de usuário que ocorrem entre os pontos iniciais e finais.
17. Mídia legível por computador não transitória, de acordo com a reivindicação 15, caracterizada pelo fato de que as instruções executáveis por processador (110) ainda compreendem instruções para salvar dados que representam o conjunto de árvores de correlação em um banco de dados de árvore (159).
18. Mídia legível por computador não transitória, de acordo com a reivindicação 15, caracterizada pelo fato de que: as instruções executáveis por processador (110) ainda compreendem instruções para identificar um ponto inicial de uma sequência particular de interações; e o ponto inicial é selecionado dentre um grupo que consiste em uma ação de autenticação de usuário e uma submissão de locador de recurso uniforme.
19. Mídia legível por computador não transitória, de acordo com a reivindicação 15, caracterizada pelo fato de que: as instruções executáveis por processador (110) ainda compreendem instruções para identificar um ponto final de uma sequência particular de interações; e o ponto final é selecionado dentre um grupo que consiste em uma ação de logoff de usuário, uma ação de fechamento de página e um evento de tempo transcorrido de atividade detectado.
20. Mídia legível por computador não transitória, de acordo com a reivindicação 15, caracterizada pelo fato de que as instruções executáveis por processador (110) ainda compreendem instruções para: identificar um ponto final de uma primeira sequência de in-terações; identificar um ponto inicial de uma segunda sequência de interações; identificar um objeto de dados que é operado por ambos os pontos iniciais e finais; e em resposta à identificação do objeto de dados, designar o ponto final da primeira sequência de interações como um ponto de associação entre a primeira e a segunda sequências.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/081406 WO2021189356A1 (en) | 2020-03-26 | 2020-03-26 | Microapp functionality recommendations with cross-application activity correlation |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112021014123A2 BR112021014123A2 (pt) | 2021-12-07 |
BR112021014123B1 true BR112021014123B1 (pt) | 2022-10-11 |
Family
ID=77745900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112021014123-5A BR112021014123B1 (pt) | 2020-03-26 | 2020-03-26 | Método para gerar recomendações de microaplicativo, sistema e mídia legível por computador não transitória |
Country Status (7)
Country | Link |
---|---|
US (1) | US11132179B1 (pt) |
EP (1) | EP3908925A4 (pt) |
CN (1) | CN113811854B (pt) |
AU (1) | AU2020403711A1 (pt) |
BR (1) | BR112021014123B1 (pt) |
CA (1) | CA3123916C (pt) |
WO (1) | WO2021189356A1 (pt) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11593130B2 (en) * | 2021-03-23 | 2023-02-28 | Acronis International Gmbh | Systems and methods for customizing a user workspace environment using action sequence analysis |
US20220413689A1 (en) * | 2021-06-28 | 2022-12-29 | Citrix Systems, Inc. | Context-based presentation of available microapp actions |
US11797623B2 (en) | 2021-12-09 | 2023-10-24 | Citrix Systems, Inc. | Microapp recommendations for networked application functionality |
US20240112289A1 (en) * | 2022-05-23 | 2024-04-04 | The Government of the United States of America, as represented by the Secretary of Homeland Security | Augmented reality security screening and dynamic step-by-step guidance and communication |
US20240045782A1 (en) * | 2022-08-08 | 2024-02-08 | Qualcomm Incorporated | Suggesting a New and Easier System Function by Detecting User's Action Sequences |
CN115373643A (zh) * | 2022-09-15 | 2022-11-22 | 贵州电网有限责任公司 | 基于模块化的云计算系统及方法 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060117059A1 (en) * | 2004-11-30 | 2006-06-01 | Tidal Software, Inc. | System and method for monitoring and managing performance and availability data from multiple data providers using a plurality of executable decision trees to consolidate, correlate, and diagnose said data |
US20140020068A1 (en) | 2005-10-06 | 2014-01-16 | C-Sam, Inc. | Limiting widget access of wallet, device, client applications, and network resources while providing access to issuer-specific and/or widget-specific issuer security domains in a multi-domain ecosystem for secure personalized transactions |
US9110685B2 (en) | 2008-03-25 | 2015-08-18 | Qualcomm, Incorporated | Apparatus and methods for managing widgets in a wireless communication environment |
US8312450B2 (en) | 2008-12-18 | 2012-11-13 | Sap Ag | Widgetizing a web-based application |
CN102054004B (zh) * | 2009-11-04 | 2015-05-06 | 清华大学 | 一种网页推荐方法和装置 |
FR2964484B1 (fr) | 2010-09-02 | 2015-09-18 | Banque Accord | Procede de recueil de donnees a caracteres evenementiel de formulaires electroniques |
US20120278736A1 (en) * | 2011-04-30 | 2012-11-01 | Samsung Electronics Co., Ltd. | Collaborative decision-making for deriving micro-recommendations for offsite users |
US9008288B2 (en) * | 2012-03-26 | 2015-04-14 | Jacada Inc. | System and method for supporting self service and associated agent-assisted service call routing |
US20130326499A1 (en) | 2012-05-31 | 2013-12-05 | Microsoft Corporation | Automatically installing and removing recommended applications |
US9280252B1 (en) | 2013-03-08 | 2016-03-08 | Allstate Insurance Company | Configuring an application task list of an application based on previous selections of application tasks |
US20140351052A1 (en) | 2013-05-24 | 2014-11-27 | Harbhajan S. Khalsa | Contextual Product Recommendation Engine |
US9405531B2 (en) | 2013-07-16 | 2016-08-02 | Software Ag | Methods for building application intelligence into event driven applications through usage learning, and systems supporting such applications |
US9471624B1 (en) | 2013-12-26 | 2016-10-18 | Quixey, Inc. | Method for recommending applications for deletion |
US20150356495A1 (en) | 2014-06-05 | 2015-12-10 | Accenture Global Services Limited | Digital workspace |
US10028116B2 (en) * | 2015-02-10 | 2018-07-17 | Microsoft Technology Licensing, Llc | De-siloing applications for personalization and task completion services |
US9946529B2 (en) * | 2015-05-01 | 2018-04-17 | Samsung Electronics Co., Ltd. | Function-based dynamic application extension framework |
US9405665B1 (en) * | 2015-05-22 | 2016-08-02 | Amazon Technologies, Inc. | Application testing based on user input captured during a trial period and priority scheme analysis |
US20170212650A1 (en) | 2016-01-22 | 2017-07-27 | Microsoft Technology Licensing, Llc | Dynamically optimizing user engagement |
US10747554B2 (en) | 2016-03-24 | 2020-08-18 | Google Llc | Contextual task shortcuts |
CN106101250A (zh) | 2016-06-30 | 2016-11-09 | 乐视控股(北京)有限公司 | 应用功能的定制方法及装置 |
CN106201624A (zh) * | 2016-07-18 | 2016-12-07 | 深圳市金立通信设备有限公司 | 一种应用程序的推荐方法及终端 |
US9947037B2 (en) * | 2016-09-14 | 2018-04-17 | International Business Machines Corporation | Software recommendation services for targeted user groups |
US10452717B2 (en) * | 2016-09-22 | 2019-10-22 | Intel Corporation | Technologies for node-degree based clustering of data sets |
US10621062B2 (en) | 2017-02-21 | 2020-04-14 | International Business Machines Corporation | Widget provisioning of user experience analytics and user interface / application management |
US10635433B2 (en) | 2017-08-24 | 2020-04-28 | General Electric Company | Cross application behavior customization |
CN108268260A (zh) * | 2017-12-21 | 2018-07-10 | 博康智能信息技术有限公司 | 一种基于一体化支撑技术的快速微应用组装方法 |
CN110007986B (zh) | 2018-01-04 | 2022-11-01 | 阿里巴巴集团控股有限公司 | 功能实现方法及装置 |
US10909024B2 (en) | 2018-04-19 | 2021-02-02 | Think Research Corporation | System and method for testing electronic visual user interface outputs |
CN109117164B (zh) | 2018-06-22 | 2020-08-25 | 北京大学 | 基于关键元素差异性分析的微服务更新方法及系统 |
US20200026502A1 (en) | 2018-07-19 | 2020-01-23 | Michael Moore | Method and system for determining inefficiencies in a user interface |
US10817270B2 (en) | 2018-08-02 | 2020-10-27 | Oracle International Corporation | AI-generated instant micro apps |
US10848500B2 (en) | 2018-10-24 | 2020-11-24 | Jamf Software, Llc | Systems and methods for group-based mobile device management |
CN110069463B (zh) * | 2019-03-12 | 2021-07-16 | 北京奇艺世纪科技有限公司 | 用户行为处理方法、装置电子设备及存储介质 |
CN110806975A (zh) | 2019-10-22 | 2020-02-18 | 湖南物会网络信息技术有限公司 | 一种小程序应用管理系统 |
-
2020
- 2020-03-26 BR BR112021014123-5A patent/BR112021014123B1/pt not_active IP Right Cessation
- 2020-03-26 WO PCT/CN2020/081406 patent/WO2021189356A1/en unknown
- 2020-03-26 AU AU2020403711A patent/AU2020403711A1/en not_active Abandoned
- 2020-03-26 EP EP20913090.5A patent/EP3908925A4/en not_active Withdrawn
- 2020-03-26 CA CA3123916A patent/CA3123916C/en active Active
- 2020-03-26 CN CN202080009580.4A patent/CN113811854B/zh not_active Expired - Fee Related
- 2020-04-30 US US16/862,781 patent/US11132179B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20210303269A1 (en) | 2021-09-30 |
BR112021014123A2 (pt) | 2021-12-07 |
CA3123916A1 (en) | 2021-09-15 |
US11132179B1 (en) | 2021-09-28 |
AU2020403711A1 (en) | 2021-10-14 |
CA3123916C (en) | 2023-03-14 |
CN113811854A (zh) | 2021-12-17 |
EP3908925A1 (en) | 2021-11-17 |
CN113811854B (zh) | 2022-06-28 |
WO2021189356A1 (en) | 2021-09-30 |
EP3908925A4 (en) | 2022-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA3123916C (en) | Microapp functionality recommendations with cross-application activity correlation | |
Pan et al. | Detecting web attacks with end-to-end deep learning | |
US10331495B2 (en) | Generation of directed acyclic graphs from task routines | |
RU2713574C1 (ru) | Системы и устройства для оценки архитектуры и реализации стратегий в области обеспечения безопасности | |
US10795935B2 (en) | Automated generation of job flow definitions | |
US11062022B1 (en) | Container packaging device | |
US11671506B2 (en) | Microservice management system for recommending modifications to optimize operation of microservice-based systems | |
US11734064B2 (en) | Automated virtual machine resource management in container-supported many task computing | |
US10678682B2 (en) | Intelligent batch job testing | |
US9952832B2 (en) | Methods for generating smart archtecture templates and devices thereof | |
Felício et al. | Rapitest: Continuous black-box testing of restful web apis | |
Lenka et al. | Performance analysis of automated testing tools: JMeter and TestComplete | |
Assar et al. | Using text clustering to predict defect resolution time: a conceptual replication and an evaluation of prediction accuracy | |
Islam et al. | Automated interpretation and integration of security tools using semantic knowledge | |
Chouchen et al. | Learning to predict code review completion time in modern code review | |
Elshambakey et al. | A visual analytics framework for distributed data analysis systems | |
Kaur et al. | Analysis of big data cloud computing environment on healthcare organizations by implementing Hadoop clusters | |
US20230237366A1 (en) | Scalable and adaptive self-healing based architecture for automated observability of machine learning models | |
Wu et al. | Understanding and Predicting Docker Build Duration: An Empirical Study of Containerized Workflow of OSS Projects | |
Senanayake et al. | FedREVAN: R eal-time DE tection of V ulnerable A ndroid Source Code Through Fed erated N eural Network with XAI | |
US20240037157A1 (en) | Increasing security of a computer program using unstructured text | |
Spiga et al. | Open-source and cloud-native solutions for managing and analyzing heterogeneous and sensitive clinical Data | |
Sawadogo et al. | Towards Behavior-Based Analysis of Android Obfuscated Malware | |
Cirlan | Mining for Cost Awareness in Cloud Computing: A Study of AWS CloudFormation and Developer Practices | |
Kumar et al. | An Effective Approach Towards Reducing Regression Testing Efforts by Using Topic Modeling in Agile Development Environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B07A | Application suspended after technical examination (opinion) [chapter 7.1 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 26/03/2020, OBSERVADAS AS CONDICOES LEGAIS |
|
B21F | Lapse acc. art. 78, item iv - on non-payment of the annual fees in time |
Free format text: REFERENTE A 4A ANUIDADE. |
|
B24J | Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12) |
Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2767 DE 16-01-2024 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013. |