University XYZ, has a legacy students results calculation service and they decided to upgrade their
system and maintain separate services for each department due to the different procedures they have to
follow to calculate the GPA of the given subjects. Although there are changes in the actual back end,
they don’t want to introduce this dependency to the front end system and maintain their front end system
completely interdependent of multiple results calculation web service end points.
University XYZ, decided to introduce an ESB to mediate their front end calls to respective department
wise back end services as shown in below diagram
ESB will extract the relevant department based on the field in the input message and route the received
message to the respective department’s result calculation endpoint. If it couldn’t find matching a
matching department or the received department doesn’t have it’s own results calculation endpoint, then
the received message will be routed to the legacy results calculation endpoint which is generic for
every department, but it doesn’t have the capability of calculating GPA value for the given subjects.
The details of the back end services of each department and the legacy results calculation service is as
below,
- Computer Science Department - http://localhost:9000/service/department/computer-science
This service returns scores of each requested subject and calculates GPA score for given
subjects based
on the a specific approach for Computer Science field
- Electronics Department - http://localhost:9000/service/department/electronics
This service returns scores of each requested subject and calculates GPA score for given
subjects based
on the a specific approach for Electronic field
- Legacy Endpoint - http://localhost:9290/service/getResults
This service only returns scores of each requested subject. Since it’s not fair to calcuate in a
generic
way, this service doesn’t return a GPA value.