Skip to content

Instantly share code, notes, and snippets.

@malisetti
Created November 7, 2018 16:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save malisetti/a7acb11cd2189ada083202d93262d18f to your computer and use it in GitHub Desktop.
Save malisetti/a7acb11cd2189ada083202d93262d18f to your computer and use it in GitHub Desktop.
/'
model the End to End UX (in as much details as possible)
for withdrawing cash in an atm.
actors: consumer, ATM, bank
'/
@startuml Consumer UX at an ATM withdrawl
actor Consumer #green
actor ATM #blue
actor Bank #red
...
Consumer -> ATM:
... Wait for ATM to be online and available ...
Consumer -> ATM: Insert Card
alt successful card read
ATM --> Consumer: Present Options
group Withdrawl
Consumer -> ATM: Withdraw
ATM --> Consumer: Amount to withdraw
loop 5 times
ATM --> Consumer: Enter PIN
Consumer -> ATM: PIN
ATM -> Bank: Verify PIN
alt verified
Bank --> ATM: PIN verified
ATM --> Consumer: Enter Amount
Consumer -> ATM: Amount
alt has required cash
ATM --> Bank: Propose withdrawl
Bank -> Bank: Validate withdrawl request
Bank -> Bank: Record request transaction
alt accepted
Bank --> ATM: Allow withdrawl
Bank -> Bank: Record allowed transaction
alt dispensed
ATM -> ATM: Dispense cash
ATM --> Bank: Ack dispense
Bank -> Bank: Record withdraw transaction
ATM --> Consumer: Display a/c balance
else no cash
ATM --> Bank: Report error
Bank -> Bank: Record transaction error
ATM --> Consumer: Display error
end
else rejected
Bank --> ATM: Rejected with Error
ATM --> Consumer: Error Message Displayed
end
else no cash or denomination
ATM --> Consumer: Display error
ATM --> Bank: Notify error
Bank -> Bank: Log error
end
else not verified
Bank -> Bank: Record error transaction
Bank --> ATM: PIN not verified
ATM --> Consumer: Retry PIN
end
end
ATM --> Consumer: Card Blocked. Please visit Bank or try after an hour.
end
else card not read
ATM --> Consumer: Please re-insert Card
end
@enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment