Skip directly to searchSkip directly to the site navigationSkip directly to the page's main content

View System Documentation - Architecture

This page describes the public IBIS-PH View System which is a Web/internet based application that allows the viewing of health data. This includes normal web pages, indicator profile reports, and custom queries on Utah specific health data. The application is based on the Module View Controller (MVC) design pattern with Java servlets acting as the controllers, XSLTs providing the view, with XML documents/data files providing the model. The Spring MVC Web Framework is used to provide an open standard that allows for pluggable solutions. Figure 1 shows a high level overview of the parts and how they interact. Following the diagram, each of the main functional types of the application are discussed.
Figure 1

Filters

The "org.ibisph.filters" package provides the system with standard Java servlet filters. The web.xml file controls which filter is applied to which page request. The base org.ibisph.filter abstract class provides an additional URL request check so that filter URL mapping is not limited to the basic Java servlet filter mappings. See the Filters page for more detailed information.

Models

The model (data of interest to be displayed) is contained within an XML file. Most View System requests deal with only one XML file (a "page" type XML file, an Indicator Profile XML, a Query Module XML etc.). This file is typically specified as part of the HTTP request URL. A special controller is used that parses the URL for the XML filename and optionally the path. A base directory property (defined in the Spring bean XML configuration files) is then added as a prefix to locate the exact XML data file to be used as the model. For indicator profiles the process is very similar. For the Query Modules, the XML is loaded into the user's session and is not reparsed for each page. See the MVC Model section for a more detailed discussion of the XML used in the IBIS-PH View System.

Views

The view portion of the MVC pattern is almost exclusively handled by an XSLT system ID and an XML/XSLT transformer. CSS is also used as part of the view as is Javascript to control user interaction. However, strictly speaking, the view creation is handled by XSLT. The XSLTs used by the IBIS-PH View System are comprised of many layers of imported XSLT files. The reason for this complexity is 1) to provide modularization of XSLT templates and 2) to help implement a mechanism where site specific implementations can override the base XSLT template definitions while keeping the site specific code separate from the main/core XSLT templates. See the MVC View section for a more detailed discussion of the XSLT structure and how the views are created for the IBIS-PH View System.

Controllers

The controller portion of the MVC pattern consists of Java Filter and Servlet code to manipulate and determine/control which model (XML) to combine with which view (XSLT). The Spring Framework's MVC RequestDispatcher servlet is used with IBIS-PH View System specific Spring MVC Controller code to handle the various requests. These controllers are simple Java objects that implement the Spring MVC Controller interface. That is, they have a handleRequest() method that returns a Spring MVC ModelAndView object. The RequestDispatcher servlet then uses the View object returned and calls its render() method with the model to produce the desired/specified output. See the MVC Control section for a more detailed discussion of the controllers used in the IBIS-PH View System.