digraph G { initial[label="", shape="circle"]; pending_create[label="purse-create"]; pending_qr[label="ready"]; aborting_delete[label="delete-purse", style=dashed]; pending_withdraw[label="withdraw"]; pending_kyc[label="kyc"]; pending_aml[label="aml"]; aborted[label="aborted", shape="box", style=dashed]; done[label="done", shape="box"]; // subgraph { // rank = same; pending_withdraw; failed; // } subgraph { rank=max; aborted; done; } subgraph { rank=same; pending_create; pending_qr; } initial->pending_create; pending_create->pending_qr; pending_qr->aborting_delete [color="blue", style=dashed]; pending_qr->pending_withdraw [color=green]; aborting_delete->pending_withdraw [color="red"]; aborting_delete->aborted [color=green]; pending_withdraw->done [color=green]; pending_withdraw->pending_kyc [color=red]; pending_withdraw->pending_aml [color=red]; pending_kyc->pending_withdraw [color="green"]; pending_aml->pending_withdraw [color="green"]; }