digraph G { initial_manual[label="", xlabel="manual" shape="circle"]; initial_bank[label="", xlabel="bank-integrated" shape="circle"]; pending_brr[label="bank-register-reserve"]; pending_bc[label="bank-confirm"]; pending_ewr[label="exchange-wait-reserve"]; pending_wc[label="withdraw-coins"]; pending_kyc[label="kyc"]; pending_aml[label="aml"]; done[label="done", shape="box"]; aborting_bank[label="bank", style="dashed"]; aborted_bank[label="aborted", shape="box", style="dashed"]; suspended_ewr[label="suspended(exchange-wait-reserve)", shape="box"]; subgraph { rank = same; initial_bank; initial_manual; } subgraph { rank = same; pending_aml; pending_kyc; pending_ewr; } subgraph { rank = same; done; aborted_bank; } initial_bank->pending_brr; initial_manual->pending_ewr; pending_brr->pending_bc [color="green"]; pending_brr->aborting_bank [style="dashed", color="blue", label="abort"]; pending_bc->pending_ewr[color="green"]; pending_bc->aborting_bank [color="blue", label="abort", style="dashed"]; pending_ewr->pending_wc[color="green"]; pending_wc->pending_kyc[color="red"]; pending_wc->pending_aml[color="red"]; pending_kyc->pending_wc[color="green"]; pending_aml->pending_wc[color="green"]; aborting_bank->suspended_ewr [color="red"]; aborting_bank->aborted_bank; pending_ewr->suspended_ewr [color="blue", label="suspend"]; suspended_ewr->pending_ewr [color="blue", label="resume"]; pending_wc->done; }