-
-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Release notes and doc updates for v6.1.0 (#48)
- Loading branch information
Showing
11 changed files
with
257 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
ContextMap InsuranceTeamMap { | ||
type = ORGANIZATIONAL | ||
state = TO_BE | ||
|
||
/* Add contexts that represent subsystems/components to this organizational map: */ | ||
contains CustomerManagementContext, CustomerSelfServiceContext, PolicyManagementContext, RiskManagementContext | ||
|
||
/* Add teams to this organizational map: */ | ||
contains CustomersBackofficeTeam, CustomersFrontofficeTeam, ContractsTeam | ||
|
||
/* Define the subsystem/component relationships: */ | ||
|
||
CustomerSelfServiceContext [D,C]<-[U,S] CustomerManagementContext | ||
|
||
PolicyManagementContext [D,CF]<-[U,OHS,PL] CustomerManagementContext | ||
|
||
PolicyManagementContext [P]<->[P] RiskManagementContext | ||
|
||
/* Define the team relationships: */ | ||
|
||
CustomersBackofficeTeam [U,S]->[D,C] CustomersFrontofficeTeam | ||
|
||
CustomersBackofficeTeam [U]->[D] ContractsTeam | ||
|
||
} | ||
|
||
/* Team Definitions */ | ||
BoundedContext CustomersBackofficeTeam realizes CustomerManagementContext { | ||
type = TEAM | ||
domainVisionStatement = "This team is responsible for implementing the customers module in the back-office system." | ||
} | ||
|
||
BoundedContext CustomersFrontofficeTeam realizes CustomerSelfServiceContext { | ||
type = TEAM | ||
domainVisionStatement = "This team is responsible for implementing the front-office application for the insurance customers." | ||
} | ||
|
||
BoundedContext ContractsTeam realizes PolicyManagementContext, RiskManagementContext { | ||
type = TEAM | ||
domainVisionStatement = "This team is responsible for implementing the contract-, policy-, and risk-management modules in the back-office system." | ||
} | ||
|
||
/* Subsystem/component definitions */ | ||
BoundedContext CustomerManagementContext | ||
BoundedContext CustomerSelfServiceContext | ||
BoundedContext PolicyManagementContext | ||
BoundedContext RiskManagementContext |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
<div class="highlight"><pre><span></span><span class="k">ContextMap</span> InsuranceTeamMap { | ||
<span class="k">type</span> = <span class="k">ORGANIZATIONAL</span> | ||
<span class="k">state</span> = <span class="k">TO_BE</span> | ||
|
||
<span class="c">/* Add contexts that represent subsystems/components to this organizational map: */</span> | ||
<span class="k">contains</span> CustomerManagementContext, CustomerSelfServiceContext, PolicyManagementContext, RiskManagementContext | ||
|
||
<span class="c">/* Add teams to this organizational map: */</span> | ||
<span class="k">contains</span> CustomersBackofficeTeam, CustomersFrontofficeTeam, ContractsTeam | ||
|
||
<span class="c">/* Define the subsystem/component relationships: */</span> | ||
|
||
CustomerSelfServiceContext [<span class="k">D</span>,<span class="k">C</span>]<-[<span class="k">U</span>,<span class="k">S</span>] CustomerManagementContext | ||
|
||
PolicyManagementContext [<span class="k">D</span>,<span class="k">CF</span>]<-[<span class="k">U</span>,<span class="k">OHS</span>,<span class="k">PL</span>] CustomerManagementContext | ||
|
||
PolicyManagementContext [<span class="k">P</span>]<->[<span class="k">P</span>] RiskManagementContext | ||
|
||
<span class="c">/* Define the team relationships: */</span> | ||
|
||
CustomersBackofficeTeam [<span class="k">U</span>,<span class="k">S</span>]->[<span class="k">D</span>,<span class="k">C</span>] CustomersFrontofficeTeam | ||
|
||
CustomersBackofficeTeam [<span class="k">U</span>]->[<span class="k">D</span>] ContractsTeam | ||
|
||
} | ||
|
||
<span class="c">/* Team Definitions */</span> | ||
<span class="k">BoundedContext</span> CustomersBackofficeTeam <span class="k">realizes</span> CustomerManagementContext { | ||
<span class="k">type</span> = <span class="k">TEAM</span> | ||
<span class="k">domainVisionStatement</span> = <span class="s">"This team is responsible for implementing the customers module in the back-office system."</span> | ||
} | ||
|
||
<span class="k">BoundedContext</span> CustomersFrontofficeTeam <span class="k">realizes</span> CustomerSelfServiceContext { | ||
<span class="k">type</span> = <span class="k">TEAM</span> | ||
<span class="k">domainVisionStatement</span> = <span class="s">"This team is responsible for implementing the front-office application for the insurance customers."</span> | ||
} | ||
|
||
<span class="k">BoundedContext</span> ContractsTeam <span class="k">realizes</span> PolicyManagementContext, RiskManagementContext { | ||
<span class="k">type</span> = <span class="k">TEAM</span> | ||
<span class="k">domainVisionStatement</span> = <span class="s">"This team is responsible for implementing the contract-, policy-, and risk-management modules in the back-office system."</span> | ||
} | ||
|
||
<span class="c">/* Subsystem/component definitions */</span> | ||
<span class="k">BoundedContext</span> CustomerManagementContext | ||
<span class="k">BoundedContext</span> CustomerSelfServiceContext | ||
<span class="k">BoundedContext</span> PolicyManagementContext | ||
<span class="k">BoundedContext</span> RiskManagementContext | ||
</pre></div> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
--- | ||
layout: news | ||
title: "v6.1.0 Release Notes" | ||
author: Stefan Kapferer | ||
image: /img/TeamMap-Illustration-1.png | ||
--- | ||
|
||
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](#team-maps) | ||
* The graphical Context Map generator can now visualize the relations between development teams and system, application, or feature Bounded Contexts. | ||
* [PlantUML Generator](#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](#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](/getting-involved/). | ||
|
||
## Team Maps | ||
We enhanced the [graphical Context Map generator](/docs/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](https://github.com/ContextMapper/context-mapper-examples/blob/master/src/main/cml/insurance-example/Insurance-Example_Team-Map.cml). | ||
|
||
The generator visualizes such a team map as follows: | ||
|
||
<a href="/img/TeamMap-Illustration-1.png">![Team Map Example (Unclustered)](/img/TeamMap-Illustration-1.png)</a> | ||
|
||
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: | ||
|
||
<a href="/img/TeamMap-Illustration-2.png">![Team Map Example (Clustered)](/img/TeamMap-Illustration-2.png)</a> | ||
|
||
## 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](/img/base-type-example-inheritance.png) | ||
|
||
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](/img/aggregation-example-plantuml.png) | ||
|
||
**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: | ||
|
||
<a href="/img/missing-context-quickfix-screenshot-1.png" target="_blank">![Missing Bounded Context on a Context Map](/img/missing-context-quickfix-screenshot-1.png)</a> | ||
|
||
From now on, you can just use the quick fix Context Mapper suggests: | ||
|
||
<a href="/img/missing-context-quickfix-screenshot-2.png" target="_blank">![Create Missing Bounded Context Quick Fix](/img/missing-context-quickfix-screenshot-2.png)</a> | ||
|
||
... and Context Mapper creates the Bounded Context for you: | ||
|
||
<a href="/img/missing-context-quickfix-screenshot-3.png" target="_blank">![Created Bounded Context](/img/missing-context-quickfix-screenshot-3.png)</a> | ||
|
||
Thats it for this new release of Context Mapper. As always, if you have any issues or other feedback, please [let us know](/getting-involved/). |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.