- Primeros pasos
- Instalación y configuración
- Proyectos de automatización
- Acerca de la publicación de proyectos de automatización
- Diseñar automatizaciones
- Gestionar paquetes de actividades
- Configuración de los Ajustes del Proyecto de Actividades
- Firma de paquetes
- Control
- Importar entidades
- Experiencia de diseño moderna
- Vincular un proyecto a una idea en Automation Hub
- Usar Data Manager
- Dependencias
- Tipos de flujos de trabajo
- Flujo de control
- Comparación de archivos
- Mejores prácticas de automatización
- Integración del control de código fuente
- Depuración
- Registro
- La herramienta de diagnóstico
- Analizador de flujo de trabajo
- Acerca del analizador de flujo de trabajo
- ST-NMG-001: convención sobre nombres de variables
- ST-NMG-002: convención de nombres de argumentos
- ST-NMG-004: duplicación de nombres de visualización
- ST-NMG-005: anulación de variables
- ST-NMG-006: argumentos de anulación de variables
- ST-NMG-008: longitud variable excedida
- ST-NMG-009: variables de datos prefijados
- ST-NMG-011: argumentos de prefijo Datatable
- ST-NMG-012: valores predeterminados de los argumentos
- ST-NMG-016: longitud del argumento excedida
- ST-NMG-017: el nombre de la clase coincide con el espacio de nombres predeterminado
- ST-DBP-002: recuento de Argumentos elevado
- ST-DBP-003: bloque de Catch vacío
- ST-DBP-007: múltiples capas de diagramas de flujo
- ST-DPB-010: varias instancias de [flujo de trabajo] o [caso de prueba]
- ST-DBP-020: propiedades de salida no definidas
- ST-DBP-021: tiempo de espera codificado
- ST-DBP-023: flujo de trabajo vacío
- ST-DBP-024: comprobación de actividad de persistencia
- ST-DBP-025: requisito previo para la serialización de variables
- ST-DBP-026: retraso en el uso de la actividad
- ST-DBP-027: mejor práctica de persistencia
- ST-DBP-028: requisito de serialización de argumentos
- ST-USG-005: argumentos de actividad codificados
- ST-USG-009: variables no utilizadas
- ST-USG-010: dependencias sin utilizar
- ST-USG-014: restricciones de los paquetes
- ST-USG-017: modificador de parámetro no válido
- ST-USG-020: mensajes de registro mínimos
- ST-USG-024: guardado sin usar para más adelante
- ST-USG-025: uso incorrecto de los valores guardados
- ST-USG-026: restricciones de actividad
- ST-USG-027: paquetes necesarios
- ST-USG-028: Restringir la invocación de plantillas de archivo
- ST-USG-032 - Etiquetas obligatorias
- ST-USG-034 - URL Automation Hub
- Variables
- Gestión de variables
- El panel de variables
- Tipos de variables
- Variables propias de UiPath
- Argumentos
- Espacios de nombres importados
- Automatizaciones codificadas
- Introducción
- Registrar servicios personalizados
- Contextos Antes y Después
- Generando código
- Generar casos de prueba codificados a partir de casos de prueba manuales
- Automatización atendida basada en desencadenadores
- Grabación
- Elementos de la IU
- Selectores
- Repo. de objetos
- Extracción de datos
- Automatización de imágenes y texto
- Acerca de la automatización de imágenes y texto
- Actividades con el ratón y el teclado
- Ejemplo de uso de la automatización de ratón y teclado
- Actividades de texto
- Ejemplo de uso de la automatización de texto
- Actividades de OCR
- Actividades de imagen
- Ejemplo de uso de la automatización de OCR y la automatización de imágenes
- Automatización de Citrix Technologies
- Automatización RDP
- Automatización de VMware Horizon
- Automatización de Salesforce
- Automatización SAP
- Automatización de IU de macOS
- La herramienta ScreenScrapeJavaSupport
- El protocolo WebDriver
- Extensiones
- Acerca de las extensiones
- Herramienta SetupExtensions
- UiPathRemoteRuntime.exe no se está ejecutando en la sesión remota
- UiPath Remote Runtime impide que la sesión de Citrix pueda cerrarse
- UiPath Remote Runtime provoca una fuga de memoria
- El paquete UiPath.UIAutomation.Activities y las versiones de UiPath Remote Runtime no coinciden
- La extensión de UiPath necesaria no está instalada en la máquina remota
- Configuración de la resolución de la pantalla
- Group Policies
- No se puede comunicar con el navegador
- La extensión de Chrome se elimina automáticamente
- Es posible que la extensión se haya dañado
- Comprueba si la extensión para Chrome está instalada y habilitada
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Habilitar el acceso a las URL de archivos y el modo de incógnito
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- Lista de extensiones para Chrome
- Extensión de Chrome en Mac
- Group Policies
- No se puede comunicar con el navegador
- La extensión de Edge se elimina automáticamente
- Es posible que la extensión se haya dañado
- Check if the Extension for Microsoft Edge is installed and enabled
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Enable access to file URLs and InPrivate mode
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- Lista de extensiones para Edge
- Extensión para Safari
- Extensión para VMware Horizon
- Extensión para Amazon WorkSpaces
- Complemento SAP Solution Manager
- Add-in de Excel
- Conjunto de pruebas - Estudio
- Solución de problemas
- Acerca de la resolución de problemas
- Compatibilidad y limitaciones de Microsoft App-V
- Solución de problemas de Internet Explorer x64
- Problemas de Microsoft Office
- Identificación de elementos de la interfaz de usuario en PDF con opciones de accesibilidad
- Reparar Soporte Active Accessibility
- Validation of large Windows-legacy projects takes longer than expected
Guía de usuario de Studio
Variables propias de UiPath
La variable GenericValue es un tipo de variable que puede almacenar cualquier tipo de datos, incluidos texto, números, fechas y matrices, y es particular de Studio.
Las variables GenericValue se convierten automáticamente en otros tipos, para realizar ciertas acciones. Sin embargo, es importante usar este tipo de variables con cuidado, ya que su conversión puede no ser siempre la correcta para el proyecto.
UiPath Studio dispone de un mecanismo de conversión automática de las variables GenericValue, que puede guiar hacia el resultado deseado definiendo cuidadosamente sus expresiones. Ten en cuenta que el primer elemento de tu expresión se usa como guía para la operación que realiza Studio. Por ejemplo, cuando se intenta sumar dos variables GenericValue, si la primera en la expresión está definida como una Cadena, el resultado es la concatenación de las dos. Si se define como un Entero, el resultado es su suma.
Nombre/Sintaxis |
Descripción |
---|---|
CompareTo
| |
Contiene
|
Se usa para comprobar si una variable de cadena contiene una determinada subcadena o no. Por ejemplo, si quieres comprobar si una frase contiene una palabra concreta, la expresión debe ser
[SentenceVariable].Contains("term") , donde [SentenceVariable] es la variable GenericValue que contiene la frase y "term" es la palabra que se busca.
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
Igual
| |
GetHashCode
| |
GetType
| |
GetTypeCode
| |
IndexOf
|
Se usa para devolver el índice de una subcadena contenida dentro de una variable de cadena. Por ejemplo, si quieres encontrar el índice de la palabra "localizar" dentro de la frase "Buscar 'localizar' en esta frase", la expresión debe ser
[SentenceVariable].IndexOf("locate") , donde [SentenceVariable] es la variable GenericValue que contiene la frase y "locate" es el término a buscar.
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
Longitud
|
Se usa para devolver el número de caracteres de una variable de cadena. Por ejemplo, si quieres saber cuántas letras tiene una palabra, la expresión debe ser
[WordVariable].Length , donde [WordVariable] es la variable GenericValue que contiene la palabra.
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
Reemplazar
|
Se usa para reemplazar los datos contenidos dentro de una variable de cadena. Por ejemplo, si quieres cambiar la ruta de un archivo local
C:\ExampleFolder\Main.xaml por la correspondiente del servidor C:/ExampleFolder/Main.xaml , la expresión debe ser [PathVariable].Replace("\","/") donde [PathVariable] es la variable GenericValue que contiene la ruta del archivo, "\" es el carácter a sustituir y "/" es el carácter usado como reemplazo.
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
Dividir
|
Se usa para devolver componentes individuales de una variable de cadena. Por ejemplo, si quieres extraer el año de un formato de fecha MM.DD.YYYY, la expresión deberá ser
[DateVariable].Split(".".ToCharArray)(2) , donde [DateVariable] es la variable GenericValue que contiene la fecha, "." es el carácter usado como separador, .ToCharArray es un método que crea una matriz con los elementos delimitados por el separador y (2) representa el índice del elemento a devolver, en nuestro caso, el año.
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
Subcadena
|
Se usa para devolver una subcadena contenida en una variable de cadena. Por ejemplo, si quieres extraer una palabra de la frase "Hay 100 máquinas disponibles", la expresión debería ser
[SentenceVariable].Substring(10,3) , donde [SentenceVariable] es la variable de GenericValue que contiene la frase, 10 es el índice del primer carácter a devolver y 3 es la longitud de la subcadena a partir del primer carácter. En este ejemplo, la subcadena resultante sería "100".
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
ToBoolean
| |
ToByte
| |
ToChar
| |
ToDecimal
| |
ToDouble
| |
ToInt
|
Se usa para convertir un valor especificado en un entero anulable. Nota: cuando se usa este método con una variable de GenericValue de tipo Booleano, los valores "Verdadero" y "Falso" se convierten en 1 y 0, respectivamente.
|
ToInt16
|
Nota: cuando se usa este método con una variable de GenericValue de tipo Booleano, los valores "Verdadero" y "Falso" se convierten en 1 y 0, respectivamente.
|
ToInt32
|
Nota: cuando se usa este método con una variable de GenericValue de tipo Booleano, los valores "Verdadero" y "Falso" se convierten en 1 y 0, respectivamente.
|
ToInt64
|
Nota: cuando se usa este método con una variable de GenericValue de tipo Booleano, los valores "Verdadero" y "Falso" se convierten en 1 y 0, respectivamente.
|
ToLower
|
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
ToLowerInvariant
|
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
ToSByte
| |
ToSingle
| |
ToString
| |
ToType
| |
ToUInt16
|
Nota: cuando se usa este método con una variable de GenericValue de tipo Booleano, los valores "Verdadero" y "Falso" se convierten en 1 y 0, respectivamente.
|
ToUInt32
|
Nota: cuando se usa este método con una variable de GenericValue de tipo Booleano, los valores "Verdadero" y "Falso" se convierten en 1 y 0, respectivamente.
|
ToUInt64
|
Nota: cuando se usa este método con una variable de GenericValue de tipo Booleano, los valores "Verdadero" y "Falso" se convierten en 1 y 0, respectivamente.
|
ToUpper
|
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
ToUpperInvariant
|
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
Recortar
|
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
TrimEnd
|
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
TrimStart
|
Nota: cuando se usa este método con una variable GenericValue de tipo Int, Flotante o Booleano, los datos se convierten automáticamente en Cadena y se manejan en consecuencia.
|
Cuando se usa Ctrl + K, Ctrl + M o Ctrl + Shift + M directamente en el cuerpo de la actividad Valor de Formato, la variable o argumento creado es de tipo GenericValue. Para otras actividades, el tipo creado es el mismo que el tipo requerido de la actividad.
Para demostrar cómo funciona una variable GenericValue, vamos a crear una automatización que realiza diferentes operaciones cuyos resultados dependen de la forma en que definimos sus expresiones. Creamos dos variables GenericValue de diferentes tipos de datos y mostramos los resultados en el panel de Salida.
- Crea un nuevo proyecto en blanco.
- Crea tres variables de GenericValue:
Int
,Str
yResult
. -
En la columna Predeterminado para la variable
Int
, escribe 12, y para la variable,Str
escribe "34". La primera variable se interpreta como un número entero, mientras que la segunda se interpreta como una cadena. - Agrega una actividad de Asignación al panel del Diseñador y conéctala al nodo de Inicio.
- En el panel de Propiedades, en el campo Para, ingresa la variable
Result
. - En el campo Valor, escribe
Int
+Str
. - Agrega una actividad de Escribir Línea y conéctala con la de Asignar.
-
Haz doble clic en la tarjeta de actividad y en el campo Texto, introduce la variable
Result
.El proyecto deberá verse como en la siguiente captura de pantalla.
-
Presiona F5 para ejecutar la automatización. Ten en cuenta que, en el panel de Salida, se muestra la suma de los dos números.
-
Vuelve a la actividad de Asignar agregada anteriormente y cambia el campo Valor a
Str
+Int
, para invertir el orden de las variables. El proyecto deberá verse como en la siguiente captura de pantalla. -
Presiona F5 para ejecutar la automatización. Ten en cuenta que, en el panel de Salida, se muestra la concatenación de los dos números.
Esto significa que UiPath Studio toma el primer elemento definido en su expresión como guía para la operación a realizar. Si el primer elemento de la expresión es un entero o una variable GenericValue rellenada como entero, UiPath Studio realizará la suma de los elementos.
Si el primer elemento de la expresión es una cadena o una variable GenericValue rellenada como cadena, UiPath Studio realizará la concatenación de los elementos.
Recomendamos que consultes la página Sobre colas y transacciones, para que tengas una idea general sobre las colas y las transacciones antes de continuar con la variable ArtículoEnCola.
Antes de entrar en detalles sobre el tema, asegúrate de entender la distinción entre elementos de cola (elementos almacenados en una cola en Orchestrator) y variables QueueItem (variables usadas en Studio para procesar elementos de cola). Nos referimos a ellos exactamente así: "variables QueueItem" y "elementos de la cola".
En términos generales, como su nombre indica, la variable QueueItem almacena un elemento que ha sido extraído de un contenedor de elementos, una cola. Esta extracción se realiza generalmente con el fin de usar posteriormente los elementos de la cola en varios escenarios. Digamos que representas a una institución bancaria y tienes un informe de depósitos de 50 clientes. Quieres procesar los datos de cada cliente que haya depositado previamente una Comprobación On-Us menor a 5000 $, usando una aplicación financiera de terceros. En este sentido, se puede hacer un flujo de trabajo en el que la variable QueueItem almacene, por turno, la información de cada cliente. Cada entrada leída por la variable QueueItem se almacena en un elemento de cola y se agrega a la cola designada en Orchestrator. El resultado de todo este proceso es una cola que contiene la información de los clientes, cada uno en el elemento de cola correspondiente.
Para seguir procesando los datos que cumplen la condición, debes crear otro flujo de trabajo que extraiga de la cola creada anteriormente, los elementos con un valor de Comprobación On-Us correspondiente menor que 5000 $. Al final de este tema se ofrece un procedimiento paso a paso sobre cómo crear un proyecto de este tipo.
Nombre/Sintaxis |
Descripción |
---|---|
Igual
| |
GetHashCode
| |
GetType
| |
ToString
|
Nombre/Sintaxis |
Descripción |
---|---|
AssignedTo
| |
DueDate
|
La fecha y la hora máximas en las que debe procesarse el elemento. Si está vacío, el elemento puede ser procesado en cualquier momento. |
DeferDate
|
La fecha y hora más tempranas en las que el elemento está disponible para su procesamiento. Si está vacío, el elemento puede ser procesado tan pronto como sea posible. |
ID
| |
ItemKey
|
El identificador único del elemento. Por ejemplo,
1bf829e1-cd6b-4275-a364-19db3cfe09c7 .
|
Prioridad
|
La prioridad del elemento de la cola definida en Studio en el campo Prioridad del panel Propiedades. |
ProcessingException
|
La excepción de procesamiento de un elemento fallido. |
Progreso
|
Información de progreso personalizada sobre un elemento de la cola cuyo estado es InProgress. |
QueueDefinitionId
|
El identificador único de la cola bajo la cual se creó un elemento de cola o una transacción. |
NombreDeCola
|
El nombre de la cola que contiene los elementos procesados. |
Referencia
|
Un valor especificado por el usuario para facilitar la identificación de los elementos de la cola. |
RetryNo
|
El número de veces que se ha vuelto a intentar el elemento. |
ReviewStatus
|
El estado de revisión del elemento de la cola tal y como se recupera de Orchestrator. |
RowVersion
|
Un campo interno usado para estampar la versión. Se actualiza cada vez que se modifica una propiedad de la transacción actual. |
SpecificContent
|
Una colección de pares de valores clave que contienen datos personalizados asociados a la transacción actual, tal y como se ha configurado en la actividad Agregar elemento de la cola. |
StartTransactionTime
|
La hora y la fecha de inicio del procesamiento de la transacción. |
Estado
|
El estado del elemento de la cola tal y como se recupera de Orchestrator. |
Debido a la naturaleza de este ejemplo, hemos dividido esta sección en dos partes, cada una de las cuales representa uno de los dos flujos de trabajo principales que se usan cuando se trabaja con colas y elementos de cola:
Cargar elementos en una cola
.xlsx
. Digamos que representas a una institución bancaria y tienes un informe de depósitos de 50 clientes. Deseas procesar los datos de cada cliente que haya depositado previamente una comprobación menor que 5000 $, usando una aplicación financiera de terceros. El informe contiene el nombre del cliente, el valor de On-Us Check y otros dos valores adicionales, digamos Cash In y Not On-Us Check. Creamos un flujo de trabajo en el que la variable QueueItem almacena, por turno, la información de cada cliente. Cada entrada leída por la variable QueueItem se almacena en un elemento de cola y se agrega a la cola designada en Orchestrator. El resultado de todo este proceso es una cola que contiene la información específica de cada cliente. Antes de pasar al flujo de trabajo propiamente dicho, es posible que desees consultar el informe de los clientes aquí. Vamos a trabajar con la hoja "Informes de julio".
Sin más demora:
- Crea una nueva secuencia.
- Añade una actividad Ámbito del proceso de Excel en la secuencia.
- Añade una actividad Usar archivo de Excel y define la ubicación del libro en el campo Archivo de Excel de la actividad.
- Añade una actividad Leer intervalo para leer el intervalo de valores deseado del informe y guárdalos en una variable de TablaDeDatos.
- A la derecha del campo Rango, selecciona Más > Excel > Indicar en Excel y selecciona un rango de celdas (por ejemplo, A1:D51).
-
En el campo Guardar en, presiona Ctrl + K para crear una nueva variable de TablaDeDatos que almacene el intervalo de datos leído anteriormente. Nómbralo
dt_DataTable1
o algo similar. El panel de Variables también debería mostrar la variable recién creada de la siguiente manera:
-
A continuación, agrega una actividad Para cada Fila en la tabla de datos al panel del Diseñador y rellena los campos en blanco con "fila" y el nombre de la variable de la TablaDeDatos,
dt_DataTable1
, respectivamente. Esta actividad realiza la acción definida en su interior para cada fila en la tabla de datos. Esta secuencia debería ahora tener un aspecto similar al que aparece en la siguiente captura de pantalla:
- Añade una actividad Añadir elemento en cola en la actividad Para cada Fila de la tabla de datos. Esto agrega un elemento a una cola (definida más adelante en los pasos 8 y 12), para cada fila de la hoja de cálculo.
- En el campo Nombre de cola, introduce el nombre de una cola en la que quieres almacenar tus elementos, digamos
ReportQueue
. -
Haz clic en el campo, bajo Información del elemento para abrir la ventana del Creador de diccionarios. Crea 4 argumentos, cada uno correspondiente a una columna del informe. Defínelos como sigue:
Name
, manteniendo los valores predeterminados para Dirección y Tipo, y con Valor establecido enrow(0).ToString
. Esto recupera el valor de la columna con el contador 0 para cada fila del libro de trabajo, en nuestro caso el nombre del cliente.CashIn
, manteniendo los valores predeterminados para Dirección y Tipo, y con Valor establecido enrow(1).ToString
. Esto recupera el valor de la columna con el contador 1 para cada fila en el libro de trabajo, en nuestro caso el valor de Cash In.OnUsCheck
, manteniendo los valores predeterminados para Dirección y Tipo, y con Valor establecido enrow(2).ToString
. Esto recupera el valor de la columna con el contador 2 para cada fila del libro de trabajo, en nuestro caso el valor de la comprobación On-Us.NotOnUsCheck
, manteniendo los valores predeterminados para Dirección y Tipo, y con Valor establecido enrow(3).ToString
. Esto recupera el valor de la columna con el contador 3 para cada fila en el libro de trabajo, en nuestro caso el valor de No Comprobación On-Us.
-
La ventana del Creador de diccionarios debería tener un aspecto similar al que aparece en la siguiente captura de pantalla:
- Conecta el Robot de Studio a Orchestrator. Para obtener más detalles sobre cómo hacerlo, haz clic aquí.
- navega a https://cloud.uipath.com, inicia sesión con tus credenciales y luego crea una cola, ReportQueue, para almacenar los elementos. Asegúrate de que, sea cual sea el nombre que hayas usado antes (paso 8), uses el mismo aquí.
- Vuelve a Studio. En este punto el flujo de trabajo debería estar libre de errores y ser funcional, por lo que el siguiente paso es ponerlo a disposición de Orchestrator. En este sentido, haz clic en Diseño > Publicar.
-
Para ejecutar el proceso, haz clic en Diseño > Ejecutar.
Nota: Ten en cuenta que, una vez procesados, los artículos en cola se convierten en transacciones y se manejan como tales desde de ese momento. - Ve a https://cloud.uipath.com de nuevo y muestra las transacciones.
Procesar las transacciones de una cola
Para demostrar cómo procesar aún más las transacciones de una cola, vamos a crear un segundo flujo de trabajo que recupere de la cola apropiada, las transacciones con un valor de Comprobación On-Us menor a 5000 $. Para cada transacción que cumple la condición, se recogen los valores y se introducen en una aplicación ficticia de terceros. Las otras están etiquetadas como excepciones comerciales.
- Ve a Diseño > Nuevo > Diagrama de flujo para crear un nuevo archivo en el proyecto iniciado anteriormente.
- Añade una actividad Usar aplicación/navegador para abrir la aplicación ficticia de terceros. Conéctala al nodo de Inicio.
- Rellena los detalles requeridos (Nombre para mostrar, Ruta del archivo, Selector) en el panel Propiedades, y configura la actividad para iniciar sesión con las credenciales correspondientes. Usa
admin
para el campo Nombre de usuario, ypassword
para el campo Contraseña. - En el campo Ruta del archivo, introduce la ruta de la aplicación.
- En el campo Selector, usando el Selector Editor, define un selector para UIDemo.
- Agrega una actividad Deberá Detener al panel del Diseñador y conéctala a la actividad Abrir Aplicación.
-
Agrega una actividad de Decisión de Flujo al panel Diseñador y conéctala a la actividad Deberá Detener. Estas dos últimas actividades comprobarán si se ha detenido el trabajo mientras estaba en marcha. Esto permitirá configurar aún más el flujo de trabajo para realizar varias rutinas de seguridad después de la activación de la parada. Consulta a continuación un ejemplo de este tipo de rutina:
- Agrega una actividad de Mensaje de Registro y conéctala a la rama Verdadero de la decisión de flujo anteriormente agregada.
- En el panel de Propiedades, en el campo Mensaje, escribe "Se requiere detener el proceso" o algo similar para que se muestre si se activa la parada.
- Agrega una actividad de Cierre de aplicación y conéctala a la actividad de Registrar mensaje previamente agregada.
- En el panel de Propiedades, en el campo Nombre para mostrar, después de Cerrar la aplicación, escribe
UIDemo.exe UIDemo
.
- Agrega una actividad de Obtener elemento de transacción a la rama Falso de la decisión de flujo agregada previamente (paso 7). Esta actividad recupera los elementos de la transacción de la cola y los almacena, por turno, con cada iteración del bucle, en una variable QueueItem.
- En el panel de Propiedades, en el campo QueueName, escribe el nombre de la cola que almacena los elementos. En nuestro caso, tal y como se define en la sección Cargar elementos en una cola, el nombre es "ReportQueue".
- En el campo TransactionItem, presiona Ctrl+K para crear la variable QueueItem que almacena cada elemento de la transacción. Nómbralo "TransItem" o algo similar.
- Agrega una actividad de Decisión de Flujo al panel del Diseñador y conéctala a la actividad Obtener Elemento de Transacción.
- En el panel de Propiedades, en el campo Condición, escribe
TransItem isNot Nothing
. Esta actividad comprobará el valor de cada elemento para determinar si se ha alcanzado el final de la cola. - Conecta la rama Falso de la decisión de flujo a la actividad Mensaje de registro creada en el paso 7. Esto garantizará que el trabajo se detenga cuando se llegue al final de la cola.
- Agrega otra actividad de Decisión de Flujo al panel del Diseñador y conéctala a la rama Verdadero de la decisión de flujo creada en el paso 11.
-
En el panel de Propiedades, en el campo Condición, escribe
cint(TransItem.SpecificContent("OnUSCheck").ToString) < 5000
, donde:cint
convierte una variable de tipo cadena en una de tipo entero.TransItem
es la variable QueueItem (paso 18) usada para almacenar los elementos.SpecificContent("OnUSCheck")
recupera el contenido del argumento de la comprobación de US en cada elemento..ToString
convierte el contenido de la variable QueueItem en una variable de tipo cadena.-
< 5000
es la condición que se comprobará.La expresión anterior convertirá el valor de OnUSCheck en cada variable QueueItem en una variable de cadena, que a su vez se convertirá en un número entero. Se comprobará que el valor así obtenido se ajusta a la condición.
- Agrega una actividad de Establecer el Estado de la Transacción al panel del Diseñador, y conéctala a la rama Falso de la decisión de flujo anterior (paso 13).
- En el panel de Propiedades, asegúrate de que el campo Estado está configurado como Fallido, y el ErrorType en Negocio. De esta manera, si el valor de Comprobación On US es mayor o igual que 5000, la transacción se marca como fallida con una excepción comercial.
- En el campo de TransactionItem agrega la variable
TransItem
. - En el campo Razón, escribe "El importe de OnUSCheck es superior a 5000" o algo similar, que se visualizará para una transacción fallida.
- Conecta la actividad Establecer el Estado de la Transacción a la actividad Deberá Detener (paso 6), para crear un bucle y procesar la siguiente transacción en la cola.
- Agrega una actividad de Secuencia al panel del Diseñador, y conéctala a la rama Verdadero de la decisión de flujo anterior (paso 13). Dentro de la secuencia, agrega una actividad Intentar Capturar y configúrala de tal manera que cualquier error potencial sea correctamente etiquetado como error de aplicación al procesar los elementos.
- Abre la aplicación UIDemo, e inicia sesión con el nombre de usuario
admin
y la contraseñapassword
. -
Realiza la siguiente serie de actividades para cada uno de los campos Cash In, On Us Check y Not On Us Check en la aplicación UIDemo:
- Dentro de la actividad Intentar capturar previa, añade una actividad Usar aplicación/navegador para abrir la aplicación.
- Añade una actividad Escribir en.
- Haz clic en Indicar objetivo en pantalla y selecciona, en la interfaz de UIDemo, el campo en blanco que corresponda con Efectivo.
- En el campo Escribir esto, escribe
transItem.SpecificContent("CashIn").ToString
. Cada término de la expresión se explica más arriba (paso 15). Esta expresión convertirá el valor de cada variable ElementoEnCola en una variable de string.
- Añade una actividad Obtener texto tras la actividad Escribir en anterior y selecciona "Indicar destino en la pantalla" del menú de opciones.
- Señala el número de transacción en la aplicación UIDemo y haz clic en Confirmar.
- Establece el campo Texto como una variable nueva, digamos
TransNumber
. Esto recupera el número de transacción para cada elemento de la cola que cumple la condición inicial. - Añade una actividad Establecer estado de la transacción después de la actividad Obtener texto.
- Asegúrate de que el campo Estado esté establecido como Correcto y que el TipoDeError esté establecido como Aplicación. De esta manera, si el conjunto de valores se introduce con éxito en la aplicación, el estado de la transacción se establece como Correcto, o bien se etiqueta como una excepción de la aplicación.
- En la ventana de Salida, define un nuevo argumento y agrega la variable creada anteriormente,
TransNumber
(paso 25) como valor. - En el campo Elemento de transacción, añade la variable
TransItem
. - Añade una actividad Hacer clic tras la actividad Establecer estado de la transacción.
- Haz clic en Indicar objetivo en pantalla y selecciona el botón Aceptar de la interfaz UIDemo.
-
La actividad de Intentar Capturar debería ser similar a la siguiente captura de pantalla:
- Vuelve al diagrama de flujo y conecta la actividad anterior de Secuencia (paso 21) a la actividad Deberá detener (paso 6) para crear un bucle y procesar la siguiente transacción en la cola.
-
El diagrama de flujo debe ser similar a la siguiente captura de pantalla:
- Para ejecutar el proceso, haz clic en Diseño > Ejecutar.
- Una vez finalizada la ejecución, puedes navegar a https://cloud.uipath.com y mostrar las transacciones procesadas con los correspondientes detalles de procesamiento:
-
Transacción exitosa
-
Transacción fallida