v6.1.0 Release Notes

Oct 8, 2020 • Stefan Kapferer

Today we released Context Mapper 6.1.0 🥳

With this release we improved the graphical Context Map generator to produce team maps that illustrate the relations between development teams and system, application, or feature Bounded Contexts. In addition, we improved the generated PlantUML class diagrams and added a quick fix for missing Bounded Contexts on Context Maps.

Summary of Changes

  • Team Maps
    • The graphical Context Map generator can now visualize the relations between development teams and system, application, or feature Bounded Contexts.
  • PlantUML Generator
    • The PlantUML class diagrams generator respects inheritance between Entities, Value Objects, and Domain Events.
    • In addition, the generator makes use of the relation type aggregation in case a CML object contains a list or set of referenced objects of another type.
  • Missing Bounded Context Quick Fix
    • When creating Context Maps it is sometimes tedious to create all the Bounded Contexts first. With our new quick fix you can simply write the name of your context in the Context Map and then create it with one click.

As always, if you have any issues or other feedback, please let us know.

Team Maps

We enhanced the graphical Context Map generator so that users can illustrate the relations between development teams and the systems or components they work on. You can find an exemplary CML file modeling such a team map here.

The generator visualizes such a team map as follows:

Team Map Example (Unclustered)

The generator UI in Eclipse and the extension settings in VS Code further allow you to influence the layout so that teams and system contexts are clustered:

Team Map Example (Clustered)

PlantUML Generator

The class diagram generator respects undefined base types now (inheritance). The generator already respected inheritance when it was given as a reference:

Entity BaseEntity {
  long id
}

Entity Customer extends @BaseEntity { 
  aggregateRoot
	
  String firstname
  String lastname
}

However, now it also respects a base type that is only given as a name (no reference) as follows:

Entity Customer extends BaseEntity { 
  aggregateRoot
	
  String firstname
  String lastname
}

The generator always illustrates the base type now:

Base Type (PlantUML) Example

In addition to this fix, we also make use of the relation type aggregation. In case you have a reference list, shown in the CML example here:

Entity Customer { 
  aggregateRoot
	
  String firstname
  String lastname
  - List<Address> addresses
}

Entity Address {
  String street
  String city
}

… we generate an aggregation now:

Aggregation Example

Hint: In some indiviual cases this might not be correct and you may prefer the simple arrow we generated earlier. In this case, you can just replace the o-- with a --> in the generated *.puml file.

Missing Bounded Context Quick Fix

Up to now Context Mapper users always had to create Bounded Contexts before they could reference them in a CML Context Map. With our new quick fix, you can start with the Context Map and create the corresponding Bounded Contexts with a single click. Here a simple example… You started with a Context Map and want to create a new relationship, but one of the contexts does not exist:

Missing Bounded Context on a Context Map

From now on, you can just use the quick fix Context Mapper suggests:

Create Missing Bounded Context Quick Fix

… and Context Mapper creates the Bounded Context for you:

Created Bounded Context

Thats it for this new release of Context Mapper. As always, if you have any issues or other feedback, please let us know.