The aim of Akwatype is to help structure the data modeling process, right from the start of the project, by making it easier for project team members to build, understand and share data models.

Used by Akwatype's flow modeling, these Data models enable to implement a Data Flow First approach, where data flows and exchanged data can be modeled well before the development phase.

In the end, Akwatype generates elements that can be used directly by development teams to speed up the start-up of projects and make them more reliable.

 

To enable this approach Akwatype relies on three pillars 

 

 

 

Types and Facades :

  • The types make it possible to describe the Business Data Model in all its richness, with its entities and fields with the associated metadata and the links between the entities.
  • The facades allow the model to be adapted to its context of use (API, Messages or other use).
    Each facade corresponds to a "view" on a type
  • Data modelling can be used as a stand-alone tool or as part of a flow description.

 

Services  :

The services

Akwatype services are components that expose and consume APIs and receive and send messages. The data exchanges modeled in Akwatype are structured around these services.

 

 

The association of the facades with APIs and Messages

Once defined, the facades will be able to be associated with routes and messages to describe the transported data. This approach keeps a simple description of the model at the level of each Route or message while keeping a strong link with the type model to ensure the overall consistency of the descriptions.

 

The two families of data exchange

Akwatype allows to describe two main data exchange families (API & Asynchronous Messages) in a consistent way in the same repository

 

 

The big picture

 

 

Akwatype's data modeling feeds the flow and service descriptions used to generate OpenAPI/AsyncAPI descriptions.

But this data modeling can also be used to generate reports/exports that can be customized or created from scratch (HTML, java, SQL, plantUML ...)