What XPage Is
How It Works
A Case Study
View Pages
      Multi-Row
      Single-Row
      Hybrid
Insert Pages
      Hybrid
      Single-Row
Edit Pages
Search Pages
Delete Pages
      Single-Row
      Hybrid
Overall Features
      Page Features
Engineer's View
      System Catalog
      Page Types
      View Pages
      Insert Pages
      Edit Pages
      Search Pages
      Delete Pages

SourceForge Logo

 
This web site is no longer being updated. The version of XPage available here dates back to 2002. XPage was meant to be completely redesigned and rewritten from scratch. However the work on its new release suffered from what I later learned to be the Second-system syndrome. For 3-4 years I kept designing and redesigning the new version here and there, worked on these elaborate interaction diagrams, and created barebone implementations in PHP and later in Python. But, XPage 1.0 never came to life. However XPage 0.2, in the very state that is available here, with all the code that I wish I could hide and not let anyone look at, is still deployed and running today on a couple of industrial and educational intranets.

What XPage Is

XPage is an XML-based tool for automatic generation of data-intensive web-based applications.  It means that the tool is programmed in XML language; it produces a web-based application as the product; and it is intended for development of applications which are basically dealing with data storage, retrieval and manipulation tasks.  It is not stated in that long expression, but the tool relies on relational database systems as the data source; that is the data of the product application is stored in a relational database system.

This tool was developed in an effort to produce a software development environment which can totally eliminate or greatly ease the phase of implementation for web-based applications which are designed for managing structured information.  Although we are calling it a tool, it is actually an architecture together with an associated tool for developing applications based on that architecture.

The Architecture That It Offers

The view of this tool from a web-based application is a set of dynamic pages which are linked together, interact with the user and work with the data stored in a relational database.  The interesting point about this architecture is that it is not trying to deviate from the intrinsic nature of the web.  Neither it is trying to build a new paradigm for web-based programming nor is it fitting another programming technology to the web environment.  It is based on the conventional server-side programming for developing dynamic web pages, with the major difference that it is not based on writing program code.

The tool has a page-oriented approach for application development, hence the name XPage.  Every page of the product application is described with a high-level abstract XML document.  In the runtime environment, these XML documents are automatically and transparently transformed into stand-alone server-side scripts (currently in PHP) using an XSL Transformation.  Based on their functionality and responsibility, every page of the product application is classified into one of the five basic page types supported by the tool:

  • View pages retrieve the information from the data sources and display it to the end user
  • Insert pages obtain user input using HTML forms and store the data in the system
  • Edit pages are used for modifying the stored data
  • Search pages allow the end user to query the information stored in the system
  • Delete pages are used for data removal

Although looking very similar, the format of the XML documents is different for each type of the page.  The information provided in the XML documents is mainly concerned with the data model of the page; the data source or data target of the page, the data items that it displays or manipulates and the format in which it displays or inputs data.

Why Such A Tool

The web, while introduced initially as a medium for broadcasting information, is increasingly used as a platform for implementing software systems.  Existence of the standard client (web browser), possibility of using the system from remote locations, intrinsic network access, centralized management of data,  improved security model and convenience of using HTML forms for generating user interfaces are among the advantages of using the web as a development platform.

On the other hand, managing the development of web-based systems is often difficult.  In particular, it is not straightforward to separate the logic and presentation for these systems, as the program code is usually embedded within the HTML document, both in server-side and client-side technologies.  However this tool introduces a high-level abstract language for defining the pages, which lets the developer focus on the data instead of writing program code.

Moreover, most data-intensive applications are based on a number of recurrent design patterns.  The basis of such applications is managing structured information.  For example, primitive data manipulation operations like insert, edit and delete are repeatedly used in every part of these systems, however every time it is just the data source that changes and the process is merely repeated.  Validating user input in data entry forms is another process which is widely repeated.  This repetition in the logic of the application results in similar program files and similar user input forms.  Not only does it make difficult the implementation and maintenance phases, but also it makes the development process quite error-prone.  However this tool offers a different development model allowing the developer to take advantage of the solutions implemented in the generic program files of the tool.