uPortal Architecture Overview
This page exists to capture an overview of the uPortal framework architecture, child pages should be added for detailed descriptions of various parts of the framework.
High Level Architecture
Diagram Terminology
- Tiers & Coloring
- The blue tiers (1-3) are APIs where the HttpServletRequest is a primary argument.
- The green tier (4) are APIs where there is NO reference to high level objects like HttpServletRequest
- DAOs
- CRUD style data access objects, generally implemented in JPA2.
- DAOs contain no business logic or dependencies on higher level structures like the request or response objects
- Their only role is to provide coherent lifecycle management of persistent data objects for uPortal.
- Registries
- The business logic for the DAOs, in general each DAO or group of related DAOs has a registry layer above it.
- Contain commonly used helper methods to reduce duplicate code in other parts of the framework that perform similar operations. For example the PortletEntityRegistry might have a method that looks like:
getOrCreatePortletEntityForLayoutNode(IPerson user, String layoutNode)
The implementation would talk to the layout manager, portlet definition registry and portlet entity DAO to come up with the right answer.
- Services
- Internal services such as Groups, Permissions, Person Directory. These have some interaction with registries for portal specific or locally managed data but also integrate with external systems.
- Rendering Pipeline
- Pulls together user layouts, xslt transformations and portlet data into a coherent package.
- Interacts with Registries and Services for data, and Portlet Execution Management for portlet content.
- Portlet Execution Management
- Manages direct and async portlet execution
- Interacts with Registries and Pluto SPI to effect execution
- Pluto SPI Implementation
- Implments the Pluto Service API providing hooks from the Portlet APIs back into uPortal services
- WebMVC Controllers
- The front end that user's interact with, contains controller logic that talks to Services, Registries and other 2nd tier components to source data
- Data Import & Export
- Utilities for data migration services.
- These utilities interact directly with the DAO layer, bypassing all of the services, registries, etc.