employee { # Employee n1: circle label:"Start Expense Allocation" n4: rectangle label:"Make Expense Allocation decision" n7: rectangle label:"Continue Expense Allocation process" n10: circle label:"End Expense Allocation" n1.handle(bottom) -> manager.n2.handle(top) [label="Success"] n4.handle(bottom) -> manager.n5.handle(top) [label="Valid"] n7.handle(bottom) -> manager.n8.handle(top) [label="Next"] } manager { # Manager n2: rectangle label:"Receive Expense Allocation request" n5: rectangle label:"Update records for Expense Allocation" n8: rectangle label:"Continue Expense Allocation process" n2.handle(bottom) -> finance_app.n3.handle(top) n5.handle(bottom) -> finance_app.n6.handle(top) n8.handle(bottom) -> finance_app.n9.handle(top) } finance_app { # Finance_App n3: rectangle label:"Review Expense Allocation details" n6: rectangle label:"Continue Expense Allocation process" n9: diamond label:"Continue Expense Allocation process" n9.handle(right) -> employee.n10.handle(bottom) n9.handle(left) -> manager.n8.handle(left) [label="Retry/Rejected"] n6.handle(right) -> employee.n7.handle(left) n3.handle(right) -> employee.n4.handle(left) }