The macro-architecture for the application is modular in four main parts:
- Core/DCI : Main part of the application, containing the real application with domain components, roles and contexts defining all the functionality.
- Services : All non-application-specific services, such as infrastructure services and middleware interactors.
- Adapters : External adapters that let the application talk to different protocols using all possible HTTP communications, SOAP, HTML, REST, etc.
- Server runtime : An application container such as Tomcat, JBoss or Jetty providing all the required resource-handling and load-balancing required for web applications.
At the lowest level we have the macro-components described in a more detailed way, the part that is critical for the application are:
- Data: Domain specific data components that break down business specific concepts into domain data components, normally these are objects with clear and defined operations being populated with very characterized verbs and nouns.
- Roles: Behavioral components defining the actions of specific actors, separated by their actions-context in a separated way.
- Contexts: Scenarios in which the data, prepared by data acting with one or more roles in order to achieve a clear goal, and by goal we mean specific business functionality.
Inside the physical infrastructure of the project we have the following folder structure:
See Example application.