Articulo de referencia

Canigó (marco)

Canigó es el nombre elegido para el framework Java EE de la Generalitat de Catalunya . [ 1 ] Propósito y arquitectura Canigó se define como un "marco tecnológico común para el d...

Canigó es el nombre elegido para el framework Java EE de la Generalitat de Catalunya . [ 1 ]

Propósito y arquitectura

Canigó se define como un "marco tecnológico común para el desarrollo y la ejecución de aplicaciones web para sistemas corporativos y departamentos de la Generalitat de Catalunya".

Cubre diversas funcionalidades:

  • Una arquitectura común para la creación de aplicaciones Java EE.
  • Proporciona un espacio de trabajo, documentación, soporte y mantenimiento de sus componentes.
  • Simplifica la complejidad inherente a Java EE, ofreciendo un marco de referencia.
  • Ofrece una solución que se ajusta a los estándares de facto en toda la comunidad de código abierto.
  • Ofrece una solución abierta que permite añadir e intercambiar cualquier programa informático a un coste reducido.
  • Ofrece una solución de interconexión con los servicios corporativos de la Generalitat de Catalunya.

La arquitectura de Canigó se basa en el patrón Modelo-Vista-Controlador . Existe un proceso de abstracción que permite dividir la lógica de la aplicación en tres componentes principales que pueden ser desarrollados por diferentes roles de un equipo.

En realidad, la arquitectura de Canigó, como framework estructurado MVC, está dividida en 3 capas y 4 módulos transversales:

Capas
Módulos
  • Núcleo del marco
  • Módulos de seguridad
  • Módulo de soporte
  • Módulo de operación
Canigó es una estructura modular.

La estructura modular de Canigó ofrece a los desarrolladores la opción de usar solo los módulos necesarios para cubrir los requisitos del proyecto. Estos módulos se definen mediante interfaces, lo que los aísla de las implementaciones elegidas.

Canigó se basa en una serie de recursos, la integración de API como JPA y paquetes de código abierto ( Spring , Swagger , etc.). Además, ofrece extensiones para dichos paquetes, añadiendo un amplio catálogo de componentes reutilizables.

Una de las bases arquitectónicas más importantes es la separación del frontend y el backend mediante API REST. Esta arquitectura permite que equipos de desarrollo independientes trabajen tanto en el frontend como en el backend.

La estructura consta de los bloques que se especifican a continuación:

Componentes básicos de la arquitectura del marco

Spring es un framework de código abierto escrito para la plataforma Java. La primera versión fue creada por Rod Johnson en octubre de 2002 y la última versión publicada es la 5.0.9, lanzada la primera semana de septiembre de 2018. Spring está diseñado para ayudar con la configuración de aplicaciones web y también para simplificar la construcción de sistemas en diferentes partes (fácilmente intercambiables y visibles entre ellas), integración de servicios, servicios de seguridad, conexión a bases de datos , transaccionalidad, etc. Spring proporciona un sistema de pruebas completo, es posible desarrollar pruebas unitarias desacoplando objetos de su contexto, lo que facilita la ejecución de los casos de prueba. El acceso a datos externos, a través de Spring, es una tarea sencilla porque este framework gestiona los recursos por sí mismo. También tiene soporte para API y es capaz de soportar la gran mayoría de las tecnologías de acceso a datos de la industria Java como: JDBC, Hibernate , JPA, JDO o iBatis .

La base principal de la arquitectura de Canigó es un grupo completamente integrado, también modular, de las mejores prácticas en tecnologías de desarrollo de aplicaciones web Java. Estos son los componentes que constituyen el sistema:

  • Swagger es un marco de software de código abierto respaldado por un amplio ecosistema de herramientas que ayuda a los desarrolladores a diseñar, construir, documentar y consumir servicios web RESTful . Si bien la mayoría de los usuarios identifican Swagger por su interfaz de usuario (Swagger UI), el conjunto de herramientas de Swagger incluye soporte para la documentación automatizada, la generación de código y la generación de casos de prueba.
  • Spring4 Framework funciona como un contenedor centralizado de objetos y servicios, completamente configurable mediante archivos XML o anotaciones Java. La inyección de dependencias permite configurar objetos fuera del código de la aplicación de forma no intrusiva. Reduce el código dedicado a configuraciones y localización de recursos. Además, facilita buenas prácticas como la programación con interfaces en lugar de clases, permitiendo el desacoplamiento de servicios y el cambio rápido de una implementación a otra. También permite gestionar transacciones sin usar API específicas mediante la programación orientada a aspectos.
  • JPA proporciona un modelo de persistencia basado en POJO para mapear las bases de datos relacionales de Java. También es compatible con MongoDB, la base de datos no relacional más popular.
  • AOP ( Programación Orientada a Aspectos ) para la interceptación de eventos de la aplicación sin modificar el código fuente.

Núcleo del marco

Este módulo es el núcleo del marco de trabajo; aquí es donde se encuentran las principales características:

  • Configuración multientorno: Basada en el PropertyPlaceHolder proporcionado por Spring3. Con la diferencia de que permite la existencia de propiedades dependientes del entorno sin necesidad de beans adicionales ni configuración de propiedades.
  • Multilingüe (i18n): Su objetivo es ayudar en la fase de desarrollo de la aplicación facilitando la compatibilidad con múltiples idiomas.
  • Servicio de rastreo: Basado en Log4j . Permite definir el nivel de rastreo, las salidas, el nivel mínimo de rastreo, el formato de salida y la información de contexto.
  • Servicio de excepciones: Genera información sobre cualquier error que se produzca durante la ejecución de una solicitud. Canigó ofrece una serie de excepciones por defecto (BaseException, CoreException, ...). También dispone de un mecanismo de intercepción de excepciones para evitar el uso excesivo de "try-catch".

Módulo de seguridad

Se trata del sistema de gestión de acceso a las aplicaciones de autorización y autenticación del usuario.

  • Módulo de seguridad: Basado en Spring Security 4.x. Permite gestionar la autorización y autenticación de los usuarios de las aplicaciones.
  • Sistemas de seguridad: El servicio de seguridad está integrado con GICAR, SACE, LDAP, bases de datos y almacenamiento en memoria.

Módulo de presentación (interfaz de usuario)

Desde Canigo 3.2.0, JSF ha sido descontinuado como tecnología de capa de presentación. La responsabilidad de la capa de presentación se ha delegado fuera del framework a otros equipos especializados en tecnologías front-end como Angular o React .

Módulo de integración

Su objetivo es facilitar un acceso sencillo a los diferentes servicios que ofrece la Generalitat de Catalunya.

  • PICA: Proporciona una interfaz Java de integración para acceder a la 'Plataforma d'Integració i Col·laboració Administrativa' (PICA). Este módulo puede ejecutar solicitudes síncronas y asíncronas.
  • GECAT: Este módulo cuenta con un conjunto de funcionalidades para la gestión de facturas ofrecidas por el servicio SAP de Gecat .
  • PSIS: Es un servicio de firmas digitales y certificados digitales ofrecido por Catcert.
  • SARCAT: Es una serie de métodos para ejecutar los servicios ofrecidos por S@rcat , a través de WebServices , FTP / SFTP para solicitudes planificadas.
  • Documentum: Permite el uso de las funcionalidades de Documentum, como el archivo y la recuperación de documentos, y también es capaz de gestionar carpetas y metadatos.
  • NT: Es un conector funcional para el PICA que simplifica el uso de las notificaciones telemáticas de la Generalitat de Catalunya.
  • Antivirus: Es una integración del sistema de escaneo de archivos del CTTI (Centro de Tecnologías de la Información y las Telecomunicaciones) de la Generalitat de Catalunya.
  • SAP: Es una interfaz simplificada para acceder al sistema SAP de la Generalitat de Catalunya.
  • Servicios web: Canigó 3 no cuenta con un módulo nativo para servicios web. Existe una guía completa documentada sobre cómo exportar, publicar y consumir servicios web con Java. Canigó 3 recomienda el uso de Spring WS, Jaxb y OXM.
  • Colas: Canigó 3 no dispone de un módulo de gestión de colas. Existe una guía sobre cómo generar y consumir mensajes de una cola. Se recomienda el uso de Spring JMS .

Módulo de persistencia

Este módulo permite que la aplicación almacene y recupere datos entre la aplicación y los sistemas de gestión de bases de datos.

  • JPA: Java Persistence API unifica las herramientas para el ORM (Mapeo Objeto-Relacional). La implementación predeterminada de JPA en Canigó 3 es Hibernate . Spring Data JPA facilita la implementación de repositorios basados ​​en JPA. Además, simplifica la creación de aplicaciones con Spring que utilizan tecnologías de acceso a datos.
  • MongoDB: fácil integración con la base de datos de documentos MongoDB gracias a Spring Data MongoDB.

Módulo de soporte

Este módulo proporciona algunas características adicionales al marco de trabajo.

  • Transferencia de archivos: Permite al servidor recibir archivos adjuntos en formato HTML.
  • Notificaciones por correo electrónico: Permite al servidor enviar correos electrónicos a múltiples direcciones. Admite formatos de texto plano y HTML. También puede incluir varios archivos.
  • Planificador de tareas: Basado en Spring y Quartz . Habilita la opción para ejecutar tareas diferidas según reglas de programación predefinidas.
  • OLE: Permite manipular documentos en formato OLE de MS Excel y Word. Ofrece la posibilidad de crear, leer y modificar documentos. Se basa en la biblioteca POI.
  • Fusión: Combinación de documentos en formato WordML. A partir de un documento etiquetado, esas variables se intercambian por un grupo de valores definidos en un diccionario.
  • SFTP: Permite la transmisión de archivos entre el servidor donde se implementa la aplicación y otros servidores mediante un protocolo seguro. Se basa en las bibliotecas JSCH y Commons-VFS.

Módulo de operaciones

Este módulo añade una función a las aplicaciones para generar datos de ejecución e instrumentación. Estos datos están listos para ser analizados y procesados ​​por herramientas de monitorización.

  • Instrumentación: Permite que la aplicación genere datos de instrumentación (recuento de consultas, recuento de errores, etc.). Estos datos provienen de la ejecución de la aplicación.
  • Monitorización: Permite que la aplicación muestre una pantalla para acceder a los datos generados por el módulo de instrumentación.
  • Registro de eventos: Permite a la aplicación administrar los registradores de eventos (activarlos, desactivarlos, cambiar el nivel de registro) y visualizar los registros en tiempo real mediante WebSockets.

Referencias

  1. «Marco Canigó» . Informació, tràmits iserveis de la Generalitat de Catalunya (en catalán) . Consultado el 16 de octubre de 2024 .
  • Portal de Canigó