Architecture

This section explains the overall architecture used by the various applications. Each application may consist of multiple programs implementing different aspects of the application.

Data Storage & Management

All permanent data storage takes place in the PostgreSQL database. In addition, many computations which are interface-independent are implemented by stored procedures so that they can be available to all consumers of the data.

Web Interface

Most applications have a web interface, which is implemented in Python. For information about deploying the web interface, see the page about the Web Server. For information about Python code, see the pages about Python coding standards.

External Communication

Individual application programs do not communicate directly with multiple external systems. Instead each program mediates between a single external system and the database. Most applications have a web interface program which communicates with HTTP user agents. Applications typically also have programs which implement scheduled tasks. These may be run using cron or at the end of a data import process.

Email sending is handled by the Outgoing application. Any application program needing to send an email must do so by creating an email sending request within Outgoing.

Print requisition creation is handled by the Print application. Any application program needing to send a print requisition must do so by creating a print requisition request within Print.

Access to data maintained by other systems is handled by regularly importing it. This is done by the Quest and WatIAM applications.

Temporary Storage

Individual application programs may require temporary file storage in order to perform their processing. This should be considered internal to the specific program in question; other programs should not touch or look at the temporary file storage space of another program. An exception would be a program written in one language which needs to invoke a program written in another language, and uses temporary file storage to communicate with the child process.