Librerías

Para poder acceder a la información es necesario tener conocimientos básicos de programación.

Se parte de https://confluence.um.es/confluence/pages/viewpage.action?pageId=662438145 que es una referencia a la tecnologías del SGI Hércules y  del conocimiento de los proyectos de Spring Boot para back y de Angular para el front en el sentido de que ambos utilizan gestores de paquetes/dependencias que en un archivo te identifica todas las librerías que usa.

A continuación se proporcionan dos ejemplos de como se obtiene la información, uno de back y otro de front:

1.- En eGithub está  el pom de csp https://github.com/HerculesCRUE/SGI/blob/main/sgi-csp-service/pom.xml

y en las  dependencias están los artefactos que usa este servicio: commons-lang3, hibernate-jpamodelgen, hibernate-validator, …

2.- En los proyectos de angular las dependencias estan en el archivo package.json https://github.com/HerculesCRUE/SGI/blob/main/sgi-framework-angular/package.json

Por ejemplo:

    "@angular/animations":~11.1.1",


    "@angular/common": "~11.1.1",

    "@angular/compiler": "~11.1.1",

    "@angular/core": "~11.1.1",

    "@angular/forms": "~11.1.1",

    "@angular/platform-browser": "~11.1.1",

    "@angular/platform-browser-dynamic": "~11.1.1",

    "@angular/router": "~11.1.1",

    "keycloak-js": "^11.0.0",

    "rxjs": "^6.5.5",

    "tslib": "^2.0.0",

    "zone.js": "~0.10.2"

Conceptos principales

La filosofía del sistema está basada en tres conceptos principales:

una mejor localización de la información.

de diferente complejidad, con múltiples fases que pueden funcionar de forma autónoma.

Nos basamos en los siguientes fundamentos:

que separa los datos de una aplicación, la interfaz de usuario y la lógica de negocio en tres capas o

componentes distintos

Modelo: Esta es la representación específica de la información con la cual el sistema opera. Con

el fin de independizarse del sistema de gestión de bases de datos (SGBD) subyacente y facilitar

la implantación del sistema se utilizará un ORM (Object-Relational Mapping) como Hibernate.

De esta manera, se permite de forma transparente el uso de diferentes bases de datos (Oracle,

PostgreSQL, SQLServer, …) como unidad de persistencia.

Vista: Esta presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz

de usuario. Para la vista web se propone usar Angular (comúnmente llamado "Angular 2+" o

"Angular 2"), es un framework para aplicaciones web desarrollado en TypeScript, de código

abierto, mantenido por Google, que se utiliza para crear y mantener aplicaciones web de una

sola página. Se libera así de carga al servidor ya que este solo se encarga de procesar peticiones

JSON desde y hacia el explorador. El diseño del sistema se realizará de forma responsiva

pudiendo verse de forma correcta en diferentes dispositivos y resoluciones, fijadas al inicio.

o Controlador: Este responde a eventos, usualmente acciones del usuario, e invoca peticiones al

modelo y, probablemente, a la vista.

Arquitectura basada en microservicios, la cual permite distribuir software de calidad con mayor rapidez,

reaccionando de una manera más rápida a cambios de negocio, saturación de ciertos servicios y

minimizando posibles problemas.

características de cada implantación (en ambos casos se dota al sistema de características escalables

que le permiten soportar entornos en alta disponibilidad y altamente clusterizables):

o Como aplicación J2EE que se despliegue en un clúster de servidores de aplicaciones.

o Distribuida en contenedores utilizando tecnologías como Docker (para su ejecución) y

Kubernetes (para el control y carga del sistema).

que requieran corte de servicio, permitiendo incorporación en caliente nuevos registros y procedimientos

Facilidad de cambio, logrando la transparencia de la tecnología y, en la medida de lo posible, hacer uso

de estándares industriales para interfaces clave.

En general la arquitectura de la aplicación propuesta a alto nivel seria la siguiente:


contenido estático de la aplicación Angular.

existentes en el despliegue.

sistema siguiendo un protocolo OAuth2.

encargan de manejar las peticiones de los clientes. Envían peticiones JSON y son manejados para

lanzarse en paralelo para soportar carga extra.

Logstash y Kibana).