v6.8.0 Release Notes

May 8, 2023 • Stefan Kapferer

Today we released version 6.8.0 of Context Mapper 🥳 With this release we implemented the following features and bugfixes:

  • Target states in aggregate state transitions are used in PlantUML generator (GitHub Issue).
  • Tactic DDD DSL bugfix: lists of enums are now possible (GitHub issue)
  • Tactic DDD DSL enhancement: domain services can be specified alongside aggregates, instead of inside aggregates (GitHub Issue).
  • PlantUML Use Case diagram generation (GitHub Issue).

Target States in PlantUML State Diagram Generator

As we have already documented here, you can use an asterisk (*) to mark target states in aggregate state transitions:

// target states can be marked as end states with a star:
CHECK_IN_PROGRESS -> ACCEPTED* X REJECTED*

If you use these asterisks, they are now used in the PlantUML generator to visualize the end states correspondingly. An example:

PlantUML State Diagram

Tactic DDD: Lists of Enums

Sometimes it can be useful to have collections of enum values. This was not supported by the original Sculptor DSL as we integrated it. We adjusted the DSL now so that collections of enums are supported. The following example illustrates a use case:

List of Enums

Tactic DDD: Domain Services outside Aggregates

The tactic DDD DSL so far expected domain services to be specified within aggregates. This does not match with our understanding of the tactic DDD patterns. A domain service does not have to belong to a specific aggregate and should therefore not be specified on that level.

With this newest release, you can specify the services on the same level as aggregates:

Domain Services on Aggregate Level

Note: The MDSL generator currently only uses operations of services inside aggregates that are exposed in your Context Map. So these services specified besides aggregates are currently ignored there.

PlantUML Use Case Diagram Generation

It was possible to write use cases and user stories in CML already before this release. The documentation on how to write such user requirements can be found here.

Just one example:

UseCase Get_paid_for_car_accident { // title
  actor "Claimant" // primary actor
  scope "Insurance company" // scope
  level "Summary" // level
  benefit "A claimant submits a claim and and gets paid from the insurance company." // story (brief summary)
}

With this release we added the secondaryActors keyword in case you want to specify that your use case also involves secondary actors:

UseCase UC1_Example {
  actor = "Insurance Employee"
  secondaryActors = "Insurance Administrator", "Sales Person"
  interactions = create a "Customer", update a "Customer", "offer" a "Contract"
  benefit = "I am able to manage the customers data and offer them insurance contracts."
}

If your CML model contains use cases and/or user stories, we now generate a Use Case diagram as part of the output of the PlantUML generator. An example:

PlantUML Use Case Diagram

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