DDD-Flow Graph

Here we demonstrate a graph that resembles a Petri-Net but represents Elements of Domain Driven Design as they apply to Eventstorming

A Petri-Net inspired Graph Format

digraph G { subgraph cluster0{ label="DDD-flow"; subgraph ExternalSystem { node [shape=circle,style=filled,fillcolor=darkorchid1,fixwidth=true,width=1]; "External"; } subgraph Aggregate { node [shape=circle,style=filled,fillcolor=gray,fixwidth=true,width=1]; "Aggregate"; } subgraph Actor { node [shape=doublecircle,style=filled,fillcolor=yellow,width=1]; "Actor"; } subgraph TimerTrigger { node [shape=hexagon,style=filled,fillcolor=red,height=0.8]; "Timer / Trigger"; } subgraph Command { node [shape=rect,style=filled,fillcolor=orange,height=0.2]; "Command"; } subgraph DomainEvent { node [shape=rect,style=filled,fillcolor=green,height=0.2]; "DomainEvent"; } subgraph cluster2 { label="A Game of Tic-Tac-Toe"; subgraph ExternalSystem { node [shape=circle,style=filled,fillcolor=darkorchid1,fixwidth=true,width=1]; "GameMaker"; } subgraph Aggregate { node [shape=circle,style=filled,fillcolor=gray,fixwidth=true,width=1]; "Move History"; "Turn"; } subgraph Actor { node [shape=doublecircle,style=filled,fillcolor=yellow,width=1]; "PlayerX"; "PlayerO"; "Judge"; } subgraph Trigger { node [shape=hexagon,style=filled,fillcolor=red,height=0.8]; "WinnerFound"; "IsTurn"; } subgraph Command { node [shape=rect,style=filled,fillcolor=orange,height=0.2]; "new"; "next_turn"; "winner_x"; "winner_o"; } subgraph DomainEvent { node [shape=rect,style=filled,fillcolor=green,height=0.2]; "X"; "O"; } "GameMaker" -> "new" "Judge" -> "new" "new" -> "Move History" "Judge" -> "winner_x" "Judge" -> "winner_o" "Move History" -> "winner_x" "Move History" -> "winner_o" "PlayerX" -> "X" "PlayerO" -> "O" "X" -> "Move History" "O" -> "Move History" "Move History" -> "next_turn" "next_turn" -> "Turn" "WinnerFound" -> "winner_x" "WinnerFound" -> "winner_o" "IsTurn" -> "X" "IsTurn" -> "O" "Turn" -> "X" "Turn" -> "O" "Judge" -> "next_turn" } } "External" -> "Command" "Command" -> "Aggregate" "DomainEvent" -> "Aggregate" "Aggregate" -> "DomainEvent" "Aggregate" -> "Command" "Actor" -> "Command" "Actor" -> "DomainEvent" "Timer / Trigger" -> "Command" "Timer / Trigger" -> "DomainEvent" }