O que fazer se não houver cubos suficientes para construir um robô?

Meu artigo anterior foi escrito principalmente para gerentes de projeto e gerentes de RPA. Gostaria de abordar este artigo, em primeiro lugar, aos programadores e àqueles que precisam enfrentar a robótica.

Os primeiros processos que um programador RPA recém-criado precisa criar geralmente custam um conjunto de "blocos" padrão que estão na caixa da plataforma. Mas e se eles estiverem faltando? Quase qualquer plataforma RPA moderna pode ser estendida de uma maneira ou de outra, seja chamando um método DLL em AA, código Groovy no WF ou Code Stage na BP.

Mas este artigo foi escrito sobre uma plataforma com a qual estou familiarizado (UiPath); portanto, para aqueles que preferem outros gostos e cores de robôs, não se ofenda com antecedência.



Embora algumas coisas no artigo sejam bastante banais e você possa aprendê-las fazendo os cursos apropriados, lendo a documentação ou estudando o fórum, parece-me que muitos acharão útil vê-las em um só lugar, como um artigo em russo. Se você tiver algum acréscimo ou comentário, tentarei finalizar o artigo para que seja o mais útil e relevante possível.
As maneiras de expandir a funcionalidade do artigo vão do mais simples (download pronto) para o mais difícil (escreva você mesmo).

App store


Obtenha soluções no UiPath Go!

Desde o final de 2018, o UiPath possui algo como uma "loja de aplicativos" chamada Go . Desenvolvedores de todo o mundo, incluindo os próprios funcionários da empresa, compartilham ações úteis (ou não) para o usuário, trechos de código, modelos para aplicativos e outros desenvolvimentos úteis que simplificam bastante a vida.

Há muito de tudo, por exemplo, um excelente conector para o Salesforce, que assume a maior parte do trabalho ou um conector escrito por Abbyy para Abby Flexicapture.

Agora, este é o método de expandir a funcionalidade recomendada pelo próprio fabricante; além disso, a migração de extensões que costumavam residir no repositório oficial do NuGet (Galeria) já começou lá.

Você já viu o PackageManager?


UiPath PackageManager

Um pouco mais grave, mas ainda bastante acessível para o usuário comum, está usando a funcionalidade do gerenciador de pacotes.

Foi implementado através do NuGet , o que significa que, além de usar repositórios "públicos", ninguém nos incomoda em criar nosso próprio e usá-lo dentro da empresa para distribuir ações e bibliotecas de nosso próprio design.

Pesquisamos no gerenciador de pacotes a palavra-chave UiPath e obtemos um grande número de ações diferentes que aumentam drasticamente nossos recursos sem exigir nenhum esforço de nós.

Portanto, agora, componentes de plataforma bastante oficiais são distribuídos, como o Pacote de Atividades da Web (para trabalhar com API SOAP e REST ), Word (baseado no Xceed DocX ) ou Zip (adivinhe com o que você está trabalhando).

Repositórios onde os principais "presentes" são:


Via código de invocação


A maneira mais fácil e rápida de adicionar funcionalidade ao seu processo, se não houver "blocos" prontos suficientes e você não conseguir encontrá-los.

Você pode escrever um pequeno pedaço de código no VB.Net e colá-lo na ação InvokeCode . Assim, você pode, por exemplo, trabalhar com chamadas API complicadas no Rest, nos casos em que o UiPath.Web.Activities.HttpClient padrão não UiPath.Web.Activities.HttpClient suficiente ou usar bibliotecas externas, como Xceed DocX PdfSharp ou PdfSharp .
Não se empolgue com esse e outros métodos semelhantes se você tiver mais de 10 linhas de código dentro do InvokeCode . Embora o Intellisense e a validação funcionem lá, seus colegas não agradecerão por apoiar esses "programas". Leve-os para uma ação do usuário ou um programa externo, pois existem métodos suficientes para isso.
Do mesmo modo, ainda existe o Invoke Method , que, em princípio, permite chamar o método de qualquer classe que é adicionada ao projeto por meio de dependências.
Por exemplo , aqui é usado para descompactar o arquivo morto

Exemplo de método de chamada

Via Invoke <qualquer outra coisa>


Além do VB.NET UiPath "nativo", você pode usar muitos outros métodos de programação, como se costuma dizer "para todos os gostos, para todas as necessidades".

Powershell


Powershell Excel

Se o VB.NET não VB.NET suficiente, outras linguagens de programação serão úteis. Por exemplo, com aplicativos de escritório, é conveniente para um administrador experiente trabalhar com o Powershell e usar a ação Invoke Power Shell , respectivamente.

No mesmo Outlook, por exemplo, você pode pressionar infinitamente os botões para fazer o que alguns comandos fazem com o PS.

Esse script, por exemplo, retornará a última letra em uma pasta arbitrária
 Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null $olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type] $outlook = new-object -comobject outlook.application $namespace = $outlook.GetNameSpace("MAPI") $inbox = $namespace.getDefaultFolder($olFolders::olFolderInbox) $folder = $inbox.Folders.Item(“ ”) ($folder.Items.Restrict('[UnRead] = True') | Select-Object -Last 1) 


Objetos COM


Nos sistemas modernos, a necessidade disso, obviamente, não é tão grande, mas com a ajuda do Invoke COM Method você pode ativar a funcionalidade oculta em algumas DLL.

Vba


Se você trabalha com o Excel, pode "definir" um script VBA executando o Invoke VBA. O script deve estar em um arquivo separado (isso é conveniente, considerando que agora os arquivos do Office com macros não são muito apreciados). Isso será conveniente para quem é bom em programação no VBA e não deseja abandonar as bibliotecas estabelecidas.

Python


Uma grande ajuda para trabalhar com o ML e todos os tipos de cálculos é a capacidade de incorporar scripts python no processo. Para começar a trabalhar com eles, você precisa fazer vários gestos adicionais. Primeiro, essas ações agora são apresentadas em um conjunto legal, mas não oficialmente suportado, de ações de atividades da comunidade no GitHub. Em segundo lugar, você precisa instalar o Python, e certamente a versão 3.6 e sempre na raiz da unidade C.
A propósito, nas mesmas atividades da comunidade há criptografia, FTP e algumas outras coisas potencialmente úteis.

A documentação e o código de amostra (desatualizado) podem ser baixados aqui . Se alguém precisar de ajuda com a integração do UiPath e do Python - write, tentarei contar com mais detalhes.

Java


Sobre a mesma coisa - o pacote é montado independentemente das atividades da comunidade. Arquivos .jar suportados compilados usando o JDK 1.5 e posterior. O caminho para Java deve estar escrito em PATH .

O site do UiPath possui documentação para uso e um processo de exemplo usando Java .

Através de ações do usuário


Infelizmente, nem todos podem usar a loja de aplicativos ou os pacotes de outras pessoas. Freqüentemente, por exemplo, o serviço de segurança não poderá usar peças de robôs que não sejam escritas pelo fornecedor ou dentro da empresa. Então você tem que arregaçar as mangas.

A plataforma UiPath é criada usando o Microsoft Workflow Foundation . Para nós, isso significa que você sempre pode escrever sua própria ação (Atividade) e adicioná-la ao processo. Se o uso ativo por usuários de negócios for esperado, a ação poderá ser transformada em uma bela interface do usuário personalizada com a ajuda de um designer de formulários e, se você precisar mais rapidamente, será necessário um simples retângulo configurado em Propriedades.

Felizmente, o processo de criação de uma ação é documentado , embora não seja muito detalhado, mas você sempre pode usar a [documentação MS] em larga escala (https://docs.microsoft.com/en-us/dotnet/framework/windows-workflow-foundation/) em escrevendo ações e artigos sobre eles na Internet.

Um exemplo da ação mais simples em C #
 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Activities; using System.ComponentModel; namespace ClassMathCustomActivity { public class SimpleFormula : CodeActivity { [Category("Input")] [RequiredArgument] public InArgument<double> FirstNumber { get; set; } [Category("Input")] public InArgument<double> SecondNumber { get; set; } [Category("Output")] public OutArgument<double> ResultNumber { get; set; } protected override void Execute(CodeActivityContext context) { var firstNumber = FirstNumber.Get(context); var secondNumber = SecondNumber.Get(context); var result = System.Math.Pow(firstNumber + secondNumber, 2); ResultNumber.Set(context, result); } } } 


A ação criada deve ser empacotada em .nupkg usando o NuGet Package Explorer e, em seguida, o pacote criado deve ser adicionado ao Studio.

É melhor não iniciar a primeira ação do zero, mas tirar proveito das atividades da comunidade mencionadas anteriormente, onde existem muitas ações prontas de complexidade variada.

Em conclusão


Como você pode ver, existem opções mais do que suficientes para expandir a funcionalidade, desde o InvokeCode mais simples até a criação de sua própria ação. Isso significa que, independentemente da tarefa que você esteja enfrentando, sempre haverá a oportunidade de resolvê-la rapidamente, muitas vezes sem nem mesmo inventar uma bicicleta :)

Espero que este artigo seja útil para você ao criar processos legais de robôs. Ficarei feliz se você contar o quanto essas informações foram relevantes para você e o que mais você gostaria de saber.

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


All Articles