This project was designed as an introductory experience to developing microservice applications using the Spring-Boot framework. It models an online IT ticketing system for internal company use. Employee profiles are assigned one or more roles, each associated with possible actions and permissions:
Employees can submit IT help tickets, which are then reviewed by managers. At this stage, tickets may be approved or rejected. Approved tickets are assigned to IT support staff, who work to resolve the issue. Once a resolution is provided, the employee can either close the ticket if satisfied or reopen it for further action.
Throughout the ticket’s lifecycle, any participating employee can view the ticket’s details and complete historical record. Email notifications are automatically sent to all relevant parties whenever the ticket status changes, ensuring smooth communication and workflow.
The project consists of three microservice applications. Each microservice is coded in Java and built on the Spring-Boot framework. The frontend microservice (ticketinggateway
) additionally utilizes JavaScript as part of the served .jsp
files. The microservices and their functions can be seen here:
This service provides the UI, user login & security, and employee data processing. It implements Spring Security for authentication and security and Spring Data JPA for database access. Employees’ user data is stored and accessed from the connected MySQL database to create/verify user accounts/credentials. Frontend webpages are served using a MVC (Model-View-Controller) design pattern and .jsp
files styled with Bootstrap styling. Should the user have more than one authorized role (such as MANAGER & ADMIN), they will have access to the functionality of both roles. Creating and updating tickets are actions sent as HTTP requests to the ticketmicroservice
application through jQuery calls.
This service provides ticket data processing and email content generation functionality. It implements Spring Data JPA for database access and Jackson for JSON serialization. Additionally, it subscribes and publishes messages to an ActiveMQ server embedded in notificationmicroservice
to allow inter-service communication. Ticket data is collected from HTTP requests sent by ticketinggateway
and saved into the connected MySQL database. It also generates email content to be sent via JMS (Java Message Service) to the ActiveMQ message broker, which would then be read by notificationmicroservice
.
This service provides notification creation and sending, as well as periodic ticket status update trigger via JMS (Java Message Service). It hosts the embedded ActiveMQ server which the ticketmicroservice
service connects to. When up, this service will subscribe to the ActiveMQ server and listen for email content JMS messages. These messages, when consumed, would contain the email content generated by ticketmicroservice
and trigger an email notification from the desired configured email address to be sent to the listed recipents. Additionally, a daily CRON job runs via a Quartz job scheduler. This job creates a JMS message that, when consumed by ticketmicroservice
will update pending tickets to reflect a status indicating they require approval/rejection from a MANAGER.
While not a comprehensive list, here are a few key issues that require attention for future versions of the project:
View the project’s installation, setup, and run steps.
View the Project Presentation.
View the GitHub Repository.