Vídeo con el funcionamiento de la aplicación a continuación (redirección a Youtube)
La aplicación web se trata de una especie de foro donde los administradores de la misma colgarán "posts" pequeños relacionados con ofertas y novedades en las distintas plataformas de videojuegos.
La funcionalidad publica será poder ver las novedades y navegar por la aplicación para ver los distintos posts, pudiendo iniciar sesión para ver posts asociados a etiquetas en un feed personalizado y comentar junto a una valoración (en pocos caracteres) en los posts. La funcionalidad privada será, como ya se ha explicado, el poder crear los posts y etiquetarlos, al mismo tiempo que crear nuevas etiquetas si fuese necesario, y moderar los comentarios.
Las entidades son las siguientes:
- Usuarios: Diferenciados por su nivel de permisos. Interactúan con la aplicación comentando los posts o siguiendo etiquetas.
- Posts: Creados por usuarios administradores. Asociados a etiquetas con posibilidad de ser comentados por cualquier usuario registrado.
- Etiquetas: Categorías para localizar más facilmente los posts. Los usuarios se pueden suscribir a estas, y los administradores crear más.
- Valoraciones: Valoración basada en puntuación de 0 a 5. Cualquier usuario registrado puede realizar una. Acompañada de un comentario de pocos caracteres.
El servicio interno que se ofrece es un servicio de newsletter, donde se enviarán al correo asociado al usuario novedades sobre las etiquetas que el usuario esté siguiendo.
Los archivos JAR se encuentran en el siguiente enlace por si no se quieren compilar: https://urjc-my.sharepoint.com/:f:/g/personal/d_alfonsel_2019_alumnos_urjc_es/ElvnUP4thNVBp48c16TPzSMB_0Z1OdjCg-KL6re7y9_0bw?e=e2nWg7
Para compilarlo a través de STS basta con hacer click derecho sobre el proyecto, buscar la opción 'Run as', y dentro de esta, la opción de 'Maven build...':
Una vez en el menú, hay que añadir en el campo 'Goals' la palabra 'package'. Hay que desactivar los test, ya que dan error:
Realizar el mismo proceso con el servicio interno.
Para desplegar la aplicación y el servicio interno es necesario instalar lo siguiente:
- MySQL Community Installer: https://dev.mysql.com/downloads/installer/
- Hay que hacer una instalación Custom (no se necesita todo). Basta con instalar MySQL Server y MySQL Workbench
- Es posible que sea necesario instalar cualquier versión de Python 3.x: https://www.python.org/downloads/
- Java 11 o superior
- RabbitMQ: https://www.rabbitmq.com/
- Es necesario instalar Erlang 23 o superior: https://www.erlang.org/downloads
Tras instalar todo lo necesario, antes de arrancar la aplicación es necesario crear el esquema. Para ello simplemente hay que acceder a la base de datos a través del Workbench. Una vez se ha accedido (debería haber un perfil ya creado por el instalador de la comunidad), crear un esquema con el nombre 'bbdd' (sin las comillas). No es necesario configurar el servidor RabbitMQ, de eso ya se encarga el servicio interno cuando arranca.
Una vez realizado todo esto, abrir dos shells en las carpetas donde se encuentran los JAR. Para más comodidad se recomienda guardarlos juntos. En la primera shell introducir el comando
java -jar ./NewGamesReleased.jar
Se sabrá que se ha iniciado correctamente porque aparece la siguiente linea al final:
Una vez se ha visto esa linea, proceder a iniciar el servicio interno, con el comando
java -jar ./InternalServiceNGR.jar
De igual forma, esta linea indica que se ha inciado correctamente:
Cada vez que se cree un nuevo post, este se enviará al servicio interno. Para saber si el servicio interno ha recibido el post, en la shell aparece un mensaje de que se ha recibido un post y se puede visualizar su información. Por ejemplo:
La infraestructura de docker-compose es la siguiente:
Como se observa, el usuario se enfrenta al HAProxy. Este balancea la carga entre las dos aplicaciones. Ambas aplicaciones envian y reciben datos de la base de datos, y envían mensajes a la cola de RabbitMQ. Por su parte, el servicio interno también envía y recibe mensajes de la base de datos y recoge los mensajes de la cola de mensajes.
Las distintas clases y sus relaciones se pueden ver en los siguiente diagrama UML:
Esquema de las relaciones entre los modelos:
Esquema de navegación por las pestañas principales:
Pestaña de inicio con todos los posts, su edición y eliminación y creación de nuevos posts:
Pestaña con todas las etiquetas, su edición y eliminación y creación de otras nuevas:
Pestaña con todos los usuarios, su edición y eliminación y la lista de sus etiquetas suscritas:
Pestaña de búsqueda tras haber escrito en el recuadro lo que queremos buscar. En este ejemplo no se ha escrito nada, por lo que se devuelve todo lo existente en la base de datos en sus respectivos apartados. NOTA: En los posts se busca el título y el contenido, aunque sólo se refleje el link al post con su título.
Vista del post tras entrar a él, con las valoraciones debajo, opción de crear una nueva y de eliminar alguna existente:
Vista de creación de valoración en un post:
Pestaña de registro:
Pestaña de inicio de sesión: