Challenge Overview
Project Overview
Client requires an application to replicate current functionality to book video conferencing (VC) rooms through a calendar.
The new system will track events created through Google Calendar which have the vc room resources attached. When such events are created, an email needs to be generated and sent to Orange with the relevant details so they can action the VC booking request on their side.
Competition Task Overview
This challenge should design the architecture of this project.
The architecture should include following deliverables:
- UML Diagram (Class Diagram, Sequence Diagram, etc.)
- Appliation Design Specification
- Assembly Challenge Specification
Detailed Requirements
Functional Requirements
- Track when events are created on specified resource calendars.
- When an event is created, updated or deleted with 2 or more of specified resource calendars, an email should be generated with the format defined below, and sent to a predefined address (Orange), and then an acknowledgement sent to the user. (https://developers.google.com/appengine/docs/java/mail/)
- If an event has less than 2 resources included, no emails should be generated.
- If there are any errors in sending the emails, keep track and retry after a delay.
- If a created event is set to recur, the application will uncheck the "recurring" checkbox, and only the first event should remain. The user is emailed notifying them of this, and advising them that recurring events are not supported at this time.
Non-Functional Requirements
- All specified inputs (resource calendars, email address to send to, number of days in advance to be able to book etc.) should be configurable and managed through a config file of some kind e.g. Constants file, YAML. (https://developers.google.com/appengine/docs/java/configyaml/appconfig_yaml)
- Functions should output to logs to track issues, in a Google Sheet. A new sheet should be created each new calendar week. (Logs must be regularly accessed by nontechnical staff. Investigate a better alternative for logging as part of this challenge, if one is available) (https://developers.google.com/drive/v2/reference/ https://developers.google.com/google-apps/spreadsheets/)
- Application should run on Google App Engine.
- Application should track changes on Google Calendars for specific resources.
- The process should either be triggered by push notifications from Google Calendar. (https://developers.google.com/google-apps/calendar/v3/push)
- if push notifications cannot be used this can be scheduled to run every 5 minutes
Application Flow
- A user creates, edits or deletes an event in Google Calendar which includes 2 or more VC room resources.
- The web application monitors changes on Google Calendar, and picks up an event change on this event.
- The web application generates an email with the relevant details and sends it to Orange (see format below).
- Once the email has been successfully sent to Orange, an acknowledgment email should be sent to the user (see format below).
Email Format
see attached email format file.
Open Source Library
Google App Enging SDK: https://developers.google.com/appengine/downloads
Google APIs Client Library: https://developers.google.com/discovery/libraries
Technology Overview
- Google App Engine
- Java
- Google APIs
Final Submission Guidelines
Submission Deliverables
- TCUML
- Application Design Specification
- Assembly Challenge Specification