Page tree


Contents

Primary Presentation

Element Catalog

Context Diagram

Variability Guide

Rationale

Related Views

Primary Presentation


Visio file

Element Catalog

Consumer Website

The web-based user interface of the Adventure Builder is implemented in this module. The user interface lets the user browse the catalog of travel packages, place a new purchase order, and track the status of existing orders. This module creates the purchase orders based on user input and passes them to OpcApp for processing. It uses an implementation of the Model View Controller pattern called the Web Application Framework (waf). The model is implemented using Entity beans, the controller is implemented using servlets, and the view is a collection of JSPs and static HTML pages. Part of the client-facing code is implemented using the GWT framework.

OpcApp

OpcApp stands for Order Processing Center Application. The business logic of the Adventure Builder is implemented in this module. It provides the following functionality:

  • Accepting purchase order requests from the ConsumerWebsite for processing by hosting the Purchase Order Web Service
  • Provide a mechanism for the Consumer Website to query the current status of a purchase order by hosting the Order Tracking Web Service
  • Communicate with external suppliers to process and maintain the status of a purchase order.
  • Upon completion of processing a purchase order, send an email to the customer of its success or failure.

A module decomposition refined view and a module uses refined view of OpcApp are available.

utils

This module contains utilities used by the Adventure Builder system.

dao

This module contains Data Access Object (DAO) utilities, such as a DAO factory. It does not contain the actual DAO classes that access the database--these classes are inside the ConsumerWebsite module.

logger

This module contains tracing and debugging utilities. The original name was tracer.

servicelocator

This module is an implementation of the ServiceLocator design pattern.

gwt

Google Web Toolkit (gwt) is an open source framework for development of rich internet applications based on Ajax.

waf

Waf stands for Web Application Framework. It is a Model View Controller framework similar to Struts. It allows you to specify in configuration files the web screens and action that are associated to user clicks on specific elements of the screen. The configuration file has the mapping of screens and actions to Java classes. The framework provides the engine to display the proper screens and invoke the proper actions.

Bank credit card service

This module represents an external service provided by a partner bank to validate credit card transactions.

Airline booking service

This module represents an external service provided by an airline partner company to book air travel.

Lodging booking service

This module represents an external service provided by a lodging partner company to book hotel rooms.

Activity booking service

This module represents an external service provided by an activity supplier company to book different activities.

Context Diagram

N/A

Variability Guide

See OPC Module Uses View - Variability Guide.
See Top Level SOA View - Variability Guide.
See Consumer Website Multi-tier View - Variability Guide.

Rationale

WAF

The WAF framework was chosen because it facilitates the implementation of the Consumer Website code by providing template classes for using the MVC pattern. For a given user operation, the developer implements an action class (controller) and JSP pages that correspond to the user screens (view). The developer also uses configuration files to provide a configurable mapping between actions, action classes, events and screens. The WAF infrastructure can then automatically take http requests and invoke the action classes and JSP screens. WAF also provides support for event-based communication and internationalization.

WAF also provides support for event-based communication and internationalization.

An alternative to WAF was to use the Spring framework. Spring was a more robust and rich solution from a technical standpoint, but it was rejected because the development team is not familiar with Spring and very familiar with WAF.

GWT

The GWT framework was chosen for the following reasons:

  • It is open source, which allows us to go under the hood and fix things when needed.
  • It provides a rich development environment with powerful trace/debug, IDE integration and build management.
  • It integrates well with any other frontend technologies since it does not use proprietary standards.
  • It offers powerful widget construction features.
  • There are several extension libraries of widget components available.
  • Code is written in Java (and translated to JavaScript during build), which is an OO language that is familiar to the majority of the team.
  • Code is compiled into Javascript, which is available on a very high percentage of browsers.
  • It has a reasonably large support community and is backed by a major player in the industry (Google).

The table below shows the comparative analysis of GWT and competing technologies based on the specific needs of our project.


Flex

GWT

OpenLaszlo

Silverlight

Development language

ActionScript + MXML (Based on ECMAScript 4)

Java + JavaScript

LZX / JavaScript

Any .net language + XAML

Development Environment

Eclipse Flex Builder

Eclipse

(?)

Visual Studio

Code-build-run turnaround*

Good (~3s for simple application)

Good (~4s for simple application)

Very slow (30s+ for recompiling a 'hello world' page)

(?)

Development efficiency

Good (declarative UI elements, data binding, visual designer)

Average (verbose procedural instantiation)

Good (declarative, data binding)

Good (same as Flex; Silverlight Blend compares to Flash MX)

Debugging tools

Eclipse debugger

Eclipse debugger

Integrated debugger (couldn't get it to work)

Visual Studio Debugger

Automated testing frameworks

Flex automation testing API

JUnit / Selenium

(?)

NUnit

Graphics / Animation

Powerful flash animation engine

Average, can be extended with scriptaculous, ext-js

Depends on rendering runtime (Flash/DHTML)

See Flex

Widget library

Very rich (due to maturity of technology)

Very rich (Javascript extension libraries)

Average (immature)

Same as flash (3rd party libraries)

Developer Community

Well established

Well established

(?)

Less than Flex but growing

Client execution performance*

Very good (native code)

Average (interpreted, except on Chrome)

Slightly slower than Flex (intermediate Laszlo layer)

Very good (native code)

Communication with server

AMF, REST, SOAP

GWT-RPC, REST, SOAP, JSON

(?)

(?)

Internationalization support

Average. Flex Runtime localization for latin charactersets. No native support for right to left languages.

GWT localization API provides out of the box solution.

Below average. Only accented European languages so far.

Poor, same as flex + lack of embeddable fonts.

Portability

Requires Flash player

Requires Javascript, no plugin needed on major browsers

Runtime agnostic, currently supports Flash and DHTML (future projects for Java ME, iPhone, Silverlight?)

Requires Silverlight plugin (not currently fully supported on Linux)

Mobile support

Large number of platforms (all Windows mobile, most Symbian, 50+ cell phones)

Very limited

Depends on runtime (Flex or GWT)

Supported for 1.0, Windows mobile and Nokia S60

*All performance tests were executed on the same hardware: Pentium M 1.7GHz, 2GB RAM, Win XP Pro SP2

Related Views

  • No labels