We provide a variety of services including:

·         Training classes for Spring, Hibernate and Acegi Security

·         Jumpstarts to get your project off to the right start

·         Reviews to improve your architecture, code and development process

For more information visit our website: http://www.chrisrichardson.net

 

Home > Knowledge > Project Track > Project Track Overview

 

Project Track Overview

Chris Richardson, chris@chrisrichardson.net

 

The goal of Project Track is to show how to build enterprise Java applications with JSF, Spring, Hibernate and Acegi Security. Project Track was originally written by Kito Mann (author of JavaServer Faces in Action). Chris Richardson (author of POJOs in Action), then developed the Spring, and Hibernate backend, integrated Acegi Security, and wrote some Selenium tests (among other things).

Overview of Project Track

The ProjectTrack application provides a high-level view of a project as it moves through its development lifecycle. The ProjectTrack application provides the following functionality:

·         Project managers can create projects

·         Employees (project managers, business analysts, development managers, QA managers etc) who are responsible for completing the project approve or reject a project as it goes through its lifecycle.

·         Each user has an inbox of projects that are waiting for their approval/rejection.

·         Upper managers can login and view all projects – they cannot update them.

·         Employees are also responsible for recording which of a project’s artifacts have been completed.

The following diagram shows the lifecycle of a project.

The forward arrow represents approvals and the reverse arrows represent rejections.

 

The state of the project determines who is authorized to approve or reject it:

Project’s phase

Who can approve

Proposal

Project manager

Planning

Project manager

Requirements analyst

Business analyst

Architecture

Development manager

Initial development

Development manager

Beta  deployment

Systems manager

Beta testing

QA manager

Final development

Development manager

UAT deployment

Systems manager

UA testing

QA manager

Production deployment

Systems manager

Complete

Project manager

Closed

No one – final state

 

 

 

The application tracks which of a project’s artifacts have been created. The artifacts are:

·         Project proposal

·         Project plan

·         Architecture specification

·         Test plan

·         Deployment guidelines

·         Maintenance documentation

·         User documentation.

Note: the application does not store these documents.

Architecture and design

The Project Track application uses the following frameworks:

·         JavaServer Faces – used to implements the web UI

·         Spring – provides transaction management, and dependency injection and simplifies the DAOs

·         Hibernate – used to access the database

·         Acegi Security – used to implement declarative web security

The following diagram shows the major architectural components.

Web tier

The web tier is implemented using JSF. The JSF managed beans

•        Handle UI requests

•        Invoke the business tier (Spring beans)

Spring beans are injected into JSF managed beans

Acegi Security provides web-based security.

TODO – write more

Service layer

The service layer is the entry point into the business tier. It uses Spring declarative security.

ProjectCoordinator manages projects and defines the following methods:

•        getProjectsWaitingForApproval()

•        get()

•        changeStatus()

UserCoordinator manages users and defines the following methods:

•        getUser()

TODO – write more

The domain model

The following diagram shows the domain model classes.

 

Data access classes

The data access classes are implemented using Hibernate and Spring Hibernate.

The ProjectRepository provides methods for finding and saving projects including:

•        add()

•        get()

•        getAllProjects()

The UserRepository provides methods for finding users including:

·         findUser()

·         …

TODO – write more

 

 Downloads