Banking example - Customer withdraws money from ATM

The customer wants to withdraw money using an ATM. In this case it was chosen to skip the authorization (to simplify the diagram), the cash counted and the checking account is debited. Both actions are successful in this diagram. One could have chosen for not enough cash to generate different diagrams. The cash is released and the customer leaves. This is just one of many (millions) permutations. Use the choices on the right to make different diagrams or even different starting points (e.g. Internet Banking, Merchant or Web-Shop).

The generated MSG-Flow

Customer ATM Secure-Intf Acc-Srv Acc-DB
| | | | |
+-skipped-authorize
Info for skipped-authorize
action skipped-authorizeSimulate a custommer which is already authorized (pass inserted, validated and authorized).
section ATM-ActionsActions related to ATM banking.
component CustomerRepresents a customer.
| | | |
+-in-atm-menu
Info for in-atm-menu
action in-atm-menuCustomer is in the atm menu.
section ATM-ActionsActions related to ATM banking.
component CustomerRepresents a customer.
| | | |
|----withdraw-cash
Info for withdraw-cash
message withdraw-cashThe customer wants to withdraw cash
section ATMMessages mainly used for interaction with the ATM.
protocol HumanUsed to describe human readable messages.
---->| | | |
| +-counting-cash
Info for counting-cash
action counting-cashThe cash is being counted (withdraw and deposit)
section ATM-ActionsThe actions for the ATM.
component ATMThe physical ATM.
| | |
| |---sec-transfer
Info for sec-transfer
message sec-transferThe customer wants to transfer money, e.g. pay an item
section requestsThe secure requests
protocol SEC-msgReflect the Secure messages used between entities and secure-interface.
actionwithdraw
dst_acccash
src_accchecking
-->| | |
| | |---transfer
Info for transfer
message transferCustomer transfers money from an account to another
protocol Acc-SrvThe Internal Account Server Protocol
actionwithdraw
dst_acccash
src_accchecking
-->| |
| | | |------get-balance
Info for get-balance
message get-balanceRequest to get the balance of an account
protocol Acc-DBThe Internal Account Database Protocol
actionwithdraw
dst_acccash
src_accchecking
----->|
| | | |<-----balance-info
Info for balance-info
message balance-infoThe balance information
protocol Acc-DBThe Internal Account Database Protocol
actionwithdraw
dst_acccash
src_accchecking
-----|
| | | |-upd-checking-balance
Info for upd-checking-balance
message upd-checking-balanceRequest to update the balance of a checking account
protocol Acc-DBThe Internal Account Database Protocol
actionwithdraw
dst_acccash
src_accchecking
->|
| | | |----commit-changes
Info for commit-changes
message commit-changesInstruction to save all related requests in an atomic action.
protocol Acc-DBThe Internal Account Database Protocol
cloudno
actionwithdraw
dst_acccash
src_accchecking
---->|
| | | |<---changes-committed
Info for changes-committed
message changes-committedAll related request have been save in the database.
protocol Acc-DBThe Internal Account Database Protocol
cloudno
actionwithdraw
dst_acccash
src_accchecking
--|
| | |<-transferred
Info for transferred
message transferredCustomer transferred money from an account to another
protocol Acc-SrvThe Internal Account Server Protocol
cloudno
actionwithdraw
dst_acccash
src_accchecking
-| |
| |<-sec-transferred
Info for sec-transferred
message sec-transferredThe money has been transferred
section responsesThe secure responses
protocol SEC-msgReflect the Secure messages used between entities and secure-interface.
cloudno
actionwithdraw
dst_acccash
src_accchecking
-| | |
| +-cash-released
Info for cash-released
action cash-releasedThe cash is release to the customer
section ATM-ActionsThe actions for the ATM.
component ATMThe physical ATM.
| | |
|<-withdraw-successful
Info for withdraw-successful
message withdraw-successfulThe withdraw was accepted.
section ATMMessages mainly used for interaction with the ATM.
protocol HumanUsed to describe human readable messages.
cloudno
actionwithdraw
dst_acccash
src_accchecking
-| | | |
+-take-cash
Info for take-cash
action take-cashCustomer take money out of the ATM
section ATM-ActionsActions related to ATM banking.
component CustomerRepresents a customer.
| | | |
+-card-returned
Info for card-returned
action card-returnedThe card is returned to the customer.
section ATM-ActionsActions related to ATM banking.
component CustomerRepresents a customer.
| | | |
+-customer-leaves
Info for customer-leaves
action customer-leavesCustommer leaves, e.g. ready or failed.
section ATM-ActionsActions related to ATM banking.
component CustomerRepresents a customer.
| | | |

You can and paste the above flow representation in a text file or in your favourite text editor using a monospace font. Ofcourse you will loose the context sensitive output and the links towards additional information.

Decission table

The decission table shows which decissions have been made so far and which to make. The header contains the choice number and the entity making the choice. The choices are shown from left (latest) to right (earlier) which make it handier to follow or adapts. All choices you could have choisen on a specific level are displayed. You can click on the description to make a different choice.

ATM-flows : The user starts a session at an atm.

Additional Generated Information

Below is the graphical representaion rendered using PlantUML Try it yourself online

Cannot render UML

You can the following url to refer to the graph. Or copy as to have it embeded in usable HTML code.

Be aware that changes/improvements will not be reflected in the graph.
The plain text, which can be used by some editors, is given below. Use it if you want to make edit in you favorite editor. It does not contain links as they are not supported by some editors. You can copy the text and paste it e.g. into WebSequenceDiagrams, SequenceDiagram or SwimLanes. You can also copy it for and paste it into PlantUML.