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

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?

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

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

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.