Difference between revisions of "IS480 Team wiki: 2014T1 Res Novae Diagrams"
(47 intermediate revisions by 3 users not shown) | |||
Line 39: | Line 39: | ||
== EER Diagram == | == EER Diagram == | ||
− | + | Heeding the feedback given to the team during the mid-term presentations, we have reduced the database tables from 84 to 51. They are divided into 6 categories - namely user, worker, job, problem, attachment and drop downs. | |
− | + | ||
+ | For a high level view of the database, please refer to the following links: | ||
+ | <br> | ||
+ | [[https://wiki.smu.edu.sg/is480/img_auth.php/4/4f/Overview_of_TWC2Table_MappingField_Details.png Midterm]] | ||
+ | <br> | ||
+ | [[https://wiki.smu.edu.sg/is480/img_auth.php/e/ea/Overview_CAMANS_Tables_v3.png Final]] | ||
+ | |||
+ | |||
+ | === CAMANS's database structure - By Categories === | ||
<br/> | <br/> | ||
{| class="wikitable" style="text-align:center; width:100%; height:100px;" | {| class="wikitable" style="text-align:center; width:100%; height:100px;" | ||
Line 55: | Line 63: | ||
+ | |- style ="background-color:white; text-align:left" | ||
+ | |tbl_worker||FIN_Number||||<ul><li>tbl_worker_nickname</li> | ||
+ | <li>tbl_worker_passport_details</li> | ||
+ | <li>tbl_worker_facepic</li> | ||
+ | <li>tbl_home_country_phone_number</li> | ||
+ | <li>tbl_sg_phone_number</li> | ||
+ | <li>tbl_sg_address</li> | ||
+ | <li>tbl_home_country_address</li> | ||
+ | <li>tbl_digital_contact</li> | ||
+ | <li>tbl_kin</li> | ||
+ | <li>tbl_family_member</li> | ||
+ | <li>tbl_sg_friend</li> | ||
+ | <li>tbl_sg_address</li> | ||
+ | <li>tbl_language</li> | ||
+ | <li>tbl_bank_acc_details</li> | ||
+ | <li>tbl_worker_attachment</li> | ||
+ | </ul> | ||
+ | |- style ="background-color:white; text-align:left" | ||
+ | |tbl_job||Job_Id||FIN_Number||<ul><li>tbl_pass_details</li> | ||
+ | <li>tbl_ipa_details</li> | ||
+ | <li>tbl_verbal_assurances</li> | ||
+ | <li>tbl_employment_contract</li> | ||
+ | <li>tbl_agent</li> | ||
+ | <li>tbl_employer</li> | ||
+ | <li>tbl_workplace</li> | ||
+ | <li>tbl_work_history</li> | ||
+ | <li>tbl_accomodation</li></ul> | ||
+ | |- style ="background-color:white; text-align:left" | ||
+ | |tbl_problem||Problem_Id||FIN_Number, Job_Id||<ul><li>tbl_aggravating_issue</li> | ||
+ | <li>tbl_lead_case_worker</li> | ||
+ | <li>tbl_auxillary_case_worker</li> | ||
+ | <li>tbl_salary_history</li> | ||
+ | <li>tbl_injury</li> | ||
+ | <li>tbl_illness</li> | ||
+ | <li>tbl_other_problems</li> | ||
+ | <li>tbl_trafficking_indicators</li> | ||
+ | <li>tbl_salary_claim_lodged</li> | ||
+ | <li>tbl_wica_claim</li> | ||
+ | <li>tbl_non_wica_claim</li> | ||
+ | <li>tbl_police_report</li> | ||
+ | <li>tbl_other_complaint</li> | ||
+ | <li>tbl_case_discussion</li> | ||
+ | <li>tbl_hospital</li> | ||
+ | <li>tbl_MC_status</li> | ||
+ | <li>tbl_R2R</li> | ||
+ | <li>tbl_wica</li> | ||
+ | <li>tbl_lawyer</li> | ||
+ | <li>tbl_casemilestone_noncriminal</li> | ||
+ | <li>tbl_casemilestone_criminal</li> | ||
+ | <li>tbl_ttr</li> | ||
+ | <li>tbl_benefaction</li> | ||
+ | <li>tbl_benefaction_mealcard</li> | ||
+ | <li>tbl_benefaction_farego</li> | ||
+ | <li>tbl_benefaction_karunya</li> | ||
+ | </ul> | ||
+ | |- style ="background-color:white; text-align:left" | ||
+ | |tbl_dropdown||dropdown_Id|||| | ||
|} | |} | ||
Line 68: | Line 133: | ||
====Problem==== | ====Problem==== | ||
− | [[File: | + | [[File:Overview Problem Tables.PNG.png|1000px|frameless|center]]<br> |
<br> | <br> | ||
Line 79: | Line 144: | ||
== Class Diagram == | == Class Diagram == | ||
− | Our application | + | Our application applied Java model 2, which is associated with MVC(model-view-controller) paradigm, into our design. Requests from client side are passed to the controllers which conduct the logic needed to obtain content to display. It then decides which view to pass the request to. The view then renders the content passed by the controller. |
− | |||
<br/> | <br/> | ||
[[File:ResNovae_JSP_Model_2.png|frameless|center|1000px]]<br/> | [[File:ResNovae_JSP_Model_2.png|frameless|center|1000px]]<br/> | ||
− | + | Class diagram is important for large and complex systems and it also plays a useful role in the development of smaller systems. The use of class diagram helped us to clarify ideas in the initial design stages of an object oriented system when analyzing the requirements and deciding on the fundamental classes and how they will relate to each other. | |
− | |||
− | [[File: | + | The class diagram shown below illustrates CAMAN's design, methods and relations clearly, an essential since our system is fairly big. As illustrated, DBConnect class is the heart of our system from which the methods are retrieved in Servlets. Using the MVC framework, our system is very simply designed. Servlets will receive the value from the client side and use related methods in DBConnect to fulfill the users’ requests. |
+ | [[File:FinalClassDiagram.jpg|frameless|center|1000px]] | ||
+ | |||
+ | For a segmented view of our class diagram, please refer to the picture gallery below: <br> | ||
+ | <gallery> | ||
+ | File:RNServlet.jpg|Servlet | ||
+ | File:RNJavaClass.jpg|Java Classes | ||
+ | File:RNDBConnect.jpg|DBConnect | ||
+ | </gallery> | ||
== Use Case Diagram == | == Use Case Diagram == | ||
As an administrator, management or a specialist, he/she can perform the functions below: | As an administrator, management or a specialist, he/she can perform the functions below: | ||
− | {| class="wikitable" style="text-align:center; width:100%; height: | + | {| class="wikitable" style="text-align:center; width:100%; height:100%;" |
! scope="col" | Function group | ! scope="col" | Function group | ||
! scope="col" | User related | ! scope="col" | User related | ||
! scope="col" | Worker Related | ! scope="col" | Worker Related | ||
+ | ! scope="col" | Job Related | ||
! scope="col" | Problem related | ! scope="col" | Problem related | ||
! scope="col" | Access rights | ! scope="col" | Access rights | ||
Line 99: | Line 171: | ||
! scope="col" | Miscellaneous | ! scope="col" | Miscellaneous | ||
− | |- style ="background-color:white; text-align: | + | |- style ="background-color:white; text-align:left" |
!Administrator Specific functions | !Administrator Specific functions | ||
+ | |||
|style ="background-color:white; text-align:left"|<ul> | |style ="background-color:white; text-align:left"|<ul> | ||
<li>Create user</li> | <li>Create user</li> | ||
Line 106: | Line 179: | ||
<li>Update user</li> | <li>Update user</li> | ||
</ul> | </ul> | ||
+ | |||
|style ="background-color:white; text-align:left"|<ul> | |style ="background-color:white; text-align:left"|<ul> | ||
<li>Create worker</li> | <li>Create worker</li> | ||
Line 113: | Line 187: | ||
|style ="background-color:white; text-align:left"|<ul> | |style ="background-color:white; text-align:left"|<ul> | ||
+ | <li>Create job</li> | ||
+ | <li>Read job </li> | ||
+ | <li>Update job</li> | ||
+ | </ul> | ||
+ | |||
+ | |style ="background-color:white; text-align:left" height:100px|<ul> | ||
<li>Create problem</li> | <li>Create problem</li> | ||
<li>Read problem</li> | <li>Read problem</li> | ||
Line 126: | Line 206: | ||
|style ="background-color:white; text-align:left"|<ul> | |style ="background-color:white; text-align:left"|<ul> | ||
<li>Create file attachment</li> | <li>Create file attachment</li> | ||
− | <li> | + | <li>Read file attachment</li> |
− | <li> | + | <li>Export file attachment</li> |
+ | <li>Rename file attachment</li> | ||
</ul> | </ul> | ||
− | |style ="background-color:white; text-align:left"|< | + | |style ="background-color:white; text-align:left"| |
− | < | + | <br/> |
− | <li> | + | <ul> |
+ | <li>Search Worker</li> | ||
<li>Revoke user</li> | <li>Revoke user</li> | ||
<li>View gallery</li> | <li>View gallery</li> | ||
− | |||
</ul> | </ul> | ||
Line 143: | Line 224: | ||
|style ="background-color:white; text-align:left"|<ul> | |style ="background-color:white; text-align:left"|<ul> | ||
<li>Read user</li> | <li>Read user</li> | ||
− | <li>Update user</li> | + | <li>Update own user</li> |
</ul> | </ul> | ||
+ | |||
|style ="background-color:white; text-align:left"|<ul> | |style ="background-color:white; text-align:left"|<ul> | ||
<li>Create worker</li> | <li>Create worker</li> | ||
<li>Read worker</li> | <li>Read worker</li> | ||
<li>Update worker</li> | <li>Update worker</li> | ||
+ | </ul> | ||
+ | |||
+ | |style ="background-color:white; text-align:left"|<ul> | ||
+ | <li>Create job</li> | ||
+ | <li>Read job </li> | ||
+ | <li>Update job</li> | ||
</ul> | </ul> | ||
Line 165: | Line 253: | ||
<li>Create file attachment</li> | <li>Create file attachment</li> | ||
<li>Read file attachment</li> | <li>Read file attachment</li> | ||
− | <li> | + | <li>Export file attachment</li> |
+ | <li>Rename file attachment</li> | ||
</ul> | </ul> | ||
Line 171: | Line 260: | ||
<li>Search</li> | <li>Search</li> | ||
<li>View gallery</li> | <li>View gallery</li> | ||
− | |||
− | |||
</ul> | </ul> | ||
Line 179: | Line 266: | ||
|style ="background-color:white; text-align:left"|<ul> | |style ="background-color:white; text-align:left"|<ul> | ||
<li>Read user</li> | <li>Read user</li> | ||
− | <li>Update user</li> | + | <li>Update own user</li> |
</ul> | </ul> | ||
+ | |||
|style ="background-color:white; text-align:left"|<ul> | |style ="background-color:white; text-align:left"|<ul> | ||
<li>Create worker</li> | <li>Create worker</li> | ||
<li>Read worker</li> | <li>Read worker</li> | ||
<li>Update worker</li> | <li>Update worker</li> | ||
+ | </ul> | ||
+ | |||
+ | |style ="background-color:white; text-align:left"|<ul> | ||
+ | <li>Create job</li> | ||
+ | <li>Read job </li> | ||
+ | <li>Update job</li> | ||
</ul> | </ul> | ||
Line 200: | Line 294: | ||
<li>Create file attachment</li> | <li>Create file attachment</li> | ||
<li>Read file attachment</li> | <li>Read file attachment</li> | ||
− | <li> | + | <li>Export file attachment</li> |
+ | <li>Rename file attachment</li> | ||
</ul> | </ul> | ||
Line 206: | Line 301: | ||
<li>Search</li> | <li>Search</li> | ||
<li>View gallery</li> | <li>View gallery</li> | ||
− | |||
− | |||
</ul> | </ul> | ||
|} | |} | ||
Line 216: | Line 309: | ||
! scope="col" | User related | ! scope="col" | User related | ||
! scope="col" | Worker Related | ! scope="col" | Worker Related | ||
+ | ! scope="col" | Job related | ||
! scope="col" | Problem related | ! scope="col" | Problem related | ||
− | |||
! scope="col" | Miscellaneous | ! scope="col" | Miscellaneous | ||
|- style ="background-color:white; text-align:center" | |- style ="background-color:white; text-align:center" | ||
− | !Specific functions | + | !Associate Specific functions |
+ | |||
|style ="background-color:white; text-align:left"|<ul> | |style ="background-color:white; text-align:left"|<ul> | ||
<li>Read user</li> | <li>Read user</li> | ||
− | <li>Update user</li> | + | <li>Update own user</li> |
</ul> | </ul> | ||
+ | |||
|style ="background-color:white; text-align:left"|<ul> | |style ="background-color:white; text-align:left"|<ul> | ||
<li>Create worker</li> | <li>Create worker</li> | ||
<li>Read worker</li> | <li>Read worker</li> | ||
− | |||
</ul> | </ul> | ||
|style ="background-color:white; text-align:left"|<ul> | |style ="background-color:white; text-align:left"|<ul> | ||
+ | <li>Create job</li> | ||
+ | <li>Read Job</li> | ||
+ | |||
+ | |style ="background-color:white; text-align:left"| | ||
+ | <br> | ||
+ | <ul> | ||
<li>Create problem</li> | <li>Create problem</li> | ||
<li>Read problem</li> | <li>Read problem</li> | ||
− | |||
</ul> | </ul> | ||
− | + | ||
− | + | ||
− | |||
− | |||
</ul> | </ul> | ||
|style ="background-color:white; text-align:left"|<ul> | |style ="background-color:white; text-align:left"|<ul> | ||
− | <li>Search</li> | + | <li>Search Worker</li> |
<li>View gallery</li> | <li>View gallery</li> | ||
</ul> | </ul> | ||
|} | |} | ||
====Administrator==== | ====Administrator==== | ||
− | [[File:Administrator | + | [[File:CAMANS Administrator.jpg|500px|frameless|center]] |
====Management==== | ====Management==== | ||
− | [[File: | + | [[File:CAMANS Manager.jpg|500px|frameless|center]] |
====Specialist==== | ====Specialist==== | ||
− | [[File: | + | [[File:CAMANS Specialist.jpg|500px|frameless|center]] |
====Associate==== | ====Associate==== | ||
− | [[File: | + | [[File:CAMANS_Associate.jpg|350px|frameless|center]] |
== System Architecture Diagram == | == System Architecture Diagram == | ||
− | + | Users access CAMANS through their smart devices (mobile phone, computer, or tablet) which utilizes HTTPS protocol to make a connection to the server via the internet. The HTTPS connection goes through the firewall, which acts as a safe-guard against certain port intrusion, to the Apache Tomcat Server. Once activated, the Apache Tomcat Server would proceed to process JSPs while sending SQL requests to mySQL (Server) and storage/ retrieval requests to the Linux file system. | |
− | [[File: | + | [[File:Final system architecture diagram.jpg|frameless|center|800px]] |
+ | |||
+ | == Test cases == | ||
+ | Rather than conduct "blind" testing, the team created a series of test cases which our testers used to test CAMANS. The test cases, separated by the roles ("Administrator", "Specialist" and "Associate"), are as follows:<br> | ||
+ | |||
+ | '''Administrator''' | ||
+ | <gallery> | ||
+ | File:CAMANS-TC-ALL-001_Log_In_Log_Out_Module.xlsx|Admin-001-Log in | ||
+ | File:CAMANS-TC-ADMIN-002_Edit_Own_Profile_Module.xlsx|Admin-002-Edit own profile | ||
+ | File:CAMANS-TC-ADMIN-003_Create_User_Module.xlsx |Admin-003-Create user | ||
+ | File:CAMANS-TC-ADMIN-004_Edit_Other_User_Module.xlsx|Admin-004-Edit other user | ||
+ | </gallery> | ||
+ | '''Specialist''' | ||
+ | <gallery> | ||
+ | File:CAMANS-TC-SPECIALIST-002_Edit_Own_Profile_Module.xlsx|Specialist-002-Edit own profile | ||
+ | File:CAMANS-TC-SPECIALIST-004_View_Other_Users_Module.xlsx|Specialist-004-View other users | ||
+ | File:CAMANS-TC-SPECIALIST-006_Search_Worker_Module.xlsx |Specialist-006-Search worker | ||
+ | File:CAMANS-TC-SPECIALIST-007_Create_New_Worker_Module.xlsx|Specialist-007-Create new worker | ||
+ | File:CAMANS-TC-SPECIALIST-008_View_and_Edit_Worker_full_profile_Module.xlsx|Specialist-008-View and edit worker full profile | ||
+ | File:CAMANS-TC-SPECIALIST-009_View_and_Add_Worker_Compliment_Module.xlsx|Specialist-009-View and add worker compliment | ||
+ | File:CAMANS-TC-SPECIALIST-010_View_and_Edit_Job_Profile_Module.xlsx|Specialist-010-View and edit job profile | ||
+ | File:CAMANS-TC-SPECIALIST-011_Add_New_Job_Module.xlsx|Specialist-011-Add new job | ||
+ | File:CAMANS-TC-SPECIALIST-012_View_and_Add_Job_Complement_Module.xlsx|Specialist-012-View and add job complement | ||
+ | File:CAMANS-TC-SPECIALIST-013_View_and_Edit_Problem_Profile_Module.xlsx|Specialist-013-View and edit problem | ||
+ | File:CAMANS-TC-SPECIALIST-014_Add_New_Problem_Module.xlsx|Specialist-014-Add new problem | ||
+ | File:CAMANS-TC-SPECIALIST-015_View_and_Add_Problem_Complement_Module.xlsx|Specialist-015-View and add problem complement | ||
+ | File:CAMANS-TC-SPECIALIST-016_Upload_and_Download_Attachment_Module.xlsx|Specialist-016-Upload and download attachment | ||
+ | </gallery> | ||
+ | '''Associate''' | ||
+ | <gallery> | ||
+ | File:CAMANS-TC-ASSOCIATE-002_Edit_Own_Profile_Module.xlsx|Associate-002-Edit own profile | ||
+ | File:CAMANS-TC-ASSOCIATE-004_View_Other_Users_Module.xlsx|Associate-004-View other users | ||
+ | File:CAMANS-TC-ASSOCIATE-005_Create_New_Worker_Module_.xlsx|Associate-005-Create new worker | ||
+ | File:CAMANS-TC-ASSOCIATE-006_View_and_Edit_Worker_Profile_Module.xlsx|Associate-006-View and edit worker | ||
+ | File:CAMANS-TC-ASSOCIATE-007_Add_Job_Profile_Module.xlsx|Associate-007-Add job profile | ||
+ | File:CAMANS-TC-ASSOCIATE-008_Add_Problem_Profile_Module.xlsx|Associate-008-Add problem profile | ||
+ | File:CAMANS-TC-ASSOCIATE-009_View_Problem_Profile_Profile_Module.xlsx|Associate-009-View problem profile | ||
+ | File:CAMANS-TC-ASSOCIATE-010_Issue_benefaction_Module.xlsx|Associate-010-Issue benefaction | ||
+ | File:CAMANS-TC-ASSOCIATE-011_View_and_update_Module.xlsx|Associate-011-View and update | ||
+ | File:CAMANS-TC-ASSOCIATE-012_change_job_and_problem_Module.xlsx|Associate-012-change job and problem | ||
+ | </gallery> | ||
== Technical Difficulties & Solutions == | == Technical Difficulties & Solutions == | ||
Line 329: | Line 466: | ||
Using an extensive "if-else" loop, we have created a servlet which would take in all the values keyed in by the user and systematically construct a SQL query which would be passed through the database. An example of such "combined" query is as follows: | Using an extensive "if-else" loop, we have created a servlet which would take in all the values keyed in by the user and systematically construct a SQL query which would be passed through the database. An example of such "combined" query is as follows: | ||
[[File:SQL example.JPG|frameless|650px]] | [[File:SQL example.JPG|frameless|650px]] | ||
+ | |||
+ | ==== Attachments ==== | ||
+ | <b>Problem: </b> <br> | ||
+ | Allowing the client to upload/edit all types of attachments into the File System without getting an error | ||
+ | |||
+ | <b>Solution: </b> <br> | ||
+ | Although the required technology and code for attachment is not uniquely complex, we coded in such a way to be user-friendly and flexible in terms of usability. We allowed users to upload all types of files, even videos to the server, allow them to upload the multiple files with same file names, and allow them to edit the uploaded file name. The most uniqueness is that we leveraged the Linux-based file systems to avoid storing the huge files in the database that would maintain the speed of database query. Whenever the new worker is created, our application will create the new folder for this created worker in the Linux file system so that if a user uploads the files for this worker in the future, the actual file will be stored inside the folder created in Linux system instead of storing in the database. | ||
+ | |||
+ | In addition, we have configured CAMANS to only change the file name in the event the User wishes to edit file names. To prevent accidental, and potentially problematic, changes in file types, CAMANS would append the file type automatically to the edited file name for storage in the linux file system. | ||
+ | |||
+ | ==== Form input data ==== | ||
+ | <b>Problem: </b> <br> | ||
+ | Certain special characters would cause CAMANS to malfunction and not save input properly | ||
+ | |||
+ | <b>Solution </b><br> | ||
+ | After testing and research into mySQL limitations, we realized that there are certain characters which were programmed to serve special functions in mySQL. As such, we utilized Parsley.js validation and set the '''pattern="^[A-Za-z0-9 .,!?/:;^%$&\(\)+=\-_@\{\}\<\>\[\]|*#]+$"''' for the text fields to prevent the user from entering these certain characters. In the event the User accidentally keyed in such values, a warning would be displayed requesting the User to change his/her values. In addition to the front end validation, we have configured the backend to handle such exceptions by implementing another round of validation. |
Latest revision as of 23:01, 28 November 2014
Stakeholders & Team | Technologies & Resources | Project Description | Project Scope |
Project Framework | Our Schedule | Project Metrics | Project Deliverables |
Project Diagrams & Technical Aspects | User Interface | User Review | Our Minutes |
Contents
Business Process Diagram
The basic business process flow of users using CAMANS are as follows:
Associate
Associates are tasked with the responsibilities of issuing specific beneficiaries (EZ-link cards, Cash transport, Meal cards etc.) to the needy foreign workers. As such, their business flow starts with the users keying in the foreign worker's FIN or identification number. In the event there is no match (i.e. first time user), the user will proceed to create a new case for the foreign worker. Should there be a case linked to the foreign worker, the user can then proceed to issue the beneficiaries as requested. The process ends when the foreign worker is cleared and the user proceeds to assist another foreign worker.
Specialist
Specialists are tasked with the intricate tasks of helping foreign workers who do not fall into any specific beneficiary (i.e. multiple/ sensitive or difficult cases). These users will access the full spectrum of job and worker compliments which CAMANS has to offer. Their business flow starts with the user keying in the foreign worker's FIN or identification number. In the event there is no match, the user will proceed to create a new case for the foreign worker. In the even there is a case linked to the foreign worker, the user can then view/edit or add information in the compliments which is required. The process ends when the foreign worker is cleared and the user proceeds to assist another foreign worker.
EER Diagram
Heeding the feedback given to the team during the mid-term presentations, we have reduced the database tables from 84 to 51. They are divided into 6 categories - namely user, worker, job, problem, attachment and drop downs.
For a high level view of the database, please refer to the following links:
[Midterm]
[Final]
CAMANS's database structure - By Categories
Primary Table name | Primary key | Foreign key | Other tables associated to this table |
---|---|---|---|
tbl_user | NRIC_No |
| |
tbl_worker | FIN_Number |
| |
tbl_job | Job_Id | FIN_Number |
|
tbl_problem | Problem_Id | FIN_Number, Job_Id |
|
tbl_dropdown | dropdown_Id |
User
Worker
Job
Problem
Attachment
Dropdown
Class Diagram
Our application applied Java model 2, which is associated with MVC(model-view-controller) paradigm, into our design. Requests from client side are passed to the controllers which conduct the logic needed to obtain content to display. It then decides which view to pass the request to. The view then renders the content passed by the controller.
Class diagram is important for large and complex systems and it also plays a useful role in the development of smaller systems. The use of class diagram helped us to clarify ideas in the initial design stages of an object oriented system when analyzing the requirements and deciding on the fundamental classes and how they will relate to each other.
The class diagram shown below illustrates CAMAN's design, methods and relations clearly, an essential since our system is fairly big. As illustrated, DBConnect class is the heart of our system from which the methods are retrieved in Servlets. Using the MVC framework, our system is very simply designed. Servlets will receive the value from the client side and use related methods in DBConnect to fulfill the users’ requests.
For a segmented view of our class diagram, please refer to the picture gallery below:
Use Case Diagram
As an administrator, management or a specialist, he/she can perform the functions below:
Function group | User related | Worker Related | Job Related | Problem related | Access rights | Attachment related | Miscellaneous |
---|---|---|---|---|---|---|---|
Administrator Specific functions |
|
|
|
|
|
|
|
Management Specific functions |
|
|
|
|
|
|
|
Specialist Specific functions |
|
|
|
|
|
|
|
As an associate, he/she can perform the functions below:
Function group | User related | Worker Related | Job related | Problem related | Miscellaneous |
---|---|---|---|---|---|
Associate Specific functions |
|
|
|
|
|
Administrator
Management
Specialist
Associate
System Architecture Diagram
Users access CAMANS through their smart devices (mobile phone, computer, or tablet) which utilizes HTTPS protocol to make a connection to the server via the internet. The HTTPS connection goes through the firewall, which acts as a safe-guard against certain port intrusion, to the Apache Tomcat Server. Once activated, the Apache Tomcat Server would proceed to process JSPs while sending SQL requests to mySQL (Server) and storage/ retrieval requests to the Linux file system.
Test cases
Rather than conduct "blind" testing, the team created a series of test cases which our testers used to test CAMANS. The test cases, separated by the roles ("Administrator", "Specialist" and "Associate"), are as follows:
Administrator
Specialist
Associate
Technical Difficulties & Solutions
Throughout the course of this FYP, Res Novae has faced numerous technical problems pertaining to Application coding, Server and Database. In a bid to help current and future FYP teams which might face similar issues, here are some of the more note worthy difficulties and solutions:
Database Inter-table linkage Issues
Problem:
CAMANS has a total of 84 tables which have different linkages within themselves. This results in several database search errors which plagued CAMANS very badly during the first few iterations. In addition, since CAMANS started development before the database can stabilize, correction works often proved to be tedious and extremely time consuming.
Solution:
A thorough understanding of the database you are trying to build is key to solving this issue. Although theoretically easy to implement, many database developers start to forget the linkages of their newly created tables after a period of time. In our case, we decided to investigate and identify the linkages between them. Creating special "keys" (table columns) which would tie the linked tables together, we managed to solve this issue. A abstract of our codes to create tables is as follows, take special notice of the created foreign key linkages (Job_key & Prob_key):
In addition, in the rare occurrence that there is a change in the values of the Primary keys which are linked to other tables, you can create your tables with the following code to allow auto updating of dependent tables:
Linux Server (Ubuntu)
Problem:
Unfamiliar with Linux and much less with Ubuntu command line, the team had a difficult time understanding how applications that worked fine on localhost suddenly becomes inaccessible when uploaded on the Linux Server. This cause us to face multiple HTTP related errors which caused much delay in deveopment. This is especially so since CAMANS relies heavily on the Linux File System to store it's attachments (User uploaded files).
Solution:
There are four things which you must be sure of before embarking on such a project. The team has found the following online help useful, we hope you can benefit from it as much as we did:
File permissions:
- Chmod command examples (Permissions)
- Chmod detailed explanation
- Chown Group permissions
- Understanding file permissions: Tutorial
Command Line (Terminal):
VI File editor (Command Line):
Linux file System:
Uncomplicatted Firewall:
Multiple criteria search
Problem:
Allowing the client to search with multiple criteria increases the usability of the system. However, it comes with the potential problems of having searches giving out erroneous results.
Solution:
Using an extensive "if-else" loop, we have created a servlet which would take in all the values keyed in by the user and systematically construct a SQL query which would be passed through the database. An example of such "combined" query is as follows:
Attachments
Problem:
Allowing the client to upload/edit all types of attachments into the File System without getting an error
Solution:
Although the required technology and code for attachment is not uniquely complex, we coded in such a way to be user-friendly and flexible in terms of usability. We allowed users to upload all types of files, even videos to the server, allow them to upload the multiple files with same file names, and allow them to edit the uploaded file name. The most uniqueness is that we leveraged the Linux-based file systems to avoid storing the huge files in the database that would maintain the speed of database query. Whenever the new worker is created, our application will create the new folder for this created worker in the Linux file system so that if a user uploads the files for this worker in the future, the actual file will be stored inside the folder created in Linux system instead of storing in the database.
In addition, we have configured CAMANS to only change the file name in the event the User wishes to edit file names. To prevent accidental, and potentially problematic, changes in file types, CAMANS would append the file type automatically to the edited file name for storage in the linux file system.
Form input data
Problem:
Certain special characters would cause CAMANS to malfunction and not save input properly
Solution
After testing and research into mySQL limitations, we realized that there are certain characters which were programmed to serve special functions in mySQL. As such, we utilized Parsley.js validation and set the pattern="^[A-Za-z0-9 .,!?/:;^%$&\(\)+=\-_@\{\}\<\>\[\]|*#]+$" for the text fields to prevent the user from entering these certain characters. In the event the User accidentally keyed in such values, a warning would be displayed requesting the User to change his/her values. In addition to the front end validation, we have configured the backend to handle such exceptions by implementing another round of validation.