2. Flow of application (1)
Oleksandr Ryzhkov 2
Customers
browses menu
Choose dishes Submit order
View list of
dishes to cook
Cook dish
View list of
orders to ship
Ship order
Customer
Kitchen staff
Delivery responsible
3. Flow of application (2)
Oleksandr Ryzhkov 3
View the list of
dishes/categories
Add/edit
dishes/categories
Choose type of
report to
receive
Get the report
Administrator
Business analyst
View the
list of user
Add/edit
users
Superuser
Good evening, ladies and gentleman!
My name is Oleksandr Ryzhkov and now I’m going to present my Erestaurant project for you.
Firstly, I’ll demonstrate a short presentation about some features of the project and its architecture. Then I will demonstrate how the application works in real time and answer your questions. Hope, you will have a few
Let’s start with a generalized flow of application.
Traditionally, ecommerce programs has a few roles. The first, and the main is a customer. While browsing the website of erestaurant, he will add dishes he liked to his cart and proceed with order submission. According to tech documentation of my system, buyer will pay for his purchase on the moment of delivery, that’s why I haven’t implemented the payment system in it.
Afterwards the order is persisted in DB and the list of its dishes are shown for chef. On marking a dish as cooked he activates the subsystem, which checks whether all the dishes from current order are cooked. If yes, the order follows to delivery service.
Delivery manager ships the orders with a deliveryboy, and when he informs that it was delivered, change the status of order to “delivered”. Subsequently order data is persisted in DB and can be used only for analytical goals
The next block of roles are managerial.
Administrator manages the menu - he can add or edit the categories and dishes.
To execute his duties, business analyst has an access to two methods, which demonstrates the profit, generated by distinct categories, and the whole income during the chosen time period. Here charts are used for enhancement of representation view.
And the last role is a superuser. He has an access to user data and has a right to alter them. Moreover, he is the person to add new stuff users and gives them respective authority.
Use cases of the project shows the set of key method each role has and some other peculiarities. I’d like to point out that customer has an opportunity to make a purchase not only after registration, but without it as well. The aim of this functionality is to give the maximum satisfaction to the client, since far too many persons loose their patience during registration process.
However, one of the incentives for costumer to register is an access to the profile page, where he can find out the information regarding current status of his orders, get to know with the history of orders and change delivery address and some other data.
The same page is available for staff, although they cannot alter nothing there.
Here you can see what frameworks and libraries were used in current application.
I’d like to mention, that I have used the plain JPA interface, that is a basis of each existing today Java persisting framework. Some other features were used to improve the functionality and representation of application. For instance, Log4J creates separate log-file in system with a report regarding the user actions. This can provide invaluable information in case of unauthoriesed activity in the system.
For creation of web-service I’ve user JAX-Web Service framefork. Due to the lack of time, I have made the simpliest web-service application, which demonstrates the menu on the screen of the consol, though I’m sure that’s possible to enhance it significantly within a short period of time.
Also using JSF built-in features I have made an internationalization of all of the webpages in my service
Moreover, I developed unitests for some serviceses and entities, and created integrational test-suit for data access object layer
The relationships between entities are rather simple, however there are some peculiarities. For instance, dish entity isn’t tied directly to order entity since it’s not possible to add Collection type in DB table. For this reason I implemented OrderItems entity, which has a field of Dish and Order as well.
The architecture of DB is rather simple, what enhances the performance speed of system work. Despite the possibility to avoid creation of categories of Dish table and substitute it with enumeration field in dish entity, I decided to safe it to provide more flexibility for restaurant staff to add new or edit existing categories
The architecture of DB is rather simple, what enhances the performance speed of system work. Despite the possibility to avoid creation of categories of Dish table and substitute it with enumeration field in dish entity, I decided to safe it to provide more flexibility for restaurant staff to add new or edit existing categories