BR102018002638A2 - Sistema para otimizar a distribuição de processamento de um processo automatizado - Google Patents

Sistema para otimizar a distribuição de processamento de um processo automatizado Download PDF

Info

Publication number
BR102018002638A2
BR102018002638A2 BR102018002638-0A BR102018002638A BR102018002638A2 BR 102018002638 A2 BR102018002638 A2 BR 102018002638A2 BR 102018002638 A BR102018002638 A BR 102018002638A BR 102018002638 A2 BR102018002638 A2 BR 102018002638A2
Authority
BR
Brazil
Prior art keywords
work
virtual machines
application server
queue
fact
Prior art date
Application number
BR102018002638-0A
Other languages
English (en)
Inventor
David Moss
Stuart Wood
Original Assignee
Blue Prism Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Blue Prism Limited filed Critical Blue Prism Limited
Publication of BR102018002638A2 publication Critical patent/BR102018002638A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06316Sequencing of tasks or work
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Administration; Management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Theoretical Computer Science (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Economics (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Computer Security & Cryptography (AREA)
  • Telephonic Communication Services (AREA)

Abstract

a presente invenção refere-se a um sistema para automatizar processos, e, em particular, a um sistema para otimizar a distribuição de itens de trabalho entre recursos de processamento disponíveis dentro de tal sistema. o sistema inclui um controlador de fila ativo, operado em um servidor de aplicativos, que gerencia a criação e a deleção de máquinas virtuais em recursos disponíveis enquanto da consulta de um armazenamento de dados quanto a itens e instruções de trabalho para executar tais processos automatizados.

Description

Relatório Descritivo da Patente de Invenção para SISTEMA PARA OTIMIZAR A DISTRIBUIÇÃO DE PROCESSAMENTO DE UM PROCESSO AUTOMATIZADO.
CAMPO DA INVENÇÃO [0001] A presente invenção refere-se a sistemas e métodos para automatizar processos. Mais especificamente, ela refere-se a sistemas e métodos para gerenciar a execução de processos automatizados através de um ou mais trabalhadores virtuais.
ANTECEDENTES DA INVENÇÃO [0002] Frequentemente acontece de uma mudança esperada, ou não esperada, precisar de uma mudança na forma como um negócio deve operar. Por exemplo, o lançamento de um novo produto pode precisar que sistemas existentes sejam integrados, que um novo regulamento possa precisar do registro de etapas do processo ou que uma aquisição possa precisa da fusão de duas linhas de produto e processos. O planejamento e a implantação de um sistema empresarial tradicional podem incorporar estas questões; contudo, estes ciclos de planejamento são concebidos para grandes projetos, não suportando a mudança operacional cotidiana. Como resultado, mudanças são implementadas com custos elevados e, às vezes, ao longo de muitos anos, e assim novos sistemas substituindo a funcionalidade dos sistemas originais e provendo a nova funcionalidade necessária têm que ser desenvolvidos, havendo, dessa forma, a necessidade de testes exaustivos e da garantia da qualidade antes de poderem ser confiavelmente implementados. Estes sistemas têm também que ser concebidos e configurados por pessoas com habilidades especiais necessárias em programação de computadores e desenvolvimento de aplicativos. Isto acrescenta mais tempo ao processo de desenvolvimento, uma vez que há relativamente poucas pessoas com as habilidades necessárias, caso existam, dentro de uma organização e, uma vez imPetição 870180010844, de 08/02/2018, pág. 33/60
2/21 plementados tais sistemas, o tempo que leva para que os usuários dos sistemas originais ficarem familiarizados com os novos sistemas pode ser longo e o processo muitas vezes caracterizado pela ineficiência e imprecisão.
[0003] O problema surge porque os processos de negócios de logística podem muitas vezes envolver múltiplos aplicativos de software independentes e incompatíveis. Alguns destes aplicativos de software podem ter APIs que facilitam a transferência de informação para dentro e para fora de um aplicativo com a provisão de uma interface predefinida através da qual outro aplicativo de software pode interagir; no entanto, este nem sempre é o caso. Por exemplo, muitos aplicativos de software usados nestes processos de negócios de logística são aplicativos antigos concebidos sem as características necessárias para permitir o fácil acesso por parte de outros aplicativos de software. Outros são soluções de software internas personalizadas criadas para servir a uma finalidade muito específica onde está prevista a necessidade de prover uma interface através da qual outros aplicativos poderíam interagir. Tradicionalmente, isto é superado com o uso de pessoal operacional para estabelecer uma ponte entre estes aplicativos de software. O uso de pessoal operacional é uma solução de alto custo, uma vez que um grande número de pessoal pode precisar ser empregado para prover a capacidade necessária. Uma vez que a lacuna entre estes aplicativos ou sistemas de software incompatíveis é superada por um ser humano, o processo é tipicamente lento, uma vez que o pessoal operacional trabalha apenas durante parte do dia, fica limitado pela velocidade na qual eles podem introduzir informação ou comandos usando um teclado e um mouse ou qualquer outra interface, ficando também limitado pela velocidade na qual eles podem ler a informação de uma tela ou outra saída. Além disso, seres humanos são suscetíveis a erros na introdução de dados ou comandos em um sistema
Petição 870180010844, de 08/02/2018, pág. 34/60
3/21 e na leitura de informação de outros, o que um computador não é. Existe também a possibilidade da ocorrência de interferência maliciosa com processos, sistemas e dados, quando da atuação do pessoal operacional.
[0004] Por exemplo, um provedor de telecomunicações pode lançar um novo aparelho de telefone móvel para o qual há necessidade do uso de aplicativos de software existentes de e novos sistemas que podem ser incompatíveis. Este deficiência é geralmente preenchida pelo pessoal operacional, mas frequentemente não é possível prever a demanda de tais produtos recentemente lançados e assim pessoal demais ou de menos é treinado para usar os sistemas de software. Por isso, é desejável preencher esta lacuna entre sistemas de software incompatíveis com uma solução que permita um rápido dimensionamento para lidar com a demanda, sem que seja necessário de antemão o conhecimento detalhado da demanda.
[0005] Em tais sistemas, em geral, são tratados grandes volumes de informação, que pode ser informação pessoal sensível. Também é desejável lidar com esta informação de maneira consistente, o que reduz o número de erros que podem ser associados com a simples cópia da informação por parte de um ser humano de um sistema para outro, sendo também desejável lidar com a informação de forma segura e privada, que está apenas acessível quando absolutamente necessário.
[0006] Estes problemas, onde se faz necessário o pessoal operacional quando os aplicativos de software preexistentes estiverem aquém da funcionalidade necessária para que um novo processo seja implementado, não são exclusivos da logística do negócio. Por exemplo, a recepção de um hospital ou de um consultório médico é frequentemente um ambiente lotado com muitos pacientes que chegam para suas consultas. Os recepcionistas perdem muito tempo executando
Petição 870180010844, de 08/02/2018, pág. 35/60
4/21 tarefas de rotina, tal como obtendo detalhes dos pacientes que chegam para suas consultas e os introduzindo em um aplicativo de software que registra o paciente para sua consulta. Este processo é frequentemente lento, pode ser impreciso devido a detalhes do paciente que são mal percebidos, e toma tempo dos recepcionistas para exercer outras funções.
[0007] Pode ser desejável prover terminais de autoatendimento para registro na recepção de um hospital ou de um consultório médico que permitam que pacientes que chegam introduzam seus próprios detalhes no sistema de modo que as imprecisões sejam minimizadas, os recepcionistas fiquem livres para se ocuparem com outras tarefas, e os tempos de espera sejam reduzidos. No entanto, pode não ser apropriado prover um paciente com uma mesma interface que aquela provida para o recepcionista, uma vez que os aplicativos de software usados pelo recepcionista provavelmente apresentam características mais avançadas que desnecessariamente confundem o paciente, ou o aplicativo pode ter controles administrativos ou acesso à informação que não seria adequado prover aos pacientes que usam um terminal de autoatendimento para registro. A menos que o aplicativo existente do recepcionista proveja a capacidade de um novo aplicativo que funciona nos terminais de autoatendimento para acessar certas funções e características, os mesmos ciclos de planejamento longos, as despesas, a ineficiência e a imprecisão associadas com mudança nos processos de negócios de logística se aplicarão quando forem desenvolvidos novos sistemas e aplicativos de software que proveem a funcionalidade necessária para implementar estes sistemas. Isto muitas vezes resulta em tais projetos que jamais são realizados. Muitos outros exemplos ficarão evidentes para o leitor.
[0008] Soluções existentes envolvem o uso de máquinas virtuais como trabalhadores virtuais que são configurados para automatizar
Petição 870180010844, de 08/02/2018, pág. 36/60
5/21 estes processos através da interface com software legado. Tal sistema é descrito na Publicação de Pedido PCT WO 2015/001360 A1; contudo, estes sistemas exigem que um usuário determine como os itens de trabalho devem ser distribuídos entre os trabalhadores virtuais, e esta é muitas vezes uma maneira ineficiente de determinar tais coisas. Por isso, há necessidade de um sistema e de um método apropriados para otimizar a distribuição de itens de trabalho entre os trabalhadores virtuais.
SUMÁRIO DA INVENÇÃO [0009] A presente invenção refere-se a um sistema para executar processos automatizados. O sistema compreende um armazenamento de dados configurado para armazenar instruções para executar os processos automatizados, uma ou mais filas de trabalho, e associações entre cada fila de trabalho e um dos processos automatizados; uma ou mais máquinas virtuais configuradas para executar um ou mais processos automatizados, onde os processos automatizados são definidos por instruções armazenadas no banco de dados; e um servidor de aplicativos configurado para atribuir uma ou mais filas de trabalho a uma ou mais máquinas virtuais. Cada máquina virtual, quando atribuída com uma fila de trabalho pelo servidor de aplicativos, é configurada para recuperar as instruções para executar o processo automatizado associado com a fila de trabalho atribuída do banco de dados, e executar o processo automatizado de acordo com as instruções recuperadas do banco de dados.
[0010] Cada fila de trabalho tipicamente compreende um ou mais itens de trabalho e cada máquina virtual é configurada para executar um ou mais processos automatizados com o processamento dos itens de trabalho da fila de trabalho atribuída de acordo com as instruções armazenadas no banco de dados. Cada item de trabalho pode compreender um ou mais objetos de dados de informação, e cada fila de
Petição 870180010844, de 08/02/2018, pág. 37/60
6/21 trabalho é tipicamente um grupo lógico de itens de trabalho.
[0011] As instruções armazenadas no banco de dados podem definir um fluxo de trabalho para executar o processo automatizado em cada item de trabalho.
[0012] Preferivelmente, o armazenamento de dados é adicionalmente configurado para armazenar dados de ligação que definem links entre uma ou mais máquinas virtuais e uma ou mais filas de trabalho.
[0013] Cada máquina virtual pode ser adicionalmente configurada para se comunicar com uma ou mais das outras máquinas virtuais. As máquinas virtuais podem ser configuradas para se comunicar com uma ou mais de outras máquinas virtuais diretamente. Alternativamente, as máquinas virtuais podem ser configuradas para se comunicar transmitindo uma mensagem para o servidor de aplicativos ou o armazenamento de dados, o servidor de aplicativos ou o armazenamento de dados podendo ser configurados para armazenar a mensagem recebida em um repositório de mensagens, e cada máquina virtual pode ser configurada para consultar o servidor de aplicativos ou o armazenamento de dados quanto a mensagens no repositório de mensagens. Alternativamente, as máquinas virtuais podem ser configuradas para se comunicar transmitindo uma mensagem para o servidor de aplicativos ou o armazenamento de dados, o servidor de aplicativos ou o armazenamento de dados podendo ser configurados para transmitir as mensagens recebidas para uma ou mais máquinas virtuais.
[0014] O servidor de aplicativos pode ser configurado para atribuir uma única fila de trabalho a uma pluralidade de máquinas virtuais. O armazenamento de dados poderá ser, portanto, configurado para impedir o acesso simultâneo a um determinado objeto de dados no armazenamento de dados pela pluralidade de máquinas virtuais bloqueando o determinado objeto de dados, quando uma máquina virtual acessar o determinado objeto de dados. Preferivelmente, o bloqueio
Petição 870180010844, de 08/02/2018, pág. 38/60
7/21 do determinado objeto de dados persiste por todo um evento de falha, e o armazenamento de dados é configurado para liberar o bloqueio confirmando que nenhuma das máquinas virtuais da pluralidade de máquinas virtuais pode processar o objeto de dados.
[0015] O servidor de aplicativos pode ser configurado para calcular uma duração de tempo necessária para processar um item de trabalho antes que o item de trabalho seja processado, com base nas questões ambientais ou de desempenho localizadas, na conectividade de rede, e na capacidade de resposta da máquina virtual alvo. O servidor de aplicativos pode ser configurado para prover um tempo estimado para processar uma fila de trabalho com base na duração de tempo calculada para processar um item de trabalho e as inúmeras máquinas virtuais às quais é atribuída a fila de trabalho.
[0016] O servidor de aplicativos pode também ser configurado para monitorar o progresso do processamento de fila de trabalho pelas máquinas virtuais. O servidor de aplicativos pode ser comunicar com uma ou mais máquinas virtuais usando um protocolo de mensagens, e cada máquina virtual pode responder ao servidor de aplicativos com informação de status durante a execução do processo.
[0017] O servidor de aplicativos pode ser configurado para prover recomendações sobre a atribuição de filas de trabalho a máquinas virtuais adicionais e/ou sobre aperfeiçoamentos do desempenho e da produtividade.
[0018] Preferivelmente, o servidor de aplicativos é configurado para atribuir filas de trabalho a máquinas virtuais com base nos recursos disponíveis para cada máquina virtual.
[0019] O servidor de aplicativos pode ser adicionalmente configurado para analisar a execução dos processos automatizados para identificar um ótimo modo de distribuição com base na velocidade, no sucesso e/ou na capacidade de resposta de cada máquina virtual, e
Petição 870180010844, de 08/02/2018, pág. 39/60
8/21 para atribuir filas de trabalho a máquinas virtuais com base no ótimo modelo de distribuição identificado. O servidor de aplicativos pode também instruir pelo menos uma das máquinas virtuais para parar o processamento da fila de trabalho atual e começar o processamento de uma nova fila de trabalho com base no ótimo modelo de distribuição.
[0020] O servidor de aplicativos pode ser configurado para analisar a execução dos processos automatizados usando algoritmos de aprendizagem de máquina para aperfeiçoar a distribuição de filas de trabalho para máquinas virtuais.
[0021] O servidor de aplicativos pode ser configurado para atribuir filas de trabalho a máquinas virtuais com base em atributos dos itens de trabalho e/ou das filas de trabalho. Um ou mais itens de trabalho podem ter um atributo de tempo de fila máximo que define um período máximo de tempo em que o item de trabalho pode ser parte da fila de trabalho antes de ser processado. Uma ou mais filas de trabalho podem ter um atributo de comprimento de fila máximo que define um número máximo de itens de trabalho que podem ser parte da fila de trabalho. Pelo menos uma de uma ou mais filas de trabalho pode ter um atributo de tempo de conclusão de fila que define um tempo máximo pelo qual devem ser processados todos os itens de trabalho na fila de trabalho.
[0022] O servidor de aplicativos pode ser configurado para instruir pelo menos uma de uma ou mais máquinas virtuais a parar o processamento da fila de trabalho atual e começar o processamento de uma nova fila de trabalho com base nos atributos dos itens de trabalho e/ou das filas de trabalho.
[0023] O sistema pode adicionalmente compreender um dispositivo de saída que é configurado para emitir informação de saída referente ao estado atual e/ou à configuração do sistema.
Petição 870180010844, de 08/02/2018, pág. 40/60
9/21
BREVE DESCRIÇÃO DOS DESENHOS [0024] A Figura 1 é um esquema de uma implementação de um sistema de acordo com a presente invenção.
[0025] A Figura 2 mostra uma fila de trabalho e itens de trabalho exemplificativos de acordo com a presente invenção.
[0026] A Figura 3 é um diagrama lógico do sistema da presente invenção.
DESCRIÇÃO DETALHADA DA INVENÇÃO [0027] Os sistemas e o métodos descritos aqui operam no contexto de um sistema para automatizar processos com o uso de máquinas virtuais como uma força de trabalho digital que pode interagir com aplicativos de software e entre si a fim de executar os processos de maneira eficiente. Tal sistema é descrito em maiores detalhes em WO 2015/001360 A1, a descrição do qual é aqui incorporada para referência.
[0028] A Figura 1 representa um sistema típico 100 de acordo com a presente invenção. O sistema 100 inclui um armazenamento de dados 101, um servidor de aplicativos 102 e uma ou mais máquinas virtuais 103. O armazenamento de dados 101 armazena dados relevantes aos processos automatizados, tais como itens de trabalho que devem ser processados e as instruções que definem os processos automatizados. O servidor de aplicativos 102 faz a mediação da comunicação entre as máquinas virtuais 103 e o armazenamento de dados 101, e gerencia a criação, a destruição e a operação das máquinas virtuais 103. As máquinas virtuais 103 são configuradas para executar os processos automatizados de acordo com as instruções recebidas do servidor de aplicativos 102.
[0029] As máquinas virtuais 103 podem ser organizadas em um ou mais grupos de recursos 104a-c. Um grupo de recursos 104a-c pode ser um agrupamento lógico de máquinas virtuais que é implementado
Petição 870180010844, de 08/02/2018, pág. 41/60
10/21 através de um ou mais dispositivos de hardware, tais como servidores, e representa a capacidade computacional disponível que está disponível para um determinado processo ou fila de trabalho para operar máquinas virtuais e, portanto, os processos automatizados. Um processo automatizado específico poderia ter acesso a um único grupo de recursos, ou pode ter múltiplos grupos de recursos disponibilizados para o mesmo. O armazenamento de dados 101 e o servidor de aplicativos 102 são tipicamente providos em recursos de hardware dedicados, tais como servidores dedicados; contudo, será apreciado que é possível operar o armazenamento de dados 101, o servidor de aplicativos 102 e as máquinas virtuais 103 no mesmo hardware físico.
[0030] As máquinas virtuais 103 são exemplos virtualizados persistentes de sistemas operacionais de usuário final padrões, preferivelmente o Microsoft Windows®, embora qualquer sistema operacional adequado, tal como macOS® ou uma distribuição Linux, pudesse ser usado. Preferivelmente, as máquinas virtuais 103 são providas em um ou mais servidores seguros que não podem ser acessados, física ou remotamente, sem habilitação ou autenticação de segurança apropriada. Os servidores, ou recursos, nos quais as máquinas virtuais são providas, operam preferivelmente hipervisores Tipo 1, tal como VMware ESX®; contudo, será apreciado que pode ser usada qualquer disposição adequada de hardware e software que permita a criação e o funcionamento de máquinas virtuais. As máquinas virtuais 103 são tipicamente desprovidas de cabeça, isto é, não apresentam um monitor ou um dispositivo de saída similar conectado que exiba uma saída gráfica. Com o funcionamento de múltiplas máquinas virtuais 103, múltiplos processos automatizados podem ser executados simultaneamente para aperfeiçoar a produtividade ou servir múltiplos usuários externos de maneira simultânea.
[0031] Os processos automatizados que são executados pelas
Petição 870180010844, de 08/02/2018, pág. 42/60
11/21 máquinas virtuais 103 geralmente envolvem a interação com aplicativos de software legado, seja através da interface de usuário, usando métodos, tal como screen scraping, seja com o uso de quaisquer APIs disponíveis ou interfaces de acessibilidade. Os fluxos de trabalho que definem os processos automatizados são concebidos por um usuário, tipicamente em um terminal de computador separado, salvos e armazenados no servidor de aplicativos 102 ou no armazenamento de dados 101.
[0032] Na concretização representada na Figura 1, o armazenamento de dados 101 está em comunicação bidirecional com o servidor de aplicativos 102, e o servidor de aplicativos 102 está em comunicação bidirecional com as máquinas virtuais 103. Desta forma, o servidor de aplicativos atua como um dispositivo intermediário que gerencia as conexões das máquinas virtuais 103 para o armazenamento de dados 101. O servidor de aplicativos 102 retém as credenciais de segurança do armazenamento de dados, tal como para Autenticação do Windows ou Autenticação SQL, e se comporta como um proxy de conexão segura para o armazenamento de dados 101 de tal modo que todas as máquinas virtuais 103 se comuniquem com o servidor de aplicativos
102 e o servidor de aplicativos 102 se comunique com segurança com o armazenamento de dados 101 de parte das máquinas virtuais 103. Esta disposição permite que o servidor de aplicativos 102 seja a única entidade dentro do sistema 100 que precisa armazenar as credenciais de segurança do armazenamento de dados com a autenticação correta para acessar e modificar os dados armazenados no armazenamento de dados 101. Uma vez que as credenciais de segurança do servidor de banco de dados são apenas armazenadas em um local dentro do sistema 200, a segurança é também aperfeiçoada com relação ao armazenamento de credenciais de segurança em cada máquina virtual
103 e também provê uma maior segurança sobre sistemas de múlti
Petição 870180010844, de 08/02/2018, pág. 43/60
12/21 pios usuários e múltiplas senhas. Naturalmente, será apreciado que os sistemas e os métodos aqui descritos podem alternativamente envolver a comunicação direta entre as máquinas virtuais 103 e o armazenamento de dados 101, ou a comunicação indireta via meios que não o servidor de aplicativos 102. Além disso, o sistema 100 pode incluir mais de um servidor de aplicativos 102. Por exemplo, o sistema 100 pode incluir um servidor de aplicativos dedicado para um ou mais grupos de recursos 104a-c.
[0033] O armazenamento de dados 101 é preferivelmente um banco de dados SQL. O armazenamento de dados 101 retém um ou mais bancos de dados SQL que retêm um repositório de processos e objetos relacionados aos processos automatizados, credenciais de usuário, informação de auditoria, registros de processo e configuração de fluxo de trabalho e informação de programação para os processos automatizados. Múltiplos esquemas SQL podem estar presentes no armazenamento de dados 101, permitindo que diferentes máquinas virtuais 103 executem diferentes processos automatizados que se referem a diferentes conjuntos de informação armazenados dentro do banco de dados do armazenamento de dados 101.
[0034] O armazenamento de dados 101 pode ser configurado para impedir o acesso simultâneo a um determinado objeto de dados no armazenamento de dados pelas máquinas virtuais 103 bloqueando um objeto de dados quando acessado por uma máquina virtual. Quando uma máquina virtual 103 acessar um objeto de dados no armazenamento de dados 101, a máquina virtual 103 também enviará uma solicitação do bloqueio. Alternativamente, o armazenamento de dados 101 pode automaticamente bloquear o objeto de dados quando for acessado pelo objeto de dados. Os bloqueios de registro presentes no armazenamento de dados 101 persistem por todo um evento de falha, por exemplo, falha de potência. O armazenamento de dados 101 libera
Petição 870180010844, de 08/02/2018, pág. 44/60
13/21 os bloqueios de registro confirmando que nenhuma das máquinas virtuais da pluralidade de máquinas virtuais 103 pode processar dados no banco de dados sem uma nova solicitação do bloqueio. As máquinas virtuais 103 podem enviar uma notificação para o armazenamento de dados 101 de que o bloqueio não é mais necessário no objeto de dados, e que o armazenamento de dados 101 subsequentemente remove o bloqueio do objeto de dados, permitindo que seja acessado novamente por outras máquinas virtuais 103.
[0035] O sistema 100 otimiza a execução de processos automatizados através das máquinas virtuais 103 utilizando filas de trabalho. Nos sistemas existentes, as máquinas virtuais 103 consultam uma fila de trabalho quanto aos que itens de trabalho a serem processados. No sistema da presente invenção, filas de trabalho são atribuídas a máquinas virtuais 103 pelo servidor de aplicativos 102, que usa os parâmetros alvos e a informação de configuração de fila para determinar como atingir o alvo. Isto está descrito em maiores detalhes com relação à Figura 2.
[0036] A Figura 2 mostra uma fila de trabalho típica 201, que é uma lista ordenada de um ou mais itens de trabalho 202a-c que são providos para máquinas virtuais 103 para processamento. Cada item de trabalho 202a-c compreende um ou mais objetos de dados de informação, tal como um identificador único para o item de trabalho, um ID de caso, e outra informação contextual. Os tipos específicos de objetos de dados de informação para cada item de trabalho 202a-c dependem do contexto e do processo automatizado ao qual eles se referem. Por exemplo, em um processo para ativar cartões SIM para uso com uma rede de telefone móvel, os itens de trabalho 202a-c podem compreender um nome de cliente, um número de telefone, um ICCID, um IMSI e uma chave de autenticação.
[0037] A fila de trabalho é tipicamente armazenada no armazena
Petição 870180010844, de 08/02/2018, pág. 45/60
14/21 mento de dados 101, mas será apreciado que a fila de trabalho 201 possa ser armazenada em qualquer localização adequada em comunicação com o servidor de aplicativos 102. Os objetos de dados de informação retidos por cada item de trabalho 202a-c podem ser armazenados em texto simples no armazenamento de dados 101, ou a fila de trabalho 201 pode ser configurada para criptografar os objetos de dados de informação automaticamente, quando eles forem salvos na fila, e para descriptografá-los automaticamente, quando forem recuperados da fila.
[0038] A fila de trabalho 201 pode ser povoada com itens de trabalho 202a-c manualmente, ou através de processos de alimentação 205. Os processos de alimentação 205 podem obter dados de qualquer fonte adequada, tal como email 206, ou um formulário 207, emitir itens de trabalho 202a no formato apropriado, e acrescentar os itens de trabalho 202a à fila de trabalho 201. A fila de trabalho 201 pode operar em uma base de primeiro a entrar, primeiro a sair (FIFO), com itens de trabalho 202c sendo distribuídos para as máquinas virtuais 208 para processamento.
[0039] Os itens de trabalho 202a-c podem ter metadados que são usados para gerenciar os processos automatizados (descritos em maiores detalhes com relação à Figura 3), além dos objetos de dados de informação que são usados como parte do processo automatizado. Por exemplo, os itens de trabalho 202a-c podem ter um atributo de tempo de fila máximo que define um período máximo de tempo em que o item de trabalho 202a-c pode ser parte da fila de trabalho 201 antes de ser processado. As próprias filas de trabalho 201 podem ter um atributo de comprimento de fila máximo que define um número máximo de itens de trabalho 202a-c que podem ser parte da fila de trabalho 201.
[0040] A maneira na qual o sistema da presente invenção proces
Petição 870180010844, de 08/02/2018, pág. 46/60
15/21 sa as filas de trabalho é descrita em maiores detalhes com relação à Figura 3. O sistema 300 inclui a fila de trabalho 301, que é tipicamente localizada no armazenamento de dados 101, e inclui itens de trabalho 302. O sistema 300 também inclui um controlador de fila ativa 303, que está localizado no servidor de aplicativos 102 e que é operado pelo mesmo. O controlador de fila ativa 303 é associado com a fila de trabalho 301. O controlador de fila ativa 303 gerencia os recursos 308, por exemplo, em um grupo de recursos 306, criando e destruindo máquinas virtuais 307 nos recursos 308 e atribuindo os recursos 308 e máquinas virtuais 307 a sua fila de trabalho associada 301. O controlador de fila ativa 303 também monitora os recursos 308 e as máquinas virtuais 307 e consulta o armazenamento de banco de dados 101 para estatística referente à fila de trabalho 301.
[0041] A fila de trabalho 301 pode ser associada com parâmetros adicionais 304 que determinam como o controlador de fila ativa 303 gerencia o recurso do grupo de recursos 306. No exemplo representado na Figura 3, o parâmetro RECURSOS ALVOS 304 define um número alvo de recursos 308 que o controlador de fila ativa deve atribuir à fila de trabalho 301. Este parâmetro 304 pode ser mudado por um usuário do sistema para acrescentar ou remover recursos que estão em operação na fila, isto é, para criar ou remover máquinas virtuais 307 nos recursos 308, por exemplo, a fim de acelerar o processo, ou a tornar mais eficiente o uso de recursos para os processos que não são sensíveis ao tempo.
[0042] O controlador de fila ativa 303 pode prover feedback 305 para o usuário do sistema. Por exemplo, o termo RECURSOS ATIVOS indica as inúmeras máquinas virtuais 307 que estão atualmente processando a fila de trabalho 301. O termo RECURSOS DISPONÍVEIS indica os inúmeros recursos 308 que estão disponíveis para operar máquinas virtuais adicionais. O termo TEMPO RESTANTE dá
Petição 870180010844, de 08/02/2018, pág. 47/60
16/21 uma estimativa da quantidade total de tempo remanescente para todos os itens de trabalho 302 na fila de trabalho 301. O tempo estimado necessário para processar um único item de trabalho pode ser calculado com base nas questões ambientais ou de desempenho localizadas, na conectividade de rede, e na capacidade de resposta da máquina virtual alvo. O tempo total restante estimado pode ser calculado tomando um tempo de trabalho médio para um item de trabalho 302 na fila 301 e multiplicando os inúmeros itens 302 que permanecem na fila 302. O termo TEMPO DE CONCLUSÃO indica o tempo projetado no qual a fila de trabalho 301 estará completa, isto é, o tempo atual mais o TEMPO RESTANTE. Outras indicações do status e do progresso da fila de trabalho 301 podem ser adicional ou alternativamente providas, tal como se a fila 301 estivesse em funcionamento ou em uma pausa, o tempo decorrido, o número dos itens de trabalho completados 302, o número dos itens de trabalho pendentes 302, e/ou o número total de casos na fila de trabalho 301.
[0043] O controlador de fila ativa 303 também é responsável por criar e destruir máquinas virtuais dentro do grupo de recursos 306. Para que um determinado processo automatizado seja executado, o controlador de fila ativa 306 encontra recursos disponíveis 308 dentro do grupo de recursos 306 e cria uma máquina virtual nos recursos necessários 308.
[0044] Quando o controlador de fila ativa 303 determinar que uma nova máquina virtual tenha que ser criada, por exemplo, para alcançar novos 'RECURSOS ALVOS, ele irá criar e dar início iniciar uma nova máquina virtual nos recursos disponíveis 308 no grupo de recursos 306 atribuídos a sua fila 301. O controlador de fila ativa 303 irá criar máquinas virtuais no recurso menos ocupado 308 primeiro, por exemplo, se o grupo 306 tiver quatro recursos disponíveis 308 e dois deles já tiverem máquinas virtuais em funcionamento, o controlador de fila
Petição 870180010844, de 08/02/2018, pág. 48/60
17/21 ativa 303 irá criar uma máquina virtual em um dos recursos que não está operando nenhuma máquina virtual. Se alguma máquina virtual deixar de ser criada ou iniciada por alguma razão, ela irá tentar novamente em outros recursos.
[0045] Se o controlador de fila ativa 303 precisar destruir uma máquina virtual que esteja atualmente processando a fila de trabalho 301, o controlador de fila ativa 303 poderá enviar uma solicitação de parada para uma máquina virtual 307, que faz com que a máquina virtual 307 pare de processar itens na fila de trabalho, uma vez que tenha terminado o processamento do item de trabalho atual.
[0046] As máquinas virtuais 307 recuperam os itens de trabalho 302 da fila de trabalho 101 armazenada no armazenamento de dados 101 via o servidor de aplicativos 102. Visto que as máquinas virtuais
307 terminam de processar cada item de trabalho 302, as máquinas virtuais 307 recuperam novos itens de trabalho 302 da fila de trabalho 301 armazenada no armazenamento de dados 101 via o servidor de aplicativos 102 até que a fila de trabalho 101 esteja completa ou até que o controlador de fila ativa 303 instrua as máquinas virtuais 307 a parar o processamento da fila de trabalho 301. Uma vez instruídas a parar o processamento de uma fila 301, as máquinas virtuais 307 poderão ser instruídas a começar o processamento de outra fila de trabalho, e as próprias máquinas virtuais 307 puxam itens de trabalho da nova fila de trabalho através de comunicação via o servidor de aplicativos 102 com o armazenamento de dados 101.
[0047] Os recursos 308 e as máquinas virtuais 307 que estão em operação são configurados para se comunicarem com outros recursos
308 e máquinas virtuais 307. As máquinas virtuais 307 podem se comunicar entre si diretamente transmitindo e recebendo mensagens diretas entre elas próprias. Alternativamente, as máquinas virtuais e os recursos podem transmitir e receber mensagens entre si via o servidor
Petição 870180010844, de 08/02/2018, pág. 49/60
18/21 de aplicativos 102. O servidor de aplicativos 102 pode simplesmente redirecionar as mensagens que ele recebe para a máquina virtual de destino apropriada 307, ou o servidor de aplicativos 102 pode armazenar as mensagens recebidas em um repositório que podem ser consultadas pela máquinas virtuais 307.
[0048] A comunicação entre as máquinas virtuais é particularmente útil em dois cenários. Primeiro, uma das máquinas virtuais 307 pode funcionar como um console de gerenciamento de tal modo que um terminal de controle possa exibir o status e a disponibilidade dos recursos 308. O terminal de controle pode ser acessado por um usuário do sistema para manualmente controlar a alocação de filas de trabalho para recursos, para aceitar as recomendações providas pelo controlador de fila ativa 303, conforme descrito em maiores detalhes abaixo, e/ou para visualizar o estado atual das máquinas virtuais 307, os recursos 308 e as filas de trabalho 301.
[0049] Em segundo lugar, como uma alternativa aos grupos de recursos que são diretamente gerenciados pelo servidor de aplicativos 102, conforme descrito acima, uma das máquinas virtuais 307 pode funcionar como a cabeça do grupo de recursos 306, e se comunicar com as outras máquinas virtuais 307 e recursos 308 no grupo de recursos para determinar quais máquinas virtuais 307 e recursos 308 estão disponíveis para processamento e para passar instruções para outros membros do grupo de recursos para iniciar e parar o processamento recebido do servidor de aplicativos 102.
[0050] O controlador de fila ativa 303 é configurado para se comunicar assincronicamente, ou de outra forma, com as máquinas virtuais 307, isto é, durante o processamento de um item de trabalho 302, a fim de monitorar o progresso do processo automatizado. Desse modo, além da estatística 305 que é provida para o usuário, o controlador de fila ativa 303 pode prover recomendações para o usuário na atribuição
Petição 870180010844, de 08/02/2018, pág. 50/60
19/21 da fila de trabalho 301 para recursos adicionais, isto é, criando novas máquinas virtuais 307 nos recursos 308, e em outros aperfeiçoamentos de desempenho.
[0051] A fim de prover estas recomendações, o controlador de fila ativa 303 pode analisar tempos de conclusão e métrica de desempenho nas máquinas virtuais 307 na infraestrutura usando itens de trabalho completados que armazenam a ID de recurso da máquina virtual 307, uma ID do processo que é executado, a data e o tempo de execução e o tempo que leva para executar o processo. Diferentes máquinas virtuais 307 podem operar em diferentes velocidades devido à capacidade do hardware subjacente, aos aplicativos instalados na máquina, incluindo outras máquinas virtuais, e à distância destes aplicativos e da própria máquina a partir de seus respectivos servidores de aplicativos. O controlador de fila ativa 303 usa estes dados para calcular, para um determinado processo, a hora do dia e toda a composição do processamento da fila de trabalho a ser feito, e quais recursos 308 ou máquinas virtuais 307 são mais bem colocados para executar o trabalho em um tempo ótimo.
[0052] Como parte do monitoramento das máquinas virtuais 307 e dos recursos 308, o controlador de fila ativa 303 analisa a execução do processo automatizado para identificar um ótimo modelo de distribuição com base na velocidade, no sucesso e/ou na capacidade de resposta de cada máquina virtual 307 e recurso 308.
[0053] Cada fila de trabalho 301 mantém dados históricos que proveem uma vista de alto nível da maneira na qual os itens de trabalho 302 foram processados. Cada item de trabalho 302 que é trabalhado também mantém um registro compreensivo de atividades no armazenamento de dados 101 que detalha as etapas do processo que foram tomadas para processar o item de trabalho, o que pode variar de um caso para outro. O controlador de fila ativa 303 pode usar técni
Petição 870180010844, de 08/02/2018, pág. 51/60
20/21 cas de aprendizagem de máquina para ter a composição da fila de trabalho 301 e a informação de recursos reunidos pelo controlador de fila ativa 303, conforme descrito acima, e combinam os dados para esse item de trabalho 302 e os arquivos de registro detalhados para construir um modelo que correlacione os dados de fila de trabalho e os estágios de registro para determinar que tipo de itens de trabalho assume que períodos específicos de tempo para processar. Por exemplo, um item de trabalho que se relaciona a uma contracorrente com três titulares pode levar duas vezes mais tempo para ser processado do que uma conta de poupança com um titular. O ótimo modelo de distribuição é iterativamente modificado com base em dados que são produzidos pelo sistema, visto que ele processa as filas de trabalho de acordo com o ótimo modelo de distribuição atual a fim de aperfeiçoar as recomendações providas pelo modelo. Esta informação pode ser apenas colhida no decorrer do tempo usando os pormenores dos dados acumulados dentro do armazenamento de dados 101 para aprender os padrões de dados e processo que são refletidos nos tempos de conclusão, além da informação de processo e recurso. Os resultados desta análise podem ser subsequentemente usados para gerar um ótimo modelo de distribuição que descreve o modo mais eficaz no qual os itens de trabalho 302 dentro da fila de trabalho 301 devem ser distribuídos entre os recursos disponíveis 308 e máquinas virtuais 307. [0054] O controlador de fila ativa 303 pode então prover uma ou mais recomendações para o usuário sobre como os itens de trabalho 302 devem ser distribuídos, ou pode automaticamente atribuir a fila de trabalho 301 e os itens de trabalho 302 ao ótimo recurso 308 com base no ótimo modelo de distribuição. O controlador de fila ativa poderá considerar o tempo de fila máximo de itens de trabalho individuais 302 e atributos de comprimento de fila máximo das filas de trabalho 301, quando da distribuição dos itens de trabalho 302 para as máquinas
Petição 870180010844, de 08/02/2018, pág. 52/60
21/21 virtuais 307.
[0055] Será apreciado que esta descrição se dá por meio de exemplo apenas; alterações e modificações podem ser feitas à concretização descrita sem se afastar do escopo da invenção, conforme definido nas reivindicações.

Claims (31)

  1. REIVINDICAÇÕES
    1. Sistema para executar processos automatizados, caracterizado pelo fato de compreender:
    - um armazenamento de dados configurado para armazenar instruções para executar os processos automatizados, uma ou mais filas de trabalho, e associações entre cada fila de trabalho e um dos processos automatizados;
    - uma ou mais máquinas virtuais configuradas para executar um ou mais processos automatizados, onde os processos automatizados são definidos por instruções armazenadas no banco de dados; e
    - um servidor de aplicativos configurado para atribuir uma ou mais das filas de trabalho a uma ou mais das máquinas virtuais, onde cada máquina virtual, quando atribuída com uma fila de trabalho pelo servidor de aplicativos, é configurada para:
    - recuperar as instruções para executar o processo automatizado associado com a fila de trabalho atribuída do banco de dados, e
    - executar o processo automatizado de acordo com as instruções recuperadas do banco de dados.
  2. 2. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de cada fila de trabalho compreender um ou mais itens de trabalho e de cada máquina virtual ser configurada para executar um ou mais processos automatizados com o processamento dos itens de trabalho da fila de trabalho atribuída de acordo com as instruções armazenadas no banco de dados.
  3. 3. Sistema, de acordo com a reivindicação 2, caracterizado pelo fato de cada item de trabalho compreender um ou mais objetos de dados de informação.
  4. 4. Sistema, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de cada fila de trabalho ser um
    Petição 870180010844, de 08/02/2018, pág. 54/60
    2/6 grupo lógico de itens de trabalho.
  5. 5. Sistema, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de as instruções armazenadas no banco de dados definirem um fluxo de trabalho para executar o processo automatizado em cada item de trabalho.
  6. 6. Sistema, de acordo com a reivindicação, caracterizado pelo fato de o armazenamento de dados ser adicionalmente configurado para armazenar dados de ligação que definem links entre uma ou mais máquinas virtuais e uma ou mais filas de trabalho.
  7. 7. Sistema, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de cada máquina virtual ser adicionalmente configurada para se comunicar com uma ou mais das outras máquinas virtuais.
  8. 8. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de as máquinas virtuais serem configuradas para se comunicarem com uma ou mais máquinas virtuais diretamente.
  9. 9. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de as máquinas virtuais serem configuradas para se comunicar transmitindo uma mensagem para um servidor de aplicativos ou o armazenamento de dados, do servidor de aplicativos ou o armazenamento de dados ser configurado para armazenar a mensagem recebida em um repositório de mensagens, e de cada máquina virtual ser configurada para consultar o servidor de aplicativos ou o armazenamento de dados quanto a mensagens no repositório de mensagens.
  10. 10. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de as máquinas virtuais serem configuradas para se comunicar transmitindo uma mensagem para o servidor de aplicativos ou o armazenamento de dados, e de o servidor de aplicativos ou o armazenamento de dados ser configurado para transmitir as mensagens recebidas para uma ou mais máquinas virtuais.
    Petição 870180010844, de 08/02/2018, pág. 55/60
    3/6
  11. 11. Sistema, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de o servidor de aplicativos ser configurado para atribuir uma única fila de trabalho para uma pluralidade de máquinas virtuais.
  12. 12. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de o armazenamento de dados ser configurado para impedir o acesso simultâneo a um determinado objeto de dados no armazenamento de dados pela pluralidade de máquinas virtuais bloqueando o determinado objeto de dados quando uma máquina virtual acessar o determinado objeto de dados.
  13. 13. Sistema, de acordo com a reivindicação 12, caracterizado pelo fato de o bloqueio no determinado objeto de dados persistir por todo um evento de falha.
  14. 14. Sistema, de acordo com a reivindicação 13, caracterizado pelo fato de o armazenamento de dados ser configurado para liberar o bloqueio com a confirmação de que nenhuma das máquinas virtuais da pluralidade de máquinas virtuais pode processar o objeto de dados.
  15. 15. Sistema, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de o servidor de aplicativos ser configurado para calcular a duração de tempo necessário para processar um item de trabalho antes de o item de trabalho ser processado.
  16. 16. Sistema, de acordo com a reivindicação 15, caracterizado pelo fato de o servidor de aplicativos ser configurado para calcular a duração de tempo com base nas questões ambientais ou de desempenho localizadas, na conectividade de rede, e na capacidade de resposta da máquina virtual alvo.
  17. 17. Sistema, de acordo com a reivindicação 15, ou 16, caracterizado pelo fato de o servidor de aplicativos ser configurado para prover um tempo estimado para processar uma fila de trabalho com
    Petição 870180010844, de 08/02/2018, pág. 56/60
    4/6 base na duração calculada de tempo para processar um item de trabalho e as inúmeras máquinas virtuais para as quais é atribuída a fila de trabalho.
  18. 18. Sistema, de acordo com qualquer uma das reivindicações 15 a 17, caracterizado pelo fato de o servidor de aplicativos ser configurado para monitorar o progresso do processamento da fila de trabalho pelas máquinas virtuais.
  19. 19. Sistema, de acordo com a reivindicação 18, caracterizado pelo fato de o servidor de aplicativos ser configurado para se comunicar com uma ou mais máquinas virtuais usando um protocolo de mensagem, e de cada máquina virtual ser configurada para responder ao servidor de aplicativos com informação de status durante a execução do processo.
  20. 20. Sistema, de acordo com qualquer uma das reivindicações 15 a 19, caracterizado pelo fato de o servidor de aplicativos ser configurado para prover recomendações sobre a atribuição de filas de trabalho para máquinas virtuais adicionais e/ou sobre os aperfeiçoamentos do desempenho e da produtividade.
  21. 21. Sistema, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de o servidor de aplicativos ser configurado para atribuir filas de trabalho para máquinas virtuais com base nos recursos disponíveis para cada máquina virtual.
  22. 22. Sistema, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de o servidor de aplicativos ser configurado para analisar a execução dos processos automatizados para identificar um ótimo modelo de distribuição com base na velocidade, no sucesso e/ou na capacidade de resposta de cada máquina virtual.
  23. 23. Sistema, de acordo com a reivindicação 22, caracterizado pelo fato de o servidor de aplicativos ser configurado para atribuir
    Petição 870180010844, de 08/02/2018, pág. 57/60
    5IQ filas de trabalho para máquinas virtuais com base no ótimo modelo de distribuição identificado.
  24. 24. Sistema, de acordo com a reivindicação 22 ou 23, caracterizado pelo fato de o servidor de aplicativos ser configurado para instruir pelo menos uma das máquinas virtuais para o processamento da fila de trabalho atual e começar o processamento de uma nova fila de trabalho com base no ótimo modelo de distribuição.
  25. 25. Sistema, de acordo com a reivindicação 22, caracterizado pelo fato de o servidor de aplicativos ser configurado para analisar a execução dos processos automatizados usando algoritmos de aprendizagem de máquina para aperfeiçoar a distribuição das filas de trabalho para as máquinas virtuais.
  26. 26. Sistema, de acordo com a reivindicação 2, caracterizado pelo fato de o servidor de aplicativos ser configurado para atribuir filas de trabalho para máquinas virtuais com base nos atributos dos itens de trabalho e/ou filas de trabalho.
  27. 27. Sistema, de acordo com a reivindicação 26, caracterizado pelo fato de pelo menos um de um ou mais itens de trabalho apresentar um atributo de tempo de fila máximo que define um período máximo de tempo em que o item de trabalho pode ser parte da fila de trabalho antes de ser processado.
  28. 28. Sistema, de acordo com a reivindicação 26 ou 27, caracterizado pelo fato de pelo menos uma de uma ou mais filas de trabalho apresentar um atributo de duração de fila máximo que define um número máximo de itens de trabalho que pode ser parte da fila de trabalho.
  29. 29. Sistema, de acordo com qualquer uma das reivindicações 26 a 28, caracterizado pelo fato de pelo menos uma de uma ou mais filas apresentar um atributo de tempo de conclusão de fila que define um tempo máximo pelo qual todos os itens de trabalho na fila
    Petição 870180010844, de 08/02/2018, pág. 58/60
    6/6 de trabalho devem ser processados.
  30. 30. Sistema, de acordo com qualquer uma das reivindicações 26 a 29, caracterizado pelo fato de o servidor de aplicativos ser configurado para instruir pelo menos uma de uma ou mais da máquinas virtuais para parar o processamento da fila de trabalho atual e iniciar o processamento de uma nova fila de trabalho com base nos atributos dos itens de trabalho e/ou filas de trabalho.
  31. 31. Sistema, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de adicionalmente compreender um dispositivo de saída que é configurado para emitir informação referente ao estado atual e/ou à configuração do sistema.
BR102018002638-0A 2017-02-15 2018-02-08 Sistema para otimizar a distribuição de processamento de um processo automatizado BR102018002638A2 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GBGB1702450.6A GB201702450D0 (en) 2017-02-15 2017-02-15 System for optimising distribution of processing an automated process
GB1702450.6 2017-02-15
US15/462,709 2017-03-17
US15/462,709 US10469572B2 (en) 2017-02-15 2017-03-17 System for optimizing distribution of processing an automated process

Publications (1)

Publication Number Publication Date
BR102018002638A2 true BR102018002638A2 (pt) 2019-02-19

Family

ID=58461988

Family Applications (1)

Application Number Title Priority Date Filing Date
BR102018002638-0A BR102018002638A2 (pt) 2017-02-15 2018-02-08 Sistema para otimizar a distribuição de processamento de um processo automatizado

Country Status (8)

Country Link
US (3) US10469572B2 (pt)
JP (1) JP7161262B2 (pt)
CN (2) CN117035282A (pt)
AU (2) AU2018201052B2 (pt)
BR (1) BR102018002638A2 (pt)
CA (1) CA2995010C (pt)
GB (1) GB201702450D0 (pt)
ZA (1) ZA201800993B (pt)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201702450D0 (en) 2017-02-15 2017-03-29 Blue Prism Ltd System for optimising distribution of processing an automated process
US11409576B2 (en) 2017-12-29 2022-08-09 Entefy Inc. Dynamic distribution of a workload processing pipeline on a computing infrastructure
KR20200036087A (ko) * 2018-09-20 2020-04-07 (주)뤼이드 실시간 모델링을 위한 머신 러닝 프레임워크의 운용 방법, 장치 및 컴퓨터 프로그램
CN110097330A (zh) * 2019-03-27 2019-08-06 深圳市佰仟金融服务有限公司 一种业务请求处理方法、装置及计算机可读存储介质
US11385920B2 (en) * 2019-03-28 2022-07-12 Amazon Technologies, Inc. Compute platform optimization over the life of a workload in a distributed computing environment
GB2590967A (en) 2020-01-10 2021-07-14 Blue Prism Ltd Method of remote access
US10817329B1 (en) * 2020-02-07 2020-10-27 Coupang Corp. Systems and methods for centralization and diagnostics for live virtual server performance data
US11862315B2 (en) 2020-12-16 2024-01-02 Express Scripts Strategic Development, Inc. System and method for natural language processing
US11423067B1 (en) 2020-12-16 2022-08-23 Express Scripts Strategic Development, Inc. System and method for identifying data object combinations
US11776672B1 (en) 2020-12-16 2023-10-03 Express Scripts Strategic Development, Inc. System and method for dynamically scoring data objects
CN112769900B (zh) * 2020-12-22 2023-04-25 中冶赛迪信息技术(重庆)有限公司 一种数据分发方法、系统、介质及电子终端
US11971705B2 (en) 2021-04-13 2024-04-30 UiPath, Inc. Autoscaling strategies for robotic process automation
EP4131047A1 (en) 2021-08-05 2023-02-08 Blue Prism Limited Data obfuscation

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6256637B1 (en) 1998-05-05 2001-07-03 Gemstone Systems, Inc. Transactional virtual machine architecture
FR2820222B1 (fr) 2001-01-26 2003-03-21 Schneider Automation Procede de programmation d'une application d'automatisme
US7188111B2 (en) 2002-07-12 2007-03-06 Datadirect Technologies Corp. System and method for connectivity to structured query language database
US7299468B2 (en) * 2003-04-29 2007-11-20 International Business Machines Corporation Management of virtual machines to utilize shared resources
JP2005184165A (ja) * 2003-12-17 2005-07-07 Hitachi Ltd トラフィック制御装置およびそれを用いたサービスシステム
JP2005196291A (ja) 2003-12-26 2005-07-21 Fujitsu Ltd ユーザインタフェースアプリケーション開発プログラム、および開発装置
JP2007265193A (ja) * 2006-03-29 2007-10-11 Fujitsu Ltd ジョブ割当プログラム、ジョブ割当装置およびジョブ割当方法
US7971091B1 (en) 2006-05-02 2011-06-28 Emc Corporation Network configuration backup and restore operations using continuous data protection
US20100027896A1 (en) 2006-06-28 2010-02-04 Amir Geva Automated application interaction using a virtual operator
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
US7962620B2 (en) 2007-10-19 2011-06-14 Kubisys Inc. Processing requests in virtual computing environments
US8261248B2 (en) 2007-11-05 2012-09-04 Sap Ag System and method of executing a dynamic program in a structured environment
JP2009151467A (ja) 2007-12-19 2009-07-09 Canon Inc 配信印刷システム
US20100023517A1 (en) 2008-07-28 2010-01-28 V Raja Method and system for extracting data-points from a data file
US8369968B2 (en) 2009-04-03 2013-02-05 Dell Products, Lp System and method for handling database failover
JP5671297B2 (ja) * 2009-11-16 2015-02-18 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Imsネットワークを介してマルチメディア・サービスを最適化するための方法及びシステム
US20110289342A1 (en) 2010-05-21 2011-11-24 Schaefer Diane E Method for the file system of figure 7 for the cluster
US8560887B2 (en) * 2010-12-09 2013-10-15 International Business Machines Corporation Adding scalability and fault tolerance to generic finite state machine frameworks for use in automated incident management of cloud computing infrastructures
US20120151479A1 (en) * 2010-12-10 2012-06-14 Salesforce.Com, Inc. Horizontal splitting of tasks within a homogenous pool of virtual machines
US9110709B2 (en) 2010-12-14 2015-08-18 International Business Machines Corporation Preserving changes to a configuration of a running virtual machine
US9292466B1 (en) 2010-12-28 2016-03-22 Amazon Technologies, Inc. Traffic control for prioritized virtual machines
JP2012155219A (ja) 2011-01-27 2012-08-16 Nec Casio Mobile Communications Ltd 演奏データ提供システム、方法、サーバ、携帯端末およびコンピュータプログラム
JP5729209B2 (ja) 2011-08-12 2015-06-03 富士通株式会社 情報処理装置、情報処理システムのテスト方法およびプログラム
US8826068B2 (en) 2011-11-23 2014-09-02 Microsoft Corporation Automated testing of applications in cloud computer systems
US9916514B2 (en) 2012-06-11 2018-03-13 Amazon Technologies, Inc. Text recognition driven functionality
US9274742B2 (en) 2012-10-25 2016-03-01 PixiOnCloud, Inc. Visual-symbolic control of remote devices having display-based user interfaces
US9529613B2 (en) 2012-12-12 2016-12-27 Vmware, Inc. Methods and apparatus to reclaim resources in virtual computing environments
WO2014127535A1 (en) 2013-02-22 2014-08-28 Google Inc. Systems and methods for automated content generation
US8954993B2 (en) * 2013-02-28 2015-02-10 Empire Technology Development Llc Local message queue processing for co-located workers
US20140282978A1 (en) 2013-03-15 2014-09-18 Sergio Demian LERNER Method and apparatus for secure interaction with a computer service provider
GB2517408A (en) 2013-07-05 2015-02-25 Blue Prism Ltd System for automating processes
CN104516773B (zh) * 2013-09-29 2018-04-20 国际商业机器公司 用于物理机的数据分配方法和数据分配装置
US9354937B2 (en) * 2014-07-18 2016-05-31 Thomson Reuters Global Resources System and method for electronic work prediction and dynamically adjusting server resources
WO2016100545A1 (en) * 2014-12-16 2016-06-23 Noderprime, Inc. Computer servers for datacenter managment
CN105208123A (zh) * 2015-09-24 2015-12-30 广东亿迅科技有限公司 一种虚拟桌面的实现方法及其系统
US11182203B2 (en) * 2016-12-06 2021-11-23 Vmware, Inc. Systems and methods to orchestrate infrastructure installation of a hybrid system
GB201702450D0 (en) 2017-02-15 2017-03-29 Blue Prism Ltd System for optimising distribution of processing an automated process

Also Published As

Publication number Publication date
US11290528B2 (en) 2022-03-29
JP2018133084A (ja) 2018-08-23
US20180234490A1 (en) 2018-08-16
CA2995010C (en) 2023-12-19
CN108492003A (zh) 2018-09-04
US20200021645A1 (en) 2020-01-16
ZA201800993B (en) 2023-03-29
CN108492003B (zh) 2023-10-31
GB201702450D0 (en) 2017-03-29
AU2018201052B2 (en) 2022-03-03
AU2018201052A1 (en) 2018-08-30
US10938893B2 (en) 2021-03-02
CN117035282A (zh) 2023-11-10
CA2995010A1 (en) 2018-08-15
JP7161262B2 (ja) 2022-10-26
AU2021200764A1 (en) 2021-03-04
US10469572B2 (en) 2019-11-05
US20200021646A1 (en) 2020-01-16

Similar Documents

Publication Publication Date Title
BR102018002638A2 (pt) Sistema para otimizar a distribuição de processamento de um processo automatizado
US10146599B2 (en) System and method for a generic actor system container application
CN108369534A (zh) 代码执行请求路由
US10691501B1 (en) Command invocations for target computing resources
BRPI0618711A2 (pt) reposicionamento dinámico de fluxo de trabalho por usuários finais
AU2020223693B2 (en) Rule-based action triggering in a provider network
CN107479984A (zh) 基于消息的分布式空间数据处理系统
US10567476B2 (en) Rule-based action triggering in a provider network
EP3364299B1 (en) System for optimising distribution of processing an automated process
US11153381B2 (en) Data auditing for object storage public clouds
US8527747B2 (en) Future system that can participate in systems management activities until an actual system is on-line
CN113220479A (zh) 一种基于隔离网络的工作流调度方法、装置及电子设备
EP4007982A1 (en) System and method for the remote execution of one or more arbitrarily defined workflows
NZ739898A (en) System for optimising distribution of processing an automated process
US20220291965A1 (en) Policy management in target environments
Burgess Atlassian Tools for ITSM and Project Management.
Menaud et al. btrScript: a safe management system for virtualized data center
Lhotka Reporting and batch processing

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]
B25G Requested change of headquarter approved

Owner name: BLUE PRISM LIMITED (GB)