Generators Overview

The Context Mapper generators provide transformations to derive graphical Context Maps, PlantUML diagrams, MDSL (micro-)service contracts, and ServiceCutter input files from your CML context map.

Graphical Context Maps

The Context Map generator allows you to transform the CML Context Map into graphical representation inspired by the illustrations of Vernon and Brandolini. Here you can find out how to generate them.

An example Context Map produced with our generator: Insurance Company Example Context Map

PlantUML Diagrams

You can generate plantUML component diagrams out of CML context maps. Additionally, the transformation generates class diagrams for all bounded contexts. If the implemented subdomains contain entities, the generator produces class diagrams for these subdomains as well. Here you can find out how to generate them.

Example component diagram (DDD sample): DDD Sample Component Diagram

Example class diagram (Cargo booking context): Cargo Booking Context

MDSL (Micro-)Service Contracts

With our MDSL generator you can generate (micro-)service contracts out of your Context Maps. The resulting contracts illustrate how you can derive (micro-)services from strategic DDD context maps and aim for providing assistance regarding how your system can be implemented in an (micro-)service-oriented architecture.

This is an example MDSL service contract for our insurance example:

// Generated from DDD Context Map 'Insurance-Example_Context-Map.cml' at 21.10.2019 17:48:52 CEST.
API description CustomerManagementContextAPI
usage context PUBLIC_API for BACKEND_INTEGRATION

data type Address { "street":V<string>, "postalCode":V<int>, "city":V<string> }
data type AddressId P
data type changeCustomerParameter { "firstname":V<string>, "lastname":V<string> }

endpoint type CustomersAggregate
  serves as INFORMATION_HOLDER_RESOURCE
  exposes
    operation createAddress
      with responsibility "Creates new address for customer"
      expecting
        payload Address
      delivering
        payload AddressId
    operation changeCustomer
      with responsibility "Changes existing customer address"
      expecting
        payload changeCustomerParameter
      delivering
        payload V<bool>

// Generated from DDD upstream Bounded Context 'CustomerManagementContext' implementing OPEN_HOST_SERVICE (OHS) and PUBLISHED_LANGUAGE (PL).
API provider CustomerManagementContextProvider
  // The customer management context is responsible for managing all the data of the insurance companies customers.
  offers CustomersAggregate
  at endpoint location "http://localhost:8001"
    via protocol "RESTfulHTTP"

// Generated from DDD upstream Bounded Context 'CustomerManagementContext' implementing OPEN_HOST_SERVICE (OHS) and PUBLISHED_LANGUAGE (PL).
API client PolicyManagementContextClient
  // This bounded context manages the contracts and policies of the customers.
  consumes CustomersAggregate
API client CustomerSelfServiceContextClient
  // This context represents a web application which allows the customer to login and change basic data records like the address.
  consumes CustomersAggregate

IPA

Learn more about the MDSL generator here.

Service Cutter Input Files

Find out how to produce Service Cutter input to calculate possible service cuts or new bounded contexts here:

Service Cutter DDD Sample