Mi
artículo anterior fue escrito principalmente para gerentes de proyectos y gerentes de RPA. Me gustaría dirigir este artículo, en primer lugar, a los programadores y aquellos que tienen que enfrentarse cara a cara con la robótica.
Los primeros procesos que debe crear un programador RPA recién creado generalmente cuestan un conjunto de "bloques" estándar que se encuentran en la caja con la plataforma. ¿Pero y si faltan? Casi cualquier plataforma RPA moderna se puede extender de una forma u otra, ya sea llamando a un método DLL en AA, código Groovy en WF o Code Stage en BP.
Pero este artículo está escrito sobre una plataforma con la que estoy familiarizado (UiPath), por lo que para aquellos que prefieren otros gustos y colores de robots, no se ofendan de antemano.

Aunque algunas cosas en el artículo son bastante banales y puedes aprenderlas tomando los cursos apropiados, leyendo la documentación o estudiando el foro, me parece que a muchos les resultará útil verlos en un solo lugar, como un artículo en ruso. Si tiene alguna adición o comentario, intentaré finalizar el artículo para que sea lo más útil y relevante posible.
Las formas de expandir la funcionalidad en el artículo van desde las más simples (descargar listas para usar) hasta las más difíciles (escriba las suyas propias).
Tienda de aplicaciones

Desde finales de 2018, UiPath tiene algo así como una "tienda de aplicaciones" llamada
Go . Los desarrolladores de todo el mundo, incluidos los propios empleados de la compañía, comparten acciones útiles (o no) de los usuarios, piezas de código, plantillas para aplicaciones y otros desarrollos útiles que simplifican enormemente la vida.
Hay mucho de todo allí, por ejemplo,
un excelente conector para Salesforce, que asume la mayor parte del trabajo o un
conector escrito por Abbyy para Abby Flexicapture.
Ahora, este es el método para expandir la funcionalidad recomendada por el propio fabricante, además, la migración de extensiones que solían vivir en el repositorio oficial de NuGet (Galería) ya ha comenzado allí.
¿Has mirado el PackageManager?

Un poco más duro, pero aún bastante accesible para el usuario promedio, está utilizando la funcionalidad del administrador de paquetes.
Se implementó a través de
NuGet , lo que significa que, además de usar repositorios "públicos", nadie nos molesta en crear los nuestros y usarlos dentro de la empresa para distribuir acciones y bibliotecas de nuestro propio diseño.
Buscamos en el administrador de paquetes la palabra clave
UiPath y obtenemos una gran cantidad de acciones diferentes que aumentan drásticamente nuestras capacidades sin requerir ningún esfuerzo por nuestra parte.
Por lo tanto, ahora se distribuyen componentes de la plataforma bastante oficiales, incluido el Paquete de actividades web (para trabajar con
SOAP
y
REST
API), Word (basado en
Xceed DocX
) o Zip (adivine con qué está trabajando).
Repositorios donde los principales "productos" son:
Vía Código de invocación
La forma más fácil y rápida de agregar funcionalidad a su proceso si no hay suficientes "bloques" ya listos y no puede encontrarlos.
Puede escribir un pequeño fragmento de código en
VB.Net
y pegarlo en la acción
InvokeCode
. Por lo tanto, puede, por ejemplo, trabajar con llamadas API difíciles en Rest en casos en que el estándar
UiPath.Web.Activities.HttpClient
no
UiPath.Web.Activities.HttpClient
suficiente o usar bibliotecas externas como
Xceed DocX
o
PdfSharp
.
No se deje llevar por este y otros métodos similares si tiene más de 10 líneas de código dentro de InvokeCode
. Aunque Intellisense y la validación funcionan allí, sus colegas no le agradecerán por apoyar tales "programas". Llévelos a una acción del usuario o un programa externo, ya que hay suficientes métodos para esto.
Del mismo modo, todavía existe el
Invoke Method
, que, en principio, le permite llamar al método de cualquier clase que se agregue al proyecto a través de dependencias.
Por ejemplo
, aquí se usa para descomprimir el archivo

Vía Invocar <cualquier otra cosa>
Además del "nativo"
VB.NET
UiPath le permite utilizar muchos otros métodos de programación, como dicen "para todos los gustos, para todas las necesidades".
Powershell

Si
VB.NET
no
VB.NET
suficiente, otros lenguajes de programación vienen al rescate. Por ejemplo, con las aplicaciones de Office, es conveniente que un administrador experimentado trabaje a través de
Powershell
y use la acción
Invoke Power Shell
, respectivamente.
En el mismo Outlook, por ejemplo, puede presionar infinitamente los botones para hacer lo que hacen un par de comandos con PS.
Tal script, por ejemplo, devolverá la última letra en una carpeta arbitraria 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
En los sistemas modernos, la necesidad de esto, por supuesto, no es tan grande, pero con la ayuda del
Invoke COM Method
puede recurrir a la funcionalidad oculta en alguna DLL.
Vba
Si trabaja con Excel, puede "configurar" un script de VBA ejecutando Invoke VBA. El script debe estar en un archivo separado (esto es conveniente, considerando que ahora los archivos de Office con macros no son muy apreciados). Esto será conveniente para aquellos que son buenos para programar en VBA y no quieren abandonar las bibliotecas establecidas.
Pitón
Una gran ayuda para trabajar con ML y todo tipo de cálculos es la capacidad de incorporar scripts de Python en el proceso. Para comenzar a trabajar con ellos, debe hacer varios gestos adicionales. En primer lugar, estas acciones ahora se presentan en un conjunto genial, pero no oficialmente respaldado, de acciones de
actividades comunitarias en GitHub. En segundo lugar, debe instalar Python, y ciertamente la versión 3.6 y siempre en la raíz de la unidad C.
Por cierto, en las mismas actividades de la comunidad hay criptografía, FTP y algunas otras cosas potencialmente útiles.
La documentación y el código de muestra (obsoleto) se pueden
descargar aquí . Si alguien necesita ayuda con la integración de UiPath y Python, escriba, intentaré contarlo con más detalle.
Java
Casi lo mismo: el paquete se ensambla independientemente de las actividades de la comunidad. Archivos .jar compatibles compilados con JDK 1.5 y versiones posteriores. La ruta a Java debe explicarse en
PATH
.
El sitio web de UiPath tiene
documentación para su uso y
un proceso de ejemplo con Java .
A través de acciones del usuario
Desafortunadamente, no todos pueden usar la tienda de aplicaciones o los paquetes de otras personas. A menudo, por ejemplo, el servicio de seguridad no podrá usar piezas de robots que no estén escritas por el proveedor o dentro de la empresa. Entonces tienes que arremangarte las mangas.
La plataforma UiPath está construida con
Microsoft Workflow Foundation . Para nosotros, esto significa que siempre puede escribir su propia acción (Actividad) y agregarla al proceso. Si se espera un uso activo por parte de los usuarios comerciales, la acción se puede convertir en una hermosa interfaz de usuario personalizada utilizando el diseñador de formularios, y si lo necesita más rápido, entonces un simple rectángulo que se puede configurar desde Propiedades servirá.
Afortunadamente, el proceso de creación de una acción está
documentado , aunque no es muy detallado, pero siempre puede utilizar la [documentación de MS] a gran escala (https://docs.microsoft.com/en-us/dotnet/framework/windows-workflow-foundation/) por escribir acciones y artículos sobre ellos en Internet.
Un ejemplo de la acción más simple en 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); } } }
La acción creada debe empaquetarse en
.nupkg
utilizando el
Explorador de paquetes NuGet , y luego el paquete creado debe agregarse a Studio.
Es mejor no comenzar la primera acción desde cero, sino usar las
actividades de la comunidad mencionadas anteriormente, donde hay muchas acciones preparadas de diversa complejidad.
En conclusión
Como puede ver, hay opciones más que suficientes para expandir la funcionalidad, desde el InvokeCode más simple hasta escribir su propia acción. Esto significa que no importa qué tarea esté enfrentando, siempre existe la oportunidad de resolverlo rápidamente, a menudo sin siquiera inventar una bicicleta :)
Espero que este artículo te sea útil al crear procesos geniales de robots. Me alegrará que diga cuánto le interesó esta información y qué más le gustaría saber.