Skip to content

Latest commit

 

History

History
47 lines (29 loc) · 8.9 KB

README.md

File metadata and controls

47 lines (29 loc) · 8.9 KB

es-plantuml

Event storming PlantUML diagram template and VS Code snippets

Warning - Incomplete

I started working on this event-storming plant uml template inspired by C4-PlantUML but found it impractical to use due to layout limitations in PlantUML. Event storming relies a great deal on being able to position elements relative to other elements. PlantUML supports this in theory, but in practice I found the layout results to be unpredicable. See [Known Issues] for more details.

Sample Diagrams

Sample with Top Down Layout

Source: samples/EventModel.puml

Feature_Explorer_Event_Model

Sample with Left Right Layout

Source: samples/EventModelLeftRight.puml

Feature_Explorer_Event_Model

Known Issues

There are some significant issues with this template that have made me abandon it for now. I might pick it up again sometime in the future if I can figure out some reasonable ways to solve these.

Layout is difficult

Unfortunately, layout options in PlantUML produce rather inconsistent results - especially when dealing with groups of items. It seems to be impossible to consistently ensure that groups of items are positioned the way you want relative to other groups of items.

In an ideal world, the layout engine would:

  • default to displaying each card from left to right in the order that they are listed in the file
  • if two of the same type of card are listed in a row, they should automatically stack vertically
  • allow you to place cards in groups called bounded contexts
  • allow you to place cards in groups called aggregates - which can be placed inside of bounded contexts, but not inside of other aggregates
  • allow you to connect individual cards in bounded contexts to cards in other bounded contexts
  • allow you to connect individual cards in aggregates with cards in other aggregates
  • allow you to connect aggregates to each other
  • allow you to connect bounded contexts to each other
  • when items are connected, the groups (bounded contexts and/or aggregates) containing those items can move relative to other groups, but the items within the groups should not move

This might be possible by creating a new layout engine for graphviz and offering that layout option in plantuml... or maybe creating a new mermaid diagram type?... but that's a lot more work than I was planning...

No auto-wrap for box descriptions

PlantUML has an option called WrapWidth that I was hoping to use, but it doesn't apply to the description lines in the cards I've created. Under the hood, I'm using classes for cards. The wrapwidth option would work if I used rectangles instead, but then I'd lose some other important features that I get with classes but not with rectangles.