First, the source path
Https://github.com/weiganyi/dr-helper
Second, the interface
To access Web services through a browser, you can see the following interface:
Adt-bundle compile project generated dr-helper.apk, after installation can see the application interface as follows:
Third, background
After the birth of Java is mainly used for web development, with the rise of Android, it is also widely used in the mobile field. After learning a series of Java-related technologies, I want to find a project to actually use it. So I'm thinking about building a restaurant management system that includes mobile and web-based technologies that can be built on Java-related technology, and in this project I'll use a combination of technologies and try to make them fit into the scene.
The system serves three types of roles in the restaurant, starting with the ordering waiter, who uses the mobile Android app to do the ordering. Next is the kitchen chef, they will use the Web service to obtain the point of the dishes, after the completion of the dishes can be done through the Web service to the order waiter to send a notice. Finally, the cashier's manager, they also through the Web services to carry out the relevant order management, such as payment operations, as well as the entire system of other management work.
In the technical solution includes the mobile front and back end and the Web front and back end, the mobile Frontend is an Android application, the mobile backend uses the Tomcat container servlet to provide services, both Exchange data through the JSON message, which can reduce the amount of data between the two interactions. The Web backend is also the Tomcat container servlet used to provide services, and then the JSP to generate the front-end Web pages.
On the database selection, I chose to use MySQL to store the traditional relational and limited amount of data, and I chose to store it with MongoDB for such a large amount of data as the order, so that I could make full use of the advantages of each.
Iv.. Function realization
1. Android supports the following functions
Basic Features: Login/logout, homepage, check table, open table, check Order, orders, menu, à la carte, turntable, counter, update, configuration
Notification function: Empty table notification, serving notice
2, the web-side support the following functions
Basic Features: Login/Logoff
Kitchen function: The next single-dish management, complete the management of food products
Counter function: Order management (including checkout, query by number, table), User management, table Management, Menu category management, menu management, configuration Management
Five, the overall design ideas
1. Database design
1) where the Dr_user table stores user account information, dr_table table storage table information, Dr_menu_type table storage menu type information, Dr_menu table store menu information, dr_option table storage configuration options information, these 5 tables are relational tables, Use the MySQL database store. Their specific fields are as follows:
Create Tabledr_user (
user_id Int (4) NOT null primary keyauto_increment,
User_name char (255) is not NULL,
USER_PASSWD char (255) is not NULL,
User_auth enum (' Waiter ', ' Chef ', ' admin ') not null);
Create Tabledr_table (
table_id Int (4) NOT null primary keyauto_increment,
Table_num Int (4) is not NULL,
Table_seat_num Int (4) is not NULL,
Table_empty Int (1) not NULL);
Create Tabledr_menu_type (
menu_type_id Int (4) NOT null primary keyauto_increment,
Menu_type_name char (255) not NULL);
Create Tabledr_menu (
menu_id Int (4) NOT null primary keyauto_increment,
Menu_name char (255) is not NULL,
Menu_price Int (+) is not NULL,
menu_type_id Int (4) not NULL);
Create Tabledr_option (
option_id Int (4) NOT null primary keyauto_increment,
Option_name char (255) is not NULL,
Option_value char (255) not NULL);
2) There is a dr_order for the non-relational collection, using the MongoDB database store, contains the order information, which is structured as follows:
dr_order:{"id": "XXX", "Order": 1, "table": 1, "Waiter": "xxx", "Time": "XXX", "admin": "xxx", "pay": true, "detail": [{"Menu ":" XXX "," price ":" Amount ": 1," Chef ":" xxx "," Finish ": true," remark ":" XXX "}]}
3) Information such as connection parameters for MySQL and MongoDB database, stored in the background of the properties configuration file.
4) Some database storage operations use stored procedures, which can be viewed in a database backup file in the DRHELPER_DB database directory under the project directory.
2, Android front-end application design
1) Each of its basic functions is composed of an activity and a asynctask, and the activity loads the layout XML to construct the operating interface. When a user performs an action, it is necessary to perform a JSON serialization of the Communication object, an HTTP request to the background, an HTTP response, a response message to perform JSON deserialization, and feedback processing based on the results. This series of processing because of network communication in which the actual execution time can be long and short, so the activity to start a asynctask thread to perform these background operations, to avoid the activity to perform more than 5 seconds to report the exception of the problem, but also the interface and logical processing to the thread separation of the general idea.
2) for two notification functions, empty table notifications and serving notifications, I need to implement a message push mechanism that the Android client needs to create and maintain a TCP long connection with the backend message push channel. The implementation scenario is that when a user enables a notification subscription, a service is created first, and then a thread is created in the service, because the Android service may be executing on the same thread as the activity, which requires a separate thread for the TCP long connection task to execute , so you start a thread again. In this line thread creates a TCP Socket with a background push service, initiates a login request message, and periodically sends a heartbeat message to maintain a TCP long connection, and also initiates notification of a booking request message based on the notification booking configuration of the Android client. When the backend notification push message is received through this socket, the HTTP request is sent to get the specific notification content, and the corresponding Android notification message is issued according to the notification type after receiving the response. Here are some exceptions to deal with, such as when the server exit needs to detect and directly exit the service, then no re-login attempt is because, when the service side exits after the notification service login information is not, the entire application login information is not, So you need to exit the entire app and log in again, and when the app re-logs in, it will also initiate a login for the notification service. In addition, the notification service itself can be interrupted when the user closes the notification function based on the notification subscription operator interface.
3) for the withdrawal of activity, it is implemented by registering the broadcast receiving program. When a user exits the login, an exit broadcast is issued, and each activity on the activity stack is received and then exited and destroyed itself, and the service's exit implementation is similar.
4) applications requiring frequent reading of two tables are Dr_menu_type and Dr_menu, and the two tables will not occur frequently, so they store a copy in the Android SQLite, which can significantly save the data exchange with the background, and then through the Special update function, To synchronize the data for both tables with the background. Through the implementation of the ContentProvider mechanism to encapsulate the access to the underlying sqlite, in order to achieve the business layer interface friendly.
5) for the account information already logged in, the server address, notification subscription and other configuration information, are stored in the preferences, and according to the Options menu configuration.
3. Web Front-end design
1) Adopt a single page style, click on the page button or link, through the AJAX request to the back end of the submission of data, and get a new generated local page, and finally update the local page to the corresponding location. The relevant JS operations are implemented using the jquery library to achieve better browser compatibility.
2) in the construction of HTML page, using JSP script to complete. Based on the Java Bean object generated after the background servlet logic has been processed, the Java Bean object is assembled into the desired HTML page in the JSP file by using JSP technology such as Java script or Jstl.
4. Java Background Service Design
1) through the Tomcat container servlet for background processing, in order to implement Mvc,servlet only the message content extraction, service invocation and message forwarding and other control logic, the specific business logic in the corresponding service, including the operation of the database.
2) The operation of the database through an agent, which can block the differences between the two data, to the upper layer with a unified data operation interface.
3) on the background implementation of the message push service, a context listener that creates a servlet is used so that the listener can be invoked when the Tomcat container starts and exits when the container exits. Then create a thread in this listener that listens to a TCP Socket and creates a processing connection and manages it when there is a connection from the Android client. When the business logic triggers to a blank table event or serving event, through the list of scheduled notifications for the Android client, find the processing connection for, and send a notification push message to notify the Android client to get specific notification content. In connection with the Android client's maintenance, in addition to the need to respond to the Android client heartbeat message, but also need to start a timer to detect the presence of heartbeat messages, when no heartbeat message detected that the corresponding Android client has exited abnormally, then need to clear this failed connection.
4) in order to be able to transfer Chinese characters in the response message, it is necessary to set the response message codec to UTF-8, which is required for each servlet, so create a filter to unify this setting.
5) Whether it is mobile or web-side, the foreground user information is saved, because it is based on the HTTP protocol before and after the communication, so the use of cookies to complete. In the background processing, the servlet has encapsulated the session to provide support for the processing of cookies, directly used on the line.
6) on the service deployment, use Nginx to do the reverse proxy and forward the request to the back-end tomcat server for processing. This is also commonly used in the deployment, because the current system files are relatively small, so there is no picture and other static resources into Nginx under this method of dynamic separation.
Vi. Documentation and catalogue introduction
Android\: Mobile-side Directory
Android\libs\: Support Package Directory
Android\res\drawable-hdpi\: app's picture catalog
Android\res\layout\: Layout XML file directory
Android\res\menu\: System Menu layout XML file directory
Android\res\values\: string Definition file directory
Android\src\com\drhelper\activity\:activity file Directory
Android\src\com\drhelper\activity\afterloginactivity.java: Pre-logon activity general function, other activity inherits this activity
Android\src\com\drhelper\activity\ Beforeloginactivity.java: After login activity General function, inherit from Afterloginactivity, other activity inherits this activity
Android\src\com\drhelper\activity\changetableactivity.java: Activity on the change page
Android\src\com\drhelper\activity\checkorderactivity.java: Activity on a single page
Android\src\com\drhelper\activity\checktableactivity.java: Activity on the table-check page
Android\src\com\drhelper\activity\createtableactivity.java: Activity on the Open Table page
Android\src\com\drhelper\activity\loginactivity.java: Activity on the login page
Android\src\com\drhelper\activity\mainactivity.java: Activity on the main page
Android\src\com\drhelper\activity\menuactivity.java: Activity on menu Display page
Android\src\com\drhelper\activity\orderactivity.java: Activity on the Order Display page
Android\src\com\drhelper\activity\ordermenuactivity.java: Activity on menu Operation page
Android\src\com\drhelper\activity\prefsactivity.java: Activity on the Preference Configuration page
Android\src\com\drhelper\activity\uniontableactivity.java: Activity on the Counter page
Android\src\com\drhelper\activity\updateactivity.java: Update activity on page
Android\src\com\drhelper\bean\:java Bean Object Directory
Android\src\com\drhelper\bean\menuitem.java: Menu item Bean with menu Display page
Android\src\com\drhelper\bean\menulist.java: Menu list Bean with menu Display page
Android\src\com\drhelper\bean\com\: Java Bean Object Directory for pre-background communication
Android\src\com\drhelper\bean\com\emptytable.java: The communication object of the table-checking page
Android\src\com\drhelper\bean\com\emptytablelist.java: The communication object of the table-checking page
Android\src\com\drhelper\bean\com\login.java: The communication object of the login page
Android\src\com\drhelper\bean\com\menulist.java: Update the Communication object for the page
Android\src\com\drhelper\bean\com\menutypelist.java: Update the Communication object for the page
Android\src\com\drhelper\bean\com\noticedetail.java: The communication object that gets the notification
Android\src\com\drhelper\bean\com\noticeheartbeat.java: Notifies the heartbeat of the communication object
Android\src\com\drhelper\bean\com\noticelogin.java: Notifies the logged-on communication object
Android\src\com\drhelper\bean\com\noticelogout.java: Notifies the logged-off communication object
Android\src\com\drhelper\bean\com\noticepush.java: Communication object for notification message
Android\src\com\drhelper\bean\com\noticesubscribe.java: Notifies the intended communication object
Android\src\com\drhelper\bean\com\onetableoneorder.java: A Communication object that contains a table number and an order number that can be used in multiple places
Android\src\com\drhelper\bean\com\orderinfo.java: Communication object for order information
Android\src\com\drhelper\bean\com\twotableoneorder.java: A Communication object with two table numbers and an order number that can be used in multiple places
Android\src\com\drhelper\entity\: Database Object Directory
Android\src\com\drhelper\entity\detail.java: The object that corresponds to the Detail field in the Order collection
Android\src\com\drhelper\entity\menu.java: The object that corresponds to the menu table
Android\src\com\drhelper\entity\menutype.java: Object for menu Type table
Android\src\com\drhelper\entity\order.java: The object that corresponds to the order collection
Android\src\com\drhelper\provider\menuprovider.java: ContentProvider Encapsulation Implementation of menu and menu type tables
ANDROID\SRC\COM\DRHELPER\SERVICE\NOTICESERVICE.JAVA: Notification Service Client implementation
Android\src\com\drhelper\task\:asynctask Implementation Directory
Android\src\com\drhelper\task\changetabletask.java: task of changing the function of the station
Android\src\com\drhelper\task\checkordertask.java: The task of checking the single function
Android\src\com\drhelper\task\checktabletask.java: task of table-checking function
Android\src\com\drhelper\task\createtabletask.java: task of opening table function
Android\src\com\drhelper\task\deleteordertask.java: Task to delete order function
Android\src\com\drhelper\task\loadordertask.java: task of the order loading function
Android\src\com\drhelper\task\logintask.java: Tasks for the login feature
Android\src\com\drhelper\task\submitordertask.java: The task of submitting the order function
Android\src\com\drhelper\task\uniontabletask.java: task of the function of the platform
Android\src\com\drhelper\task\updatetask.java: Tasks for updating features
Android\src\com\drhelper\util\cookiemanager.java:cookie function implementation
Android\src\com\drhelper\util\dialogbox.java: Prompt box function implementation
Realization of android\src\com\drhelper\util\httpengine.java:http communication mechanism
Android\src\com\drhelper\util\prefsmanager.java: Preference Management Objects
Server\: Server-side Directory
Server\drhelper_db\drhelper_mysql_db.sql:mysql Database backup files
Server\drhelper_db\drhelper_mongodb\drhelper\:mongodb Database backup file directory
server\tomcat\jsp\:jsp file Directory
SERVER\TOMCAT\RES\DRHELPER.CSS: CSS file for project
Server\tomcat\res\drhelper.js: JS file for Project
JS file for Server\tomcat\res\jquery-1.10.1.js:jquery Library
Server\tomcat\web-inf\lib\: Support Package Directory
Server\tomcat\web-inf\src\dbconfig.properties: Database configuration information file
Server\tomcat\web-inf\src\com\drhelper\android\:android Background Service Implementation Directory
Server\tomcat\web-inf\src\com\drhelper\android\bean\noticeevent.java: Notification event object used internally by the notifications service
Server\tomcat\web-inf\src\com\drhelper\android\bean\usersocketchannel.java: User name and Connection mapping object used internally by the notification service
Server\tomcat\web-inf\src\com\drhelper\android\bean\com\: Java Bean Object Directory for pre-background communication, same as the corresponding directory in the Android directory
Server\tomcat\web-inf\src\com\drhelper\android\listener\noticeserverlistener.java: Notification Service Context Listener implementation
SERVER\TOMCAT\WEB-INF\SRC\COM\DRHELPER\ANDROID\SERVER\NOTICESERVER.JAVA: Notification Service Background implementation
Server\tomcat\web-inf\src\com\drhelper\android\service\:android Background business Logic Implementation directory
Server\tomcat\web-inf\src\com\drhelper\android\service\changetableservice.java: The service logic realization of the function of changing the platform
Server\tomcat\web-inf\src\com\drhelper\android\service\checkorderservice.java: The realization of the business logic of checking single function
Server\tomcat\web-inf\src\com\drhelper\android\service\checktableservice.java: The function business logic realization of table-checking
Server\tomcat\web-inf\src\com\drhelper\android\service\createtableservice.java: Open Table function business logic realization
Server\tomcat\web-inf\src\com\drhelper\android\service\deleteorderservice.java: Delete Order function business logic implementation
Server\tomcat\web-inf\src\com\drhelper\android\service\getnoticeservice.java: Get notification function business logic implementation
Server\tomcat\web-inf\src\com\drhelper\android\service\loadorderservice.java: Load Order function Business logic implementation
Server\tomcat\web-inf\src\com\drhelper\android\service\loginservice.java: Login function business logic implementation
Server\tomcat\web-inf\src\com\drhelper\android\service\logoutservice.java: Logoff function business logic implementation
Server\tomcat\web-inf\src\com\drhelper\android\service\service.java: Background business logic abstract class
Server\tomcat\web-inf\src\com\drhelper\android\service\submitorderservice.java: Submit Order function Business logic implementation
Server\tomcat\web-inf\src\com\drhelper\android\service\uniontableservice.java: The realization of the function business logic of the Platform
Server\tomcat\web-inf\src\com\drhelper\android\service\updatemenuservice.java: Update function business logic implementation
Server\tomcat\web-inf\src\com\drhelper\android\service\updatemenutypeservice.java: Update function business logic implementation
Server\tomcat\web-inf\src\com\drhelper\android\servlet\:android Background Control logic servlet implementation directory
Server\tomcat\web-inf\src\com\drhelper\android\servlet\changetableservlet.java: Platform Change function servlet implementation
Server\tomcat\web-inf\src\com\drhelper\android\servlet\checkorderservlet.java: A single-function servlet implementation
Server\tomcat\web-inf\src\com\drhelper\android\servlet\checktableservlet.java: Search table function servlet implementation
Server\tomcat\web-inf\src\com\drhelper\android\servlet\createtableservlet.java: Open Table function servlet implementation
Server\tomcat\web-inf\src\com\drhelper\android\servlet\deleteorderservlet.java: Delete order feature servlet implementation
Server\tomcat\web-inf\src\com\drhelper\android\servlet\getnoticeservlet.java: Get notification feature servlet implementation
Server\tomcat\web-inf\src\com\drhelper\android\servlet\loadorderservlet.java: Load order feature servlet implementation
Server\tomcat\web-inf\src\com\drhelper\android\servlet\loginservlet.java: Login feature servlet implementation
Server\tomcat\web-inf\src\com\drhelper\android\servlet\logoutservlet.java: Logoff feature servlet implementation
Server\tomcat\web-inf\src\com\drhelper\android\servlet\submitorderservlet.java: Submit Order function Servlet implementation
Server\tomcat\web-inf\src\com\drhelper\android\servlet\uniontableservlet.java: Implementation of the function servlet of the platform
Server\tomcat\web-inf\src\com\drhelper\android\servlet\updatemenuservlet.java: Update feature servlet implementation
Server\tomcat\web-inf\src\com\drhelper\android\servlet\updatemenutypeservlet.java: Update feature servlet implementation
Server\tomcat\web-inf\src\com\drhelper\android\util\logicexception.java: Program Logic Exception Object
Server\tomcat\web-inf\src\com\drhelper\android\util\typeconvert.java:string and Bytebuffer Object Conversion helper Classes
server\tomcat\web-inf\src\com\drhelper\common\: Background Common functionality Implementation directory
Server\tomcat\web-inf\src\com\drhelper\common\db\database.java: Database base class
Server\tomcat\web-inf\src\com\drhelper\common\db\dbmanager.java: Database Operations Agent Object
SERVER\TOMCAT\WEB-INF\SRC\COM\DRHELPER\COMMON\DB\MONGODB.JAVA:MONGODB Database Operations Object
Server\tomcat\web-inf\src\com\drhelper\common\db\mysqldb.java:mysql Database Operations Object
Server\tomcat\web-inf\src\com\drhelper\common\entity\: Database object directory, same as corresponding directory in Android directory
Server\tomcat\web-inf\src\com\drhelper\common\filter\servletfilter.java:servlet Filter Implementation
Server\tomcat\web-inf\src\com\drhelper\web\:web Background Service Implementation Directory
Server\tomcat\web-inf\src\com\drhelper\web\bean\: Java Bean Object Directory for providing data to JSP pages
Server\tomcat\web-inf\src\com\drhelper\web\bean\adminmenu.java: Menu Management Page Menu Object
Server\tomcat\web-inf\src\com\drhelper\web\bean\adminmenuobject.java: Menu Management Page objects
Server\tomcat\web-inf\src\com\drhelper\web\bean\adminmenutypeobject.java: Menu Type Management Page Object
Server\tomcat\web-inf\src\com\drhelper\web\bean\adminoptionobject.java: Configuring Management Page Objects
Server\tomcat\web-inf\src\com\drhelper\web\bean\adminorder.java: Order Management Page Order Object
Server\tomcat\web-inf\src\com\drhelper\web\bean\adminorderobject.java: Order Management Page objects
Server\tomcat\web-inf\src\com\drhelper\web\bean\admintableobject.java: Table Management Page Object
Server\tomcat\web-inf\src\com\drhelper\web\bean\adminuserobject.java: User Management Page objects
Server\tomcat\web-inf\src\com\drhelper\web\bean\finishmenu.java: Finish menu Item Management page Menu Object
Server\tomcat\web-inf\src\com\drhelper\web\bean\finishmenuobject.java: Finish menu Item Management Page Object
Server\tomcat\web-inf\src\com\drhelper\web\bean\indexobject.java: Home Object
Server\tomcat\web-inf\src\com\drhelper\web\bean\loginobject.java: Logon Object
Server\tomcat\web-inf\src\com\drhelper\web\bean\logoutobject.java: Unregistering objects
Server\tomcat\web-inf\src\com\drhelper\web\bean\ordermenu.java: Order menu Item Management page Menu Object
Server\tomcat\web-inf\src\com\drhelper\web\bean\ordermenuobject.java: Order Menu Management Page objects
Server\tomcat\web-inf\src\com\drhelper\web\bean\pageinfo.java: Page Number Object
Server\tomcat\web-inf\src\com\drhelper\web\service\:ajax Background business Logic Implementation directory
Server\tomcat\web-inf\src\com\drhelper\web\service\ajaxadminmenuservice.java: Menu Management business logic Implementation
Server\tomcat\web-inf\src\com\drhelper\web\service\ajaxadminmenutypeservice.java: Menu Type management business logic implementation
Server\tomcat\web-inf\src\com\drhelper\web\service\ajaxadminoptionservice.java: Configuration Item Management business logic implementation
Server\tomcat\web-inf\src\com\drhelper\web\service\ajaxadminorderservice.java: Order Management business logic implementation
Server\tomcat\web-inf\src\com\drhelper\web\service\ajaxadmintableservice.java: Table Management business logic implementation
Server\tomcat\web-inf\src\com\drhelper\web\service\ajaxadminuserservice.java: User management business logic implementation
Server\tomcat\web-inf\src\com\drhelper\web\service\ajaxfinishmenuservice.java: Complete the implementation of the business logic of food management
Server\tomcat\web-inf\src\com\drhelper\web\service\ajaxloginservice.java: Login function business logic implementation
Server\tomcat\web-inf\src\com\drhelper\web\service\ajaxlogoutservice.java: Logoff function business logic implementation
Server\tomcat\web-inf\src\com\drhelper\web\service\ajaxordermenuservice.java: The implementation of the management business logic of the next single dish
Server\tomcat\web-inf\src\com\drhelper\web\service\indexservice.java: Home Business logic implementation
Server\tomcat\web-inf\src\com\drhelper\web\service\service.java: Business logic Abstraction Interface
Server\tomcat\web-inf\src\com\drhelper\web\servlet\:ajax Background Control logic servlet implementation directory
Server\tomcat\web-inf\src\com\drhelper\web\servlet\ajaxadminmenuservlet.java: Menu Management control logic servlet implementation
Server\tomcat\web-inf\src\com\drhelper\web\servlet\ajaxadminmenutypeservlet.java: Menu Type Management control logic servlet implementation
Server\tomcat\web-inf\src\com\drhelper\web\servlet\ajaxadminoptionservlet.java: Configuration Item Management control logic servlet implementation
Server\tomcat\web-inf\src\com\drhelper\web\servlet\ajaxadminorderservlet.java: Order Management control Logic servlet implementation
Server\tomcat\web-inf\src\com\drhelper\web\servlet\ajaxadmintableservlet.java: Table Management control Logic servlet implementation
Server\tomcat\web-inf\src\com\drhelper\web\servlet\ajaxadminuserservlet.java: User Management control Logic servlet implementation
Server\tomcat\web-inf\src\com\drhelper\web\servlet\ajaxfinishmenuservlet.java: Complete the menu Management control logic servlet implementation
Server\tomcat\web-inf\src\com\drhelper\web\servlet\ajaxloginservlet.java: Login function control logic servlet implementation
Server\tomcat\web-inf\src\com\drhelper\web\servlet\ajaxlogoutservlet.java: Logoff function control logic servlet implementation
Server\tomcat\web-inf\src\com\drhelper\web\servlet\ajaxordermenuservlet.java: Order Menu Management Control logic servlet implementation
Server\tomcat\web-inf\src\com\drhelper\web\servlet\indexservlet.java: Home Control logic servlet implementation
Server\tomcat\web-inf\src\com\drhelper\web\util\serviceutil.java: Business logic Auxiliary function class
Server\tomcat\web-inf\src\com\drhelper\web\util\servletutil.java:servlet Control logic Auxiliary function class
VII. Deployment Methodology
1. After the source code is downloaded, compile the server directory with Eclipse source code, and compile the mobile source of the Android directory with Adt-bundle.
2. Install Nginx and Tomcat on the server, configure Nginx to forward all requests to Tomcat, and install MySQL and MongoDB.
3, create the project directory under Tomcat/webapps Drhelper, and then copy the Server/tomcat directory compiled files to Drhelper.
4. Import the database backup files from the server/drhelper_db directory into MySQL and MongoDB respectively.
5. Install the APK file generated from the Android directory on the phone.
6, through the application of the mobile phone can normally access the mobile part of the system, using the attendant role-related functions, while the browser can also access the Web Part of the system, using the chef and Administrator role-related functions.
Finish