The Reporting and Forecasting Tool (RAFT) shows Institute Fiscal Officers what has been charged to their Cost Objects and forecasts changes to those charges based on changes in their base budget. This web application uses three different programming languages and strategies on each of its three tiers (presentation or web layer, service layer, and database layer) to give Fiscal Officers the information they need to control a DLC's budget.

The presentation tier, where users see and manipulate costs, shows data in the HTML markup language (view) driven by a custom JavaScript codebase (controller). The RAFT presentation tier uses a popular JavaScript framework, jQuery, to abstract browser-specific coding issues and make it easier for other developers to maintain the code. RAFT uses AJAX to retrieve all data from the service layer, and it maintains all user state (what data the user has chosen to view and manipulate) in the browser. This makes the application perform more like a desktop application, in that it does not need to make repeated calls to the database to save and retrieve the user state. Please see this whitepaper <TBD> for a more indepth explanation of RAFT presentation-tier code.

The RAFT service layer is designed to fulfill two overlapping needs: create a RESTFUL application programming interface (API) to Cost Object data so that MIT developers can create custom applications and reports easily; and form the services RAFT needs to get Cost Object data and save user budget forecasts. This service API is written in PHP based on a standard PHP framework called Zend. This API provides two main functions: the interface for finding and displaying Cost Object data and the mechanics of turning database tables, columns and rows into JSON objects the presentation tier can read and display.

The database tier for RAFT is a layer of Stored Procedures written in PL/SQL that access Cost Object charges in the MIT Data Warehouse. Stored Procedures are an Oracle database specific programming technique for coding database queries and business logic in the database layer.

RAFT Architecture
  • No labels