Arquitectura del Generador

El generador de código se desarrollo pensando en una arquitectura multicapas organizada de la siguiente manera

  • Modelo: Es la capa encargada de acceder y manipular la base de datos, en ella podemos encontrar todas las funciones necesarias para leer desde y escribir hacia la base de datos.
  • Lógica: En esta capa encontraremos toda la lógica de negocio que tiene la aplicación entre ella podemos observar algunas validaciones de datos y acceso a las funciones creadas en la capa de Modelo.
  • Servicios: En esta capa se expone una interfaz web que permite el consumo de los métodos que pertenecen a la capa de negocios.
  • Presentación: Esta es una capa web que contiene la interfaz de usuario, contiene algunas validaciones de parte del cliente y se ejecuta sobre un navegador web.

Imagen 1. Arquitectura por capas

Toda la arquitectura esta desarrollada sobre Java teniendo en cuenta que es un lenguaje robusto, de fácil mantenibilidad yque puede ser utilizado en múltiples plataformas utilizando únicamente un JVM. La comunicación entre las capas de servidor se realiza a través de Beans Stateless los cuales realizan una instanciación más rápida de los recursos.

Modelo

La capa de Modelo utiliza JPA el cuál, permite acceder y manipular los datos de la base de datos de una manera fácil de escribir y entender, adicionalmente el uso de JPA permite realizar un cambio de los motores de la base datos más transparente y sencilla de implementar.

Lógica

Esta capa utiliza EJB's para mantener la transaccionalidad de la aplicación, esta diseñada específicamente para hacer validación de datos y consumir los recursos de la capa de modelo.

Servicios

Los servicios son expuestos en un servidor web, el generador crea los siguientes servicios RESTful:

  • GET: Recupera uno o todos los registros asociados a una entidad.
  • POST: Crea un registro nuevo en la base de datos asociado a una entidad (Si la entidad tiene relaciones con alguna otra puede crear registros en cascada o generar errores de dependencia).
  • PUT: Actualiza uno o varios registros asociados a una entidad.
  • DELETE: Elimina uno o varios registros asociados a una entidad.

El generador crea un conjunto de servicios por cada entidad del modelo diseñado utilizando tecnología Java Jax-RS y codificando los datos en formato JSON.

Presentación

La capa de presentación está hecha sobre Angular, este es un framework MVC que se ejecuta del lado del cliente; Esta capa a su vez está dividida en las capas de Modelo, Vista, Controlador y adicionalmente se crearon algunos recursos adicionales que son importados a través de la herramienta Bower.

Se tomó la decisión de usar UI-Router para la transición entre vistas, adicionalmente se usa bootstrap para la mejora de la interfaz de usuario y responsividad del diseño, y jQuery como un API utilitario.

La conexión y consumo de los servicios se realiza usando la librería RestAngular junto a algunas directivas diseñadas que facilitan el consumo de los servicios expuestos por la capa de Servicios.

Cada módulo de la aplicación esta debidamente separado, y está compuesto por una plantilla HTML, un Controlador encargado de la funcionalidad de la vista y un archivo de modelo encargado de representar el objeto, resolver las promesas enviadas por el API y componer las rutas de acceso al modulo.

Diagrama de componentes

Imagen 2. Diagrama de componentes

En el diagrama anterior podemos observar la composición y comunicación entre componentes genéricos creados por el generador, también podemos observar un componente de usuarios y un componente de seguridad, el cual se genera como una opción para mantener un sistema de autenticación y autorización de acceso a la aplicación.

Imagen 3. Diagrama de componentes de la capa de presentación

Seguridad

En la imagen 2 se pueden observar los componentes de Usuarios y _Seguridad _los cuales permiten realizar una restricción sobre los usuarios que acceden al sistema; Para la arquitectura propuesta se decidió tercerizar los servicios de autenticación y autorización a través de un proveedor, esto debido a que si se realizaba un sistema de seguridad dentro de la aplicación o por base de datos no se podría federar y no serviría para realizar múltiples accesos a diferentes aplicaciónes(Single Sign On) sino que, por el contrarío solo serviría para la aplicación generada en especifico.

El proveedor seleccionado para el componente de seguridad es Auth0 (https://auth0.com/).

Vista de despliegue

Imagen 4. Diagrama de despliegue de la aplicación

Para el despliegue de la aplicación se sugiere el uso de Glassfish en su versión 4.1, esto debido a que otras versiones podrían generar algunos problemas cuando se ejecute la aplicación.

Inicialmente la aplicación esta configurada para el uso de _EclipseLink _como proveedor de la base de datos, pero esto se puede cambiar modificando el archivo de propiedades de persistencia _persistence.xml _y creando un nuevo _DataSource _para el acceso a la base de datos.

results matching ""

    No results matching ""