Top Menu

Jump to content
Home
    Modules
      • Projects
      • Activity
      • Work packages
      • Gantt charts
      • News
    • Getting started
    • Introduction video
      Welcome to Wiki
      Get a quick overview of project management and team collaboration with OpenProject. You can restart this video from the help menu.

    • Help and support
    • Upgrade to Enterprise edition
    • User guides
    • Videos
    • Shortcuts
    • Community forum
    • Enterprise support

    • Additional resources
    • Data privacy and security policy
    • Digital accessibility (DE)
    • OpenProject website
    • Security alerts / Newsletter
    • OpenProject blog
    • Release notes
    • Report a bug
    • Development roadmap
    • Add and edit translations
    • API documentation
  • Sign in
      Forgot your password?

Side Menu

  • Overview
  • Repository
  • Wiki
    Wiki

Content

You are here:
  1. Wiki
  2. Software Architecture Document
  3. 05 - Building Block View

05 - Building Block View

  • More
    • Print
    • Table of contents

5.1. Whitebox: Common Service

The white box view gives a rough overview on how the Common Service is built internally. The service basically consists of two major functional components, one to manage Locations and LocationGroups and another one to manage TransportUnits.

Contained Building Blocks

Component Responsibility
app A package that contains lifecycle components of the Common Service, without any business value
Index Controller This service provides an HATEOAS REST API with index resources to navigate across the primary resources
Location Management Functional building block to manage Locations and LocationGroups
Transport Management Functional building block to manage TransportUnits and TransportUnitTypes
Location Tables A set of database tables belong and accessed by the Location Management
Transport Tables A set of database tables belong and accessed by the Transport Management

Important Interfaces

Interface Description
REST API The public REST API is comprised of the Location Management API, the Transport Management API and an Index that lists and delegated to those two
Async Command API The asynchronous Command API is exposed to trigger actions on the Location- and Transport Management resources

5.1.1. Component: Location Management

As mentioned the Location Management cares about the resources Location, LocationGroup and Target. The software design of all three primary resources is almost the same, hence the management of Location resources is shown here by example for the others.

All types are located in the Java package .location with several sub-packages.

Component Type Responsibility
api Package Contains all types that are exposed and also exported to service clients
impl Package Contains all types that are private and implement the solution
spi Package Contains interfaces and classes that can be used to extend the service implementation
LocationApi Class An exposed class that defines the Location API and that can be used directly ba Java clients
LocationController Class Is a Spring RestController implementation of the LocationApi and resides in the main package
LocationService Interface Used by the LocationController within the same package to avoid package dependencies (An interface is always public)
LocationServiceImpl Class Spring managed transactional service that is the implementation of the business logic and the transaction boundary. In a internal package and kept package-private
LocationRepository Interface/Class Either a Spring Data JPA implementation or some other technology that acts as a DAO and accesses the persistency layer in order to save and fetch Locations
COM_LOCATION Database Table The database table accessed by the repository, either mapped or directly accessed
Extension Point <abstract> This could be some interface that is used by the business logic to break out the standard processes and allow some kind of extensions

5.1.2. Component: Transport Management

tbd

5.1.3. Component: Account Management

tbd

Loading...