Challenge Overview
1.0 Project Overview
The client wants to create a Google Drive Legal Hold Time Capsule Management Tool. The purpose of this tool is to create an application with a web frontend to allow better management of the Google Drive contents of a Google Apps User once an account has been suspended.
2.0 Challenge Details
This module will provide the entire application, including data models, exceptions, backend services, frontend controllers/intercepts and HTML/JS.This module will provide the entire application, including data models, exceptions, backend services, frontend controllers/intercepts and HTML/JS.
2.1 Model Classes, ERD and JPA Mapping
The model classes are shown on "Model Class Diagram".
Model classes marked as <<JPAEntity>> are JPA entities persisted in SQL Server 2012 databse, and module architects are required to provide database schema and JPA mappings.
See the SDS Section 4 “Data Model” for the description of the models.
2.2 Business Services and Exceptions
The business service interfaces and common exceptions are shown on "Service Interface Diagram".
See the SDS Section 5 “Process Architecture” for the description of the services and how the services are used for addressing the requirements.
2.3 REST APIs
The System Architecture proposes a set of REST APIs for browser/client-side JavaScript to consume, and it is expected that the REST APIs will be implemented using Spring MVC framework.
The REST APIs are documented in the accompanied REST_API_Specification.docx. Module architects are welcome and encouraged to improve the REST APIs as appropriate.
2.4 Frontend UI
The frontend pages will be constructed with HTML5 (with Polymer elements), JavaScript, AJAX and Spring MVC technologies. The frontend Spring MVC controllers are used to handle user requests (in particular REST APIs), HTML5 (with Polymer elements) and JavaScript are used to show the data and interact with user.
Most of the UI should be implemented using Polymer framework (in particular Core elements and Paper elements):
- paper-tabs and paper-tab can be used to implement the tabs
- paper-toast can be used to show info/error messages
- paper-progress can be used to show progress bars
- paper-menu-button can be used to show the action buttons (Download, Download Revision etc.)
- paper-input can be used to implement the simple text input field
- paper-dropdown can be used to implement dropdown list
- paper-dialog can be used to implement popover dialogs
- paper-button can be used to implement buttons
- paper-checkbox can be used to implement check boxes
- core-list can be used to implement tables
- core-ajax can be used to make AJAX requests to call REST APIs.
In general, client-side JavaScript will call REST APIs using Polymer core-ajax and various other Polymer core and paper elements will display data obtained from REST APIs using Polymer data-binding.
Note: Ensure that the Front-End is abstracted out well enough that we could switch to another set of HTML5 elements.
2.5 Parallel execution of jobs
We want to ensure that when a job or jobs are indexed we get a scalable solution in terms of how the jobs are run. Please refer to SDS section 7.3 and 7.4. This is quite important as we want to get a solution that works well for different scenarios involving different document processing loads.
3.0 Provided Materials
You will have access to the following support materials (listed in order of importance):
- System Architecture
- ARS
- Completed POC with source code and deployment guide.
- Original Prototype
- Original Client Document.
Final Submission Guidelines
Your deliverable will consist of a single zip containing:
- Application Design Specification
- Assembly Diagram
- Class Diagrams
- Sequence Diagrams
- Assembly Specifications (This is straight to development effort)
- ERD
- JPA Mappings