Árbol de páginas

La persistencia será almacenada en una base de datos relacional. Se hará uso de PostgreSQL para su despliegue y su objetivo principal es dotar de robustez al sistema ante posibles caídas así como almacenar información útil de logs y procesos.

La siguiente ilustración es la implementación del esquema actual de la base de datos de PostgreSQL.

Log
AtributoTipoDescripción

id

intIdentificador del log.
id_scheduleintIdentificador de la planificación de ejecución.
id_processintIdentificador del proceso (extraer convocatoria, base reguladora...).
id_robotintIdentificador del robot que ha creado el log.
log_file_pathstringruta donde se encuentra el fichero del log.
datastringInformación que se extrae del proceso realizado.
start_timetimestampCuando empezó la ejecución.
end_timetimestmapCuando terminó la ejecución.
statestringEstado de la ejecución (OK, ERROR...).
finishedbooleanHa finalizado la ejecución (True o False).
completedint0-100, numero para la monitorización del proceso.


Process
AtributoTipoDescripción
idintIdentificador del proceso.
classstringNombre de la clase del proceso, para poder ser invocado.
namestringNombre del proceso.
requirementsstringLibrerías necesarias para la ejecución.
descriptionstringDescripción del proceso.


Schedule
AtributoTipoDescripción
idintIdentificador de la planificación de ejecución.
id_robotintRobot que ha realizado o realizará esa ejecución.
schedule_jsonstringJSON con la estructura de lanzamiento ().
activebooleanLa planificación de ejecución sigue activa (true, false) para procesos que queramos planificar cada día.
next_runtimestampTimestamp de la siguiente ejecución.


Robot
AtributoTipoDescripción
idintIdentificador del robot.
namestringNombre del robot.
ip_addressstringDirección IP del robot.
addressstringDonde se encuentra el robot.
macstringDirección MAC del robot.
python_versionstringVersión de Python del robot.
osstringSistema operativo del robot.
featuresstringLibrerías instaladas del robot.
connectedbooleanConectado (True o false).
last_seentimestampÚltima vez visto.
createdtimestampTimestamp de cuando se creó ese robot.

A continuación, se muestra un ejemplo de información que estaría almacenada en la base de datos.

Tabla Process
{
   "process":[
      {
         "id":1,
         "class":"ProcessBoletines",
         "name":"Proceso Boletines",
         "requirements":"",
         "description":"Proceso que Segmenta y Crea boletines para la ayuda a la transferencia de investigación"
      }
   ]
} 
Tabla Log
{
   "log":[
      {
         "id":1,
         "id_schedule":1,
         "id_process":1,
         "id_robot":"robot1",
         "log_file_path":"08-09-2021-13:28:37ProcessBoletines.log",
         "data":"Información sobre la ejecución del proceso""start_time":"2021-12-08T11:28:38.727Z",
         "end_time":"2021-12-08T11:28:48.862Z",
         "state":"OK",
         "finished":true,
         "completed":100
      }
   ]
}


Tabla Schedule
{
   "schedule":[
      {
         "id":1,
         "id_robot":" robot1",
         "schedule_json":"Parametros del proceso a ejecutar",
         "active":false,
         "created":"2021-12-08T11:28:38.727Z",
         "next_run":null
      }
   ]
}


Tabla Robot
{
   "robot":[
      {
         "id":"robotWindows",
         "name":"Robot Windows",
         "ip_address":"10.208.3.112",
         "address":"Universidad de Murcia",
         "registrations":"ATICA",
         "mac":"8d:a0:4f:4d:d1:8e",
         "python_version":"3.8.5 (default, Sep 4 2020, 07:30:14) \n[GCC 7.3.0]",
         "os":"Linux",
         "features":"aiormq,aio-pika,absl-py",
         "connected":"2021-11-09T12:43:36.471Z",
         "last_seen":"2021-11-09T12:47:40.679Z",
         "created":"2021-10-14T11:27:30.418Z"
      }
   ]
}

Toda la información contenida en la persistencia podrá ser consultada mediante una API.



  • Sin etiquetas