¿Qué es REF?

24/39

Lectura

Robotic Enterprise Framework (REF) es una plantilla de proyectos basada en una máquina de estados.

Crear un Proyecto REF

Para crear un Proyecto en REF debemos abrir Studio y elegir la plantilla REF.
Pantalla de Studio
Proporcionamos el nombre del proyecto, la ruta donde lo vamos a almacenar y opcionalmente una descripción de para qué es este proyecto.
Pantalla de Crear Proyecto

Al abrir el proyecto se verá de la siguiente forma.
Pantalla del Proyecto

Estructura del Proyecto

El proyecto cuenta con 3 partes importantes, veamos una introducción a ellas:
Cuadro Verde:
El proyecto REF contiene una carpeta Data que es la carpeta que el Framework recomienda para colocar los archivos de entrada (input), salida (output), temporales (temp) y el archivo Config.xlsx (el cual analizaremos la próxima clase).
Cuadro Amarillo:
Es una carpeta con el nombre Framework, contiene los archivos XAML recomendados cómo los mínimos requeridos en el Framework.
Estos archivos son una recomendación, algunos son requeridos y otros son opcionales, todo depende del tipo de implementación que generarán.
Cuadro Rojo:
El archivo Main.XAML que ya conocemos, para esta versión en el Framework, es una máquina de estados, lo que nos muestra en su diseño es la máquina de estados completa con sus 4 estados.

  • Initialization (Inicialización): En este estado o fase, realizamos la configuración previa para nuestro proceso, abrir páginas web, abrir programas, iniciar sesión en donde se requiera, leer archivos como el Config, Assets, etc).
  • Get Transaction Data (Obtener datos de transacción): Esta es el segundo estado o fase, aquí obtendremos un registro de la cola del Orquestador, asignamos ese registro a nuestra variable de transacción y pasamos a Process Transaction, si no hay más datos para transaccionar procedemos a navegar a End Process.
  • Process Transaction (Procesar transacción): Esta es el tercer estado o fase, aquí realizamos las tareas que requiere el proceso, validar reglas de negocio, navegar a ciertos sitios, insertar los datos en algún sistema, generar archivos, etc.
  • End Process (Finalizar proceso): El último estado o fase, aquí realizamos un cierre de todas las aplicaciones que abrimos. De ser requerido, realizamos la notificación por correo con un resumen de lo realizado. Dependiendo de sus proyectos, también es la etapa donde hacemos un cambio de estado dentro de la base de datos operativos.

Comunicación entre estados

REF al ser una máquina de estados, se validan parámetros para identificar cual es el próximo paso a ejecutar.
En el caso de REF, en la primera transición es de Inicialización hacía “A o B”, donde:
– A) Finalizar Proceso
– B) Obtener datos.
La pregunta es ¿Cómo sabe a dónde ir?
Para descubrirlo, podemos dar clic en cualquiera de los 2 campos marcados en Rojo.
Pantalla del REF_1
Pantalla del Init_Transaction
Al hacer el doble clic, se mostrará la vista de Transición del Estado Iniciación.
En la pantalla con los detalles de Transición veremos las reglas de transición en base a validación de datos; en el caso de Inicialización se valida la variable SystemException, existiendo 2 casos de validación:
1) Succesful: para indicar qué fue satisfactoria la iniciación, se valida que SystemException no contenga valores, ya que esta variable aloja los errores detectados durante la ejecución. Al no haber errores, se cumple la condición y envía ejecuta la siguiente transición: Obtener Datos (Get Transaction Data).
2) System Exception (Failed): en el caso de que SystemException tenga valor, la validación de condición de Transición para System Exception (Failed) se vuelve verdadera, por lo que redirige el proceso a su estado de Finalizar Proceso (End Process).
Pantalla del Init_Transaction Decision

Si hacemos clic en cualquiera de los 2 campos marcados en Rojo veremos las validaciones de transacción de Obtener Datos.
Pantalla del GetData_Transaction

Al hacer el doble clic, se mostrará la vista de Transición del Estado Obtener datos de Transacción.
En la pantalla con los detalles de Transición veremos las reglas de transición en base a validación de datos; en el caso de Obtener Datos se valida la variable TransactionItem, existiendo 2 casos de validación:
1) New Transaction: para indicar que fue satisfactoria la obtención de datos, se valida que TransactionItem contenga valores, ya que esta variable aloja la información que trataremos en el Procesado. Al existir información, se cumple la condición y envía ejecuta la siguiente transición: Procesar Transacción (Process Transaction).
2) No Data: en el caso de que TransactionItem no tenga valores, la validación de condición de Transición para No Data se vuelve verdadera, por lo que redirige el proceso a su estado de Finalizar Proceso (End Process).
Pantalla del Get_Transaction Decision

Si hacemos clic en cualquiera de los 2 campos marcados en Rojo veremos las validaciones de transacción de Procesar Transacción.
Pantalla del Init_Transaction

Al hacer el doble clic, se mostrará la vista de Transición del Estado Procesar Transacción.
En la pantalla con los detalles de Transición veremos las reglas de transición en base a validación de datos; en el caso de Procesar Transacción se validan 2 variables SystemException y BusinessException:
1) Success: para indicar que el procesamiento de los datos de la transacción fue correcto, se valida que SystemException y BussinesException no contengan valores, de ser así, se detona el SetTransactionStatus.xaml y colocamos el registro en el Orquestador como Finalizado (Success); posteriormente viajamos al Obtener Datos (Get Transaction Data) para solicitar un nuevo registro.
2) Business Rule Exception: cuando la variable BussinesException contiene valores, significa que durante el procesamiento de la información no se cumplió una regla de negocio (ej. El valor de un monto a pagar es superior al permitido por el sistema.). De ser este el caso que nos ocurra, se detona el SetTransactionStatus.xaml y colocamos el registro en el Orquestador como Error (Error); posteriormente viajamos al Obtener Datos (Get Transaction Data) para solicitar un nuevo registro.
3) System Exception: cuando la variable SystemException contiene valores, significa que durante el procesamiento de la información hubo un error en el sistema que no es derivado de una regla de negocio, (ej. El sitio web donde registramos la información cambió de visible a 404 not found) (ej2. Cambiaron las credenciales del correo, no fueron actualizadas en el Asset del Robot y esto no permite la comunicación con la descarga/envío de correos).
Pantalla del Process_TransactionDecision_1
Pantalla del Process_TransactionDecision_2
Pantalla del Process_TransactionDecision_3

Así mismo, posterior a la ejecución del proceso se Ejecuta el XAML llamado SetTransactionStatus.xaml.
Pantalla del SetTransactionStatus

En dicho flujo de trabajo tenemos distintas acciones según los resultados de nuestro Process Transaction.
SetTransactionStatus.XAML contiene 3 flujos para las 3 posibles situaciones que se mencionaron anteriormente en el Procesado de la Transacción, Success, Business Rules Exception y System Error.
Por lo general, este XAML no lo modificamos, a menos que sea una situación muy particular, pero es importante conocer cómo funciona.
Este flujo realiza en el registro del orquestador (el TransactionItem) que procesamos un cambio de estado, siendo Successful o Failed según la situación. Veamos cómo se hace.
Primero el flujo pregunta (en la Decisión “Success”) “¿BusinessException y SystemException contienen información?” si estas variables no contienen valor, navegamos a la Secuencia de Success.
Si la pregunta anterior es positiva, alguna de las variables tienen valores, preguntamos “¿BussinesException tiene valor?” si se determina que es correcto, el flujo se mueve a la Secuencia de “Business Exception”, en caso de que BussinesException no contenga valores navegamos a la Secuencia de SystemException.
Pantalla del SetTransactionStatus Flowchart
Pantalla del SetTransactionStatus Flowchart2
Pantalla del SetTransactionStatus Flowchart3

Una vez que comprendimos cómo se decide cual es la situación resultante, veamos un poco qué acciones realiza cada Secuencia, en general realizan la misma acción, pero cambian los datos que escriben.
La siguiente pantalla es la Secuencia de Success, se realiza un *Set Transaction Status con la Propiedad de Status en Successful.
Pantalla del SetTransactionStatus Flowchart

La siguiente pantalla es la Secuencia de Business Exception, se realiza un *Set Transaction Status con la Propiedad de Status en Failed y el ErrorType como Business.
Pantalla del SetTransactionStatus Flowchart

La siguiente pantalla es la Secuencia de System Exception, se realiza un *Set Transaction Status con la Propiedad de Status en Failed y el ErrorType como Application.
Pantalla del SetTransactionStatus Flowchart

Con esto finalizamos la lectura acerca de REF, en la siguiente clase veremos cómo se configura el archivo Config.xlsx y cómo el robot lo lee (en el estado de Inicialización) y cómo lo consumimos en nuestro proyecto.

Aportes 3

Preguntas 0

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Aunque los conceptos en general son fáciles de entender, en lo personal quedo con algunas dudas sobre la integración del flujo de trabajo, al explorar las siguientes clases retroalimentaré este comentario con el fin de dar mi opinión sobre si esta lectura aporta algo al entendimento posterior o esta sobrando.

Algo larga la lectura, pero creo que entendí todos los estados.