Arquitectura
1. Introducción
BotReady es una plataforma de control y gobierno de Robots. Permite a los usuarios mantener el control de la fuerza de trabajo digital tanto desde un dispositivo móvil como desde un navegador. La arquitectura de BotReady está compuesta por los siguientes componentes agrupados en cuatro capas:
- Cliente
- Browser
- App Móvil
- Agente BotReady
- Agentes del cliente
- Capa de presentación
- Aplicación web
- API REST Pública
- API REST Privada
- Capa de servicios
- Lógica de negocios
- Servicio de Autorización
- Agente de Notificaciones
- Capa de persistencia
- Base de datos SQL Server
En la siguiente sección se describen las responsabilidades de cada uno de estos componentes y la interacción entre ellos.
2. Componentes
En el siguiente diagrama se presenta la distribución lógica de los componentes de la arquitectura mencionados anteriormente.
Cliente
Los usuarios interactúan con BotReady tanto desde el Browser como desde la App Móvil. Desde el Browser, los usuarios acceden a una Aplicación Web implementada con Microsoft .NET Framework. La App Móvil, disponible en dispositivos Android y iPhone, intercambia datos con el backend de BotReady a través de un conjunto de servicios expuestos en una API REST Privada. Las funcionalidades disponibles en la App Móvil son un subconjunto de las funcionalidades disponibles desde el Browser. El Agente BotReady es el componente encargado de la ejecución de los robots propios de BotReady (por ejemplo, el robot Zafiro). Es un Servicio de Windows que interactúa con el backend de BotReady a través de los servicios de la API REST Privada. Los Agentes del Cliente son aquellos Jobs, Robots, Procesos batch, etc. con los que el cliente cuenta dentro de su fuerza de trabajo digital. Estos agentes informan los eventos ocurridos en la ejecución de los procesos a BotReady utilizando los servicios expuestos en la API REST Pública. A su vez, el Agente BotReady puede interactuar con los Agentes del Cliente. Por ejemplo, BotReady puede disparar la ejecución de un robot UiPath o Blue Prism.
Capa de presentación
La Aplicación Web, implementada con Microsoft .NET Framework, provee un conjunto de páginas que permiten a los usuarios realizar las tareas de gestión y monitoreo en BotReady.
La API REST Privada está compuesta de un conjunto de servicios REST. Esta API provee un punto de acceso a las funcionalidades y lógicas de negocio utilizadas tanto desde la App Móvil, como desde el Agente BotReady. En el caso de la App Móvil, por ejemplo, esta API permite activar/desactivar un robot, obtener el detalle de ejecución de los robots, disparar la ejecución de un robot, entre otras funcionalidades. En el caso del Agente BotReady, la API permite obtener las ejecuciones pendientes a realizar, actualizar el estado de las ejecuciones, etc.
La API REST Pública provee un subconjunto de servicios de la API Privada. Esta API provee un único punto de acceso a los Agentes del Cliente para que éstos informen el detalle de sus ejecuciones a BotReady.
Capa de servicios
La Lógica de Negocios de BotReady ofrece toda la funcionalidad utilizada por los componentes de la Capa de Presentación. Este componente interactúa con la capa de persistencia para obtener y almacenar toda la información generada.
El Servicio de Autorización es un servicio de Windows que tiene como único objetivo la autorización de los accesos que se realizan a los servicios de las API REST Privada y Pública. Para esto utiliza el protocolo de autorización OAuth 2.0.
El Agente de Notificaciones es un servicio de Windows que tiene como único objetivo enviar notificaciones a los usuarios. Los Robots pueden generar notificaciones en BotReady y este agente es el encargado de procesarlas.
Capa de persistencia
La Base de Datos BotReady utiliza un motor SQL Server para almacenar los datos referentes a:
- Robots, grupos de robots, tipos de robots, detalles de ejecución, etc.
- Seguridad: Usuarios y permisos
- Auditoría: Log de errores y log de auditoría
3. Seguridad
Autenticación y autorización
API REST
Los servicios de las APIs REST Pública y Privada utilizan el protocolo de autorización OAuth 2.0 para autenticar y autorizar los accesos a los distintos endpoints. El Servicio de Autorización de la capa de servicios es el encargado de autenticar y autorizar los distintos accesos.
Tanto la Aplicación Móvil, como el Agente BotReady, como los Agentes del Cliente solicitan un token de autorización antes de consumir cualquier servicio de las APIs. Para ello envían un identificador de cliente y una contraseña. El Servicio de Autorización valida la información en la Base de Datos de BotReady y retorna el token correspondiente para su uso posterior.
Autenticación de usuarios
La autenticación de los usuarios de BotReady se realiza con la información almacenada en la Base de Datos de BotReady.
En el caso de la Aplicación Web, el usuario ingresa sus credenciales en el browser y éstas son validadas por la Lógica de Negocio. La autorización del usuario se realiza utilizando la sesión del servidor de la Aplicación Web.
En el caso de la Aplicación Móvil, las credenciales del usuario son validadas en el momento en que se realiza la solicitud del Token OAuth 2.0.
Comunicación HTTPS
Existen cuatro vías de comunicación que utilizan el protocolo HTTP
Browser Aplicación Web
Aplicación Móvil API REST Privada
Agente BotReady API REST Privada
Agentes del Cliente API REST Pública
En todos los casos la conexión entre los componentes es encriptada utilizando SSL/TLS.