Visualization
Mechanoid emits Mermaid (and GraphViz) from the same Machine you run. This site feeds that
source into mermoid so the published picture fails CI
if the Mermaid cannot parse.
State diagram
MermaidVisualizer.stateDiagram(machine, Some(Created)) (also
machine.toMermaidStateDiagram(Some(Created))):
{
enum OrderState derives Finite:
case Created, Processing, Completed
enum OrderEvent derives Finite:
case Start, Finish
import OrderState.*, OrderEvent.*
val machine = Machine(
assembly[OrderState, OrderEvent](
Created via Start to Processing,
Processing via Finish to Completed,
)
)
Mermoid.diagram(
MermaidVisualizer.stateDiagram(machine, Some(Created)),
DocsDiagrams.diagramConfig,
)
}Flowchart
MermaidVisualizer.flowchart(machine) is often clearer for dense graphs (Domain pages use it):
{
enum OrderState derives Finite:
case Created, Processing, Completed
enum OrderEvent derives Finite:
case Start, Finish
import OrderState.*, OrderEvent.*
val machine = Machine(
assembly[OrderState, OrderEvent](
Created via Start to Processing,
Processing via Finish to Completed,
)
)
Mermoid.diagram(
MermaidVisualizer.flowchart(machine),
DocsDiagrams.diagramConfig,
)
}Traces and GraphViz
Also available:
toMermaidFlowchartWithTrace(trace)/trace.toMermaidSequenceDiagramtoGraphViz(...)/toGraphVizWithTrace(...)/trace.toGraphVizTimeline
Mark sensitive fields with @sensitive when exporting. Feed Mermaid strings into
Mermoid.diagram(...) or a fenced mermaid block.
Next: Reference.