digraph statemachine { rankdir=LR; node [shape=rounded, style=filled, fillcolor=white, fontname="Arial"]; edge [fontname="Arial", fontsize=10]; SUBMITTED_choice [shape=diamond, label="", fillcolor="blue", width=0.2, height=0.2]; SUBMITTED -> SUBMITTED_choice [style=dotted, color="blue"]; PAID_choice [shape=diamond, label="", fillcolor="green", width=0.2, height=0.2]; PAID -> PAID_choice [style=dotted, color="green"]; _start [shape=circle, label="", fillcolor=black, width=0.1]; _start -> SUBMITTED; CANCELED [fillcolor=lightgray]; FULFILLED [fillcolor=lightgray]; SUBMITTED -> PAID [label="OrderEvents.PAY", style="solid", color="black"]; PAID -> FULFILLED [label="OrderEvents.FULFILL", style="solid", color="black"]; SUBMITTED -> CANCELED [label="OrderEvents.CANCEL [λ]", style="solid", color="black"]; PAID -> CANCELED [label="OrderEvents.CANCEL", style="solid", color="black"]; SUBMITTED -> SUBMITTED [label="OrderEvents.ABCD", style="solid", color="black"]; SUBMITTED_choice -> PAID2 [label="[λ] (order=0)", style="solid", color="blue"]; SUBMITTED_choice -> PAID3 [label="(order=1)", style="solid", color="blue"]; PAID_choice -> PAID1 [label="[λ] (order=0)", style="solid", color="green"]; PAID_choice -> PAID2 [label="[guard1] (order=1)", style="solid", color="green"]; PAID_choice -> HAPPEN [label="[λ] (order=2)", style="solid", color="green"]; PAID_choice -> PAID3 [label="(order=3)", style="solid", color="green"]; PAID2 -> CANCELED [style="solid", color="black"]; PAID3 -> CANCELED [style="solid", color="black"]; PAID1 -> PAID1 [label="OrderEvents.ABCD / λ, action2", style="solid", color="black"]; }