Só sem mãos! Robôs que não repetem ações do usuário

Este artigo de revisão é sobre como usar o RPA para processos de negócios, que incluem tarefas que pessoas comuns não são capazes de executar, não desejam ou levam muito tempo e requerem muito conhecimento e requerem conhecimentos especiais, como trabalhar com FTP, bancos de dados ou API.

A inclusão de tais ações no processo aproxima sua criação da programação tradicional e dos "scripts", com todos os prós e contras dessa abordagem.

Usar a API mesmo em tarefas tradicionais de robótica pode aumentar significativamente a velocidade de sua execução, aumentar a confiabilidade e a estabilidade, mas, ao mesmo tempo, nos impede de realizar o sonho de que os próprios usuários de negócios criam e mantêm seus processos, definitivamente devolve seu desenvolvimento e suporte às suas mãos equipes de desenvolvimento.

Quando for possível e quando for necessário adicionar ações a um nível inferior no processo, tentarei informar neste artigo. A primeira parte introdutória contém considerações gerais e a segunda contém exemplos específicos. São apresentados exemplos de uma plataforma que eu conheço (UiPath); portanto, para aqueles que preferem outros gostos e cores de robôs, não se ofenda com antecedência.



Pro e Contra Robotics Low


Por que esses robôs são úteis?


  • Trabalho significativamente acelerado. Muitas vezes, essa é a principal razão pela qual pensamos em interação de baixo nível com sistemas externos. Se podemos acelerar o processo 10 vezes mais rápido, podemos economizar no uso de robôs adicionais, com suas máquinas virtuais e licenças.
  • A confiabilidade aumenta, você não precisa mais trabalhar com seletores fantasicamente dinâmicos na interface do usuário, pensar em como ignorar o captcha, lutar pela precisão do reconhecimento de uma imagem no Citrix na qual você não pode colocar um plug-in ou combater a rolagem sem fim na página de notícias.
  • Trabalhe com sistemas que não possuem uma interface do usuário completa ou não permitem obter todas as informações necessárias por meio da interface do usuário. Por exemplo, na minha prática, houve um caso em que pegamos dados na API do Shopify , transferimos para o ShipHero e os enviamos para o sistema de contabilidade interno. Somente a última etapa usou a interface do usuário.

Por que esses robôs são prejudiciais?


  • Os usuários corporativos não entendem mais o que nosso processo robótico faz e não podem mudar e manter eles mesmos. Isso não é verdade para robôs autônomos, mas para Attended (assistentes digitais), esse é um sinal negativo significativo, porque queremos que os usuários sejam os autores de seus próprios processos.
  • A visibilidade e a compreensibilidade do processo para o serviço de segurança são perdidas. Se com um robô comum pudermos demonstrar claramente que ele está executando as mesmas ações que o usuário "orgânico", é possível usar descrições de tarefas como documentação e, em seguida, usando a integração de baixo nível, somos forçados a concordar que nosso processo deve passar os mesmos procedimentos demorados de verificação e controle que a “grande” automação.
  • Dito, em relação às equipes de integração. Assim que começamos a usar a API, caímos no estado deles e precisamos seguir suas regras.
  • O custo e os riscos da programação "real" são maiores que os da robótica. Se uma pessoa pode pressionar um botão, um robô também pode pressioná-lo. Mas a API de um sistema antigo não documentado nos fornece os dados necessários? É possível gravar informações diretamente no banco de dados ou destruiremos sua integridade? É necessário um especialista experiente para esta tarefa ou é suficiente para um aluno iniciante? Por que Slides.Duplicate no PowerPoint.Interop retorna uma matriz? A resposta para todas essas perguntas intrigantes pode ser obtida, mas isso levará tempo.

Quando você precisa e quando não deve usar programação em robôs


O acima pode ser resumido da seguinte forma:

Vale a pena usar a programação se


  • Seu processo carece de produtividade
  • Os sistemas de interface do usuário não são convenientes para automação, mas há uma API conveniente

A programação não deve ser usada se


  • Os processos serão desenvolvidos ou suportados pelos usuários de negócios.
  • O uso da API dificulta o processo de negociação do robô.



Com o que e como faz sentido trabalhar com o código?


Depois, tentei dar alguns exemplos de como trabalhar com código, que, de uma maneira ou de outra, eu realmente precisava usar ao criar robôs, o que significa que eles ocorrem na vida. Naturalmente, a lista não é exaustiva, mas espero que seja ilustrativa.
Todos os exemplos são testados nas versões mais recentes das ações no momento da escrita.

Microsoft Office


Curiosamente, um dos primeiros candidatos a trabalhar com a API é o Microsoft Office. Sim, o UiPath possui uma excelente funcionalidade integrada para trabalhar com o Excel (até dois tipos, um com arquivos diretamente, o segundo através do aplicativo). Também há oportunidades para trabalhar com o Word (o pacote UiPath.Word.Activities é UiPath.Word.Activities por meio do gerenciador de pacotes). Mas, por exemplo, não há ações padrão para trabalhar com o PowerPoint e também há o Outlook ou o Visio com o Project, que ainda são usados ​​ativamente em grandes empresas. Com o Office, você pode facilmente fazer amizade com um robô por meio da interface do usuário, mas em alguns casos isso não é muito conveniente, pois nem todos os elementos da interface do usuário podem ser acessados ​​diretamente e é necessário tocar escalas no teclado. Por exemplo, uma ação Type Into com o texto k [tab] k [f10] JCDD (para a versão em inglês do Office) abrirá os dados do gráfico em um slide do PowerPoint para edição no Excel. Tais combinações funcionam bem, mas parecem mais limpas do que o IDDKQD.
Dica: A lista de seletores disponíveis pode ser expandida usando o Microsoft UI Automation (UIA) vez da estrutura Microsoft Active Accessibility (MSAA) , que é selecionada por padrão. Alterne para ele com o botão F4 no UI Explorer e veja se há uma diferença
Para trabalhar com arquivos do escritório, você pode usar bibliotecas de terceiros, por exemplo, bibliotecas Xceed DocX ou Spire, como Spire.Presentation . Ao trabalhar com bibliotecas de terceiros, preste atenção à licença, que nem sempre é adequada para sua empresa (por exemplo, o iTextSharp for PDF é distribuído gratuitamente via AGPL e PDFSharp - via MIT ). Esse método é muito conveniente, pois pode ser usado mesmo se o Microsoft Office não estiver instalado na máquina, o que significa que é ótimo para robôs autônomos que executam em máquinas virtuais.

Para trabalhos complexos com programas de escritório, o Microsoft.Office.Interop vem em socorro. Ele nos permite executar ações dentro de aplicativos, manipular dados etc. Você pode dedicar mais de um artigo aos recursos do trabalho com o Office.Interop, algo antigo e frágil, mas será adequado para nossos propósitos. Para que a Interop funcione, você precisa adicionar os assemblies apropriados às Importações.

Aqui estão alguns exemplos do que você pode fazer com o Office Interop:

Outlook


A funcionalidade do Outlook é muito mais ampla do que apenas trabalhar com o correio, é um gerenciador de informações pessoais, e há um calendário, um notebook e um catálogo de endereços, em geral, um conjunto completo. Se tudo com email geralmente pode ser resolvido por acesso direto ao servidor, se ele representa interfaces IMAP / POP3, o restante das informações é muito mais fácil de obter do próprio Outlook. Para este Interop se encaixa perfeitamente.

Obtendo uma lista de eventos da agenda
 Dim oApp As New Microsoft.Office.Interop.Outlook.Application Dim mapiNamespace As Microsoft.Office.Interop.Outlook.NameSpace Dim calendarFolder As Microsoft.Office.Interop.Outlook.MAPIFolder Dim calendarItems As Microsoft.Office.Interop.Outlook.Items mapiNamespace = oApp.GetNamespace("MAPI") calendarFolder = mapiNamespace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar) calendarItems = calendarFolder.Items calendarItems.IncludeRecurrences = True 


Powerpoint


Usando o PowerPoint, você pode não apenas criar belas apresentações, mas também usá-lo para papelada, como ofertas comerciais ou relatórios regulares de projeto. Para fazer isso, você precisa mostrar dados de outras fontes no PowerPoint e, é claro, o robô faz um excelente trabalho nisso. Na maioria das vezes, ao criar slides do PowerPoint, é necessário projetá-los com muito bom gosto, para que você possa fazer isso com antecedência e substituir dados reais, copiando os slides do modelo e substituindo os textos por eles.
Microsoft.Office.Interop.Powerpoint e todos os outros assemblies de Interop podem ser encontrados no repositório nuget.org.
Slide duplicado
Devido ao fato de que a Apresentação está em System.Activities e Application - em outra Interop, você precisa escrever os nomes das classes completamente. fileName e slideToCopy - argumentos, sequência e número, respectivamente.

 Dim app As New Microsoft.Office.Interop.PowerPoint.Application Dim pres As Microsoft.Office.Interop.PowerPoint.Presentation Dim newSlide As Microsoft.Office.Interop.PowerPoint.Slide pres = app.Presentations.Open(fileName) newSlide = pres.Slides(slideToCopy).Duplicate()(1) 


Além da coleção Shapes, que contém todos os elementos do slide, você pode atualizar rapidamente as informações necessárias em uma nova página

Trabalhar no Word


Embora as atividades no Pacote de Atividades do Word forneçam recursos básicos do Word, elas não cobrem a funcionalidade completa da biblioteca Xceed DocX na qual foram criadas. O caso mais comum é trabalhar com tabelas, mas existem muitos outros casos.

Existem exemplos diferentes suficientes no repositório do projeto para entender onde esta ou uma biblioteca similar será útil.

API da Web (REST, SOAP)


REST / JSON agora é provavelmente o link principal para fornecer integração com os sistemas que representam a API.

O suporte para REST, SOAP e JSON é fornecido por meio do Web Activities Pack .
Com o REST, tudo é bem simples, como deveria ser: HTTP Request -> Deserialize JSON e agora já temos um JObject com o qual podemos fazer o que quisermos. Para transferir dados para o serviço da web, existe um conveniente editor de parâmetros.

Porém, para o SOAP, infelizmente, a funcionalidade interna é limitada, nem todos os tipos de serviços da Web são suportados, nem todas as solicitações são processadas corretamente. Se o serviço não funcionar, você precisará usar um dos muitos invólucros do HttpClient, por exemplo, SimpleSOAPClient ou escrever o seu próprio (uma variante do trabalho com SOAP do C # ).

ATUALIZAÇÃO 04/03/19: Na versão 2019.4, cuja versão beta já está disponível para download, o componente é atualizado, aprimorado e refeito. Assim, você pode esperar a aparência do suporte SOAP normal muito em breve

Trabalhar com FTP


Aqui no UiPath, tudo é simples, há um conjunto de ações prontas para FTP incluído nas Atividades da Comunidade , embora seja necessário observar que, começando com a versão 18.2 do Pacote de Atividades do FTP no status obsoleto . Mas toda a funcionalidade existe, até o SFTP é suportado (o conjunto é baseado no SSH.NET ), embora, infelizmente, o trabalho com a chave do cliente não tenha sido concluído.

.

Bases de dados


O UiPath trabalha com bancos de dados por meio do .NET Data Provider. Para o MS SQL e o MS Access, tudo é simples; para o restante, você precisa configurar o ODBC e, se não estiver lá, instalar o driver. Lembre-se de que, como atualmente a plataforma é de 32 bits, precisamos fazer o download do driver apropriado e a fonte de dados ODBC deve ser a mesma.

Abaixo está um exemplo para trabalhar com o MySQL.

Configurar conexão MySQL
Configurações do banco de dados MySQL remoto de teste (driver daqui ):

e conectar a ele a partir da ação


Trabalhos futuros com um banco de dados compatível com SQL são bastante padrão - fazemos consultas, obtemos uma DataTable.

SAP através do BAPI


Se o seu SAP oferecer essa oportunidade, você poderá tentar, em vez de trabalhar na interface do usuário, automatizar a integração com o SAP através do BAPI. Como sempre, no UiPath, está pronto para isso
Um conjunto de ações que inclui um assistente para configurar uma conexão com o SAP. Quase não há programação aqui, mas este é um exemplo do fato de que o caminho de integração padrão não é o único possível.

Em conclusão


Espero que, com a ajuda deste artigo, tenha podido falar sobre os aspectos do uso de robôs que não são tão fáceis de aprender na Academia ou no Fórum . Ficaria feliz se alguém se interessasse ou ajudasse a responder perguntas relacionadas ao desenvolvimento de robôs.

Source: https://habr.com/ru/post/pt446092/


All Articles