The architecture of this system is centered around a U.C. Berkeley Central Event Repository. This relational database contains tables that map to a simplified, UC-Berkeley specific version of our Event model. All calendars using the U.C. Berkeley Calendar Network to create their calendars will store their Event data in this repository. All calendars in the network will be able to access this Event data if it has been marked "public" by the Event owner. Calendars who prefer not use the Central Event Repository to store data but would still like to share their Event information with or receive Event information from the repository can communicate with it via an XML document. The schema for this Events.xml document (which is currently being re-developed) can be found in Appendix A. It is expected that the application will parse the data from these documents into the relational tables in the database, as well as pull data out of the tables and parse it into documents conforming to the Events.xsd schema. We do not believe that XML-aware databases such as Oracle 10g are robust enough to be able to handle the data efficiently as XML at this time.
The UCB Calendar & Event Management Application is divided into two parts: the Event Manager which can be used to manage Event information within the repository, and the Format Calendar Tool which allows the creation of a web-based calendar,. Some calendars will choose not to use our application to generate their calendar because they have requirements for their website that we will not be able to address in the early versions of the calendar (e.g. ticketing systems). However, these calendars may still choose to use the Event Manager section of the Calendar & Event Management Application to upload and manage the Event data they share with other calendars using the Central Event Repository.
Calendar Administrators who do decide to create their web-based calendar using the Calendar & Event Management Application will be able to create a highly-designed, dynamic web-based calendar which can provide many different views of the same Event data. PHP will be used to pull data from the database based on user requests and create an XML document with Event & Calendar data. A calendar view is then created by applying an XSL transform & Cascading Style Sheet to the XML document. Users may choose to use the default calendar as-is, or modify it using the Calendar & Event Management Application to modify to create a calendar with the "look and feel" of the rest of their website.
Calendars created with the Calendar & Event Management Application will be hosted on a central web server which connects to the Central Event Repository. We expect that one database server and one web server will be sufficient for the first release of the system. However, as the number of users grows, it may be necessary to add additional web or database servers behind load balancers to handle the increased load. Calendars on the system will be managed by one set of PHP files, and thus will have a URL that reflects the central server's name. Calendars wishing to display their own URL instead of that of the central server can use a URL alias. They will, however, have their own XSL & CSS files which create the "look and feel" of their calendar. When a website visitor chooses a calendar view, a query with the type of information they would like to see (e.g. All events in January for the Letters & Science calendar) will be sent to the Central Repository via PHP. The retrieved data will be parsed into an XML document using PHP. This data will then be transformed by PHP for this particular calendar using the calendar's XSL stylesheet. The result of this transformation will be an HTML document which, with the help of the calendar's CSS file, will create the requested display. Caching may be used to make the display of each calendar as efficient as possible.