COMP1610 Programming Enterprise Components - University of Greenwich
Please read the entire specification before starting your work.
Holiday Booking System
Part A
With the help of the tutor, organise yourselves into groups consisting of 4-6 students.
The successful implementation of an enterprise application requires teams of people with different roles to collaborate.
Within the group assign the following roles:
• Java back-end programmer
• User interface designer
• Database administrator
• Server administrator
• Project manager
Depending on the group size, you may have multiple members sharing the same role or members with multiple roles.
It makes sense to allocate roles based on experience, but as you will engage in work together, this is also an opportunity to learn from other members of the team, so don't worry if you don't yet have expertise related to your role at the start of the assignment.
Implementation
As a team you are required to:
• Design/implement a database which meets the requirements of the case- study described above.
You can use any relational database management system you wish (e.g. JavaDB, SQLServer, MySQL, Oracle, Access, etc.). The database should be normalised and use primary key and foreign key constraints.
• Set up an Application Server which will allow you to deploy an enterprise application. This includes configuration files which change the session timeout to 15 minutes and setting the database up as a data source in the Application Server
• Implement a web application using Jakarta EE, which offers the following functionality to admin users:
o User log in
o User management enabling an admin user to create/edit/delete employees. It must be possible to allocate an employee to a department and assign him/her a role.
The implementation should use entity classes and Session Beans for back-end functionality and JSP or JSF for the user interfaces.
You should secure access to this functionality, so that it is limited to an authenticated user.
As a group you should decide when you consider this part of the system to be completed, at which time it must be demonstrated to your tutor. This must be no later than week 7 of the module.
Group report section
The group report section should contain the design documentation that you created as a group, which should contain an Entity Relationship Diagram outlining the database structure and an architecture diagram which shows the overall setup of the system. This should be prepared by the group and each member then includes the same diagrams in their final report.
Individual report section (approx. 300 words)
Please include a reflection of your role within the team and discuss lessons learnt. What you think went well and what you think could have been improved and how. This section should be included in the final report.
Part B
For Part B the teams will be disbanded, and you are expected to work individually.
You can take a copy of the work completed as a group and build on it to complete the remaining implementation. This may involve exporting the database you developed as a team and importing it to your individual database account.
It is envisaged that the system will be developed in three stages, to include basic, intermediate and advanced functionality.
Implementation
Functionality A
Extend the functionality implemented as a group to add a separate section which allows employees to:
• Log in
• Submit a holiday request
• View a list of existing holiday requests, which also shows whether they were approved/rejected
Functionality B
You should also add the following functionality for an admin user:
• View a list of outstanding holiday requests
• Accept/reject a request
• View a list of all holiday bookings and filter them by employee
• Select a date and show all employees working that day and those on leave that day.
When a holiday request is accepted or rejected it should be removed from the list of outstanding requests.
Functionality C
You should extend the system by including a component which applies constraint checking.
When an employee submits a holiday request, the system should use the component to automatically check whether all constraints are satisfied. The list of outstanding requests shown to the admin user should be split into two, those which don't break any of the constraints and those which do and can't be accepted.
For requests which break constraints, the system should specify which constraint is being broken. There could be more than one, in which case they should all be listed.
Functionality D
Create a Web Service (SOAP or REST) which exposes functionality for employee log in and make a holiday request submission. This web service will be called from the employee app.
The prototype of the employee app should also be created, as a Java desktop application, and it must be possible for an employee to log in and to submit a holiday booking request.
The employee app should not connect directly to the database, but all communication must be via the Web Service (remember that the company is planning to replace the desktop application with a mobile app at a later stage).
Functionality E
Add the following functionality to the web application.
When a holiday booking request is created via the web service, this should trigger an alert to the administrator. You should implement a Message- Driven Bean which is called when a holiday request is generated. The web service should publish a message using JMS which is then received by the
Message-Driven Bean. At a later stage, the Message-Driven Bean should send an automated email to the administrator, but for the time being, this should record the alert in the database.
Functionality E
Implement the prioritisation of requests based on the number of days already approved and the number of days requested during the peak times. The prioritisation should determine the order in which outstanding requests are listed.
Finally, add functionality to the system which suggests alternative dates (where possible) for requests which break constraints.
Attachment:- Programming Enterprise Components.rar