1.2. Features

In his seminal book Analysis Patterns, Martin Fowler writes that a framework "... should be applicable across a large domain and be based on an effective conceptual model of that domain" (p. 11). Accordingly, the Web Application Framework defines a set of Domain Objects that are encountered in the problem domain of most WAF applications. This object model further subdivides into two categories: kernel and services.

In addition to kernel and services, WAF includes other features that facilitate building database-backed web applications: infrastructure, persistence, presentation, and web.

1.2.1. Kernel

The kernel provides all the business logic provided by WAF, namely, business logic that is essential to building a web applications. Kernel provides domain objects that represent users, groups, and permissions.

Figure 1-3. Basic Configuration

1.2.2. Services

Services are building blocks that address generic requirements common to most WAF applications. Each requirement defines a set of related Domain Objects, for example, Versioning, Workflow, and Categorization:

Figure 1-4. Basic Configuration

As shown in Figure 1-4, all services follow the n-tier design pattern discussed in Section 1.1 General Architecture, providing:

Services are discussed in more detail in Chapter 4 WAF Component: Services.

1.2.3. Infrastructure

Infrastructure contains software to support the mechanics of application building at each layer of the architecture (for example, serving page requests, styling the user interface, logging, specifying metadata, storing data, etc.).


This infrastructure exists independently from any specific problem domain and generally does not depend on other WAF systems.

1.2.4. Persistence

Persistence handles the storage and retrieval of all information in WAF applications via Data Objects. Data Objects are implemented as a Java class library that supports CRUD (create, read, update, and delete) operations for any type of Data Object. This is done through a set of generic interfaces: DataObject, DataCollection, and DataAssociation. Persistence is discussed in detail in Chapter 2 WAF Component: Persistence.

1.2.5. Presentation

Presentation is responsible for presenting data in a structured format to the end user. WAF provides three basic systems for presentation: Bebop, a web user interface component framework modeled after Java Swing; Java Server Pages (JSP); and eXtensible Stylesheet Language (XSL). Presentation is discussed in detail in Chapter 5 WAF Component: Presentation.

1.2.6. Web

The Web component of WAF makes the persistent data and domain logic of your application available to others over protocols such as HTTP. It integrates the Java Servlet API and the kernel and persistence components of WAF. For more information, see Chapter 6 WAF Component: Web.