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.
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 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
- 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.
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.