Project Structure
From OpenQuote
OpenQuote's source is structured into 6 projects. Here's the top-down view:
- community
- This is really a packaging project. It builds on the openquote platform creates a releasable binary distribution.
- openquote
- Extends the insurance platform and adds all user interface widgets, portlets, screen flows and demonstration products which make up what would generally be recognised as OpenQuote.
- insurance
- Takes the commercial platform and adds to it concepts and services related to insurance. Currently, these largely focus on quotation, but other areas are partially defined and will be built out as required. In here you will find model classes for concepts like Policy, Section, Claim, Asset and services like AssessRisk, CalculatePremium, QuotationDocumentBuilder, etc.
- commercial
- Enhances the core platform adding common commercial concepts like account and party. In here you'll find CurrencyAmount, PaymentSchedule, Person, Organisation etc. defined.
- core
- Defines the core platform. This platform incorporates all the major 3rd party elements (e.g. JBoss AS, JBoss Portal, Drools, Alfresco). It also delivers functionality which is common to most enterprise applications, including: logging, persistence, validation, service definition and discovery framework, factory and dependency injection framework. This platform is entirely "technical" - it does not define any concepts specific to a particular vertical market, and is designed to be reusable across verticals.
- development
- Describes artefacts which aren't in themselves "deliverable". Common ant build files are held here, as are a number of XML Schema documents.
The term "platform" is carefully chosen here. Typically, other projects are structured around fine grain "technical" deliverables - in JEE terms these would be jars, wars, ejbs, etc. Projects further down the food chain consume these deliverables and build an application from them. OpenQuote's approach is quite different - each project delivers a completely functional instance of an application server. Subsequent projects take that instance and specialise it to meet their needs.

