Summary
Decision support applications are very well suited for rich clients. This kind of application is characterized by the visual presentation and exploration of information derived from a large dataset of business performance metrics.
- OLAP - Online Analytical Processing
- EIS - Executive Information Systems
- BPM - Business Performance Management
- BI - Business Intelligence
Curl applications in this genre have been deployed for several years now. This articles focuses on the Curl Business Intelligence application. The CBI (Curl Business Intelligence) is part of a widely used Japanese ERP system. It allows users to view business performance metrics supplied by a server ERP system.
It consumes business performance metrics (a few thousand facts about sales and profit by division and month over five years). These facts originate from operational modules, and are periodically consolidated and published. The application uses the data to populate its views.
This kind of data is most effectively organized as a multidimensional model, described by a "star schema", with a central fact table containing specific measured values indexed by dimensions (such as time, organization, product, geography, scenario). Each dimension is described by a dimension table. This multidimensional structure is called a hypercube.
Once the application has obtained its model (facts and dimensions) from the server, it operates purely on the client. The hypercube model is queried for datasets, which are presented as charts, grids and tables, parameterized according to user supplied criteria.
Demonstration
Run the
Curl Business Intelligence Demo
Functionality
The display is subdivided into panes, each of which can be used to explore aspects of the data. In order to maximize screen real estate available for the data, the controls for report selection and adjustment are implemented as rollover menus on the titles.
To change the type of report, move the mouse over the report title, and choose another option. To change the parameters of a report, move the mouse over the descriptive title (which summarizes the criteria) and choose alternatives from the control panel that appears. The report changes to reflect the current criteria. The control panels are translucent, so they do not fully obscure the chart on which they operate.
For example, for the Sales Ratio report, you can change the year, time period or aggregation. For the Budget Actual or Three Year reports, you can change the year, business division, interval or accumulation. Different report types offer different configurable criteria. Settings made to configure the CBI display are recorded in client-side persistent storage, so that subsequent sessions will retain their state.
Panes can be maximized using the icon in the upper right of their title. When a report is presented in a maximized pane, additional detailed information is presented. For example, in the Sales Ratio report, the full presentation includes a scatter plot correlating sales and profit by group, and a data grid containing the actual values.
The panes can be reorganized by drag and drop. Tabs provide another level of organization, so different report sets can be prepared. Click right on a tab to change its name. Drag the tabs to rearrange them.
These settings are also preserved, so when you return to (or refresh) the CBI application, it retains its arrangement. The combination of saved settings and tabs gives flexibility for users to organize the way they want to view the data.
Development
The functional requirements included:
- Consume data provided by server in standard format
- Present results using various (well specified) display screens
- Configurable data and layout, so that behavior and appearance can vary for different sites
- Extensible architecture, so that additional screens and functions can be added in later phases
The CBI application was developed over the course of two quarters, in phases, with a series of operational prototypes. The application uses a layered architecture, with the hypercube model and application substrate (settings, panes, control panels, and so forth) underlying an extensible set of reports.
The layered, component based approach facilitated incremental assembly of functional applications.
The initial phase provided the basis for development: the hypercube domain model, its query language, and the message interchange pattern to be used by its consumer presentations. These components were developed independently, using test data and test displays to verify proper functionality. The detailed requirements for application logic and display screens were reviewed during this phase.
The next phase assembled a functional application, by combining those components with application configuration, realistic data sets, and rapid implementations of each kind of presentation. The phase provided a baseline operational application to stakeholders, allowing for early review, feedback and refinement.
In the following phases, the final functionality was developed, based on feedback gained from review of earlier phases. Additional screens and presentations were added, and the arrangement and styling of the user interface adjusted. The final phase involved data integration with the underlying enterprise system.
The current CBI module comprises 26K lines of code, in 8 packages, with 4 screens, and 8 presentation types. The resulting deployed application is compact. In fact, the deployed application is smaller (180Kb) than the document describing its functional requirements.
Further refinement and enhancement of CBI application will continue. So its size is likely to increase. The presentation components (screens and displays) are independent of one another, relying only on common services from domain model (hypercube query language,) and infrastructure (context, settings, coordination). Therefore, for the extensions in functionality anticipated for future phases of the project (such as additional screens, reports and presentation elements), good scalability is expected, both in runtime performance, and in development effort.
Benefits
The CBI Application illustrates several strengths of the Curl Platform
- Data Visualization : application employs data access, charting and GUI components built into Curl RTE
- Responsiveness : compiled code gives high performance, even for filtering and aggregating large data volumes
- Personalized Content : client side persistent data storage preserves application state across sessions
- Bandwidth Reduction : application footprint is small, both because of the breadth of components in RTE, and also because of client side JIT compilation and package caching.
- Extensibility : layered architecture facilitates extension by addition of packages into base framework