digraph G { initial[label="", shape="circle", xlabel="pay merchant"]; pending_dp[label="claim-proposal"]; pending_sp[label="submit-payment"]; pending_ar[label="auto-refund"]; pending_re[label="rebind-session"]; pending_cr[label="check-refunds"]; pending_create_accepted_refunds[label="create-accepted-refunds"]; aborting_pi[label="payment-incomplete", style=dashed]; aborted[label="aborted", shape="box", style=dashed]; monolog_proposal[label="monolog(proposal)", shape="box"]; monolog_refund[label="monolog(refund)", shape="box"]; done[label="done", shape="box"]; subgraph { rank=same; done; aborted; pending_re; } subgraph { pending_ar; pending_sp; } initial -> pending_dp; pending_dp -> monolog_proposal [color=green]; monolog_proposal -> pending_sp [color=blue]; pending_sp -> pending_ar [color=green]; pending_sp -> aborting_pi [color=blue,style=dashed]; aborting_pi->done [color=red]; aborting_pi->aborted [color=green]; pending_ar -> done [color=green, label="time over"]; pending_ar -> pending_create_accepted_refunds; done -> pending_cr; done -> pending_re; pending_cr -> done [color=green]; pending_cr -> monolog_refund; monolog_refund -> pending_create_accepted_refunds; pending_create_accepted_refunds -> done [color=green]; pending_re -> done [color=green]; }