digraph G { initial[label="", shape="circle"]; pending_in[label="pending(lookup-refund)"]; pending_ar[label="pending(user-accept)", shape="box"]; pending_me[label="pending(merchant)"]; pending_re[label="pending(refresh)"]; suspended_in[label="suspended(lookup-refund)", shape="box"]; suspended_me[label="suspended(merchant)", shape="box"]; suspended_re[label="suspended(refresh)", shape="box"]; done[label="done", shape="box"]; deleted[label="deleted", shape="box"]; failed[label="failed", shape="box"]; subgraph { rank = same; pending_in; pending_ar; pending_me; pending_re; } subgraph { rank = same; suspended_in; suspended_me; suspended_re; done; } initial->pending_in [color="blue", label="URI trigger"]; pending_in->pending_ar; pending_in->suspended_in [color="blue", label="suspend"]; pending_in->deleted [color="red", label="failure"]; suspended_in->pending_in [color="blue", label="resume"]; suspended_in->deleted [color="blue", label="force-delete"]; pending_ar->pending_me [color="blue", label="accept"]; pending_ar->deleted [color="blue", label="force-delete"]; pending_me->pending_re; pending_me->suspended_me [color="blue", label="suspend"]; pending_me->failed [color="red", label="failure"]; suspended_me->pending_me [color="blue", label="resume"]; suspended_me->deleted [color="blue", label="force-delete"]; pending_re->suspended_re [color="blue", label="suspend"]; pending_re->done; pending_re->failed [color="red", label="failure"]; suspended_re->pending_re [color="blue", label="resume"]; suspended_re->deleted [color="blue", label="force-delete"]; done->deleted [color="blue", label="delete"]; failed->deleted [color="blue", label="delete"]; }