code.R
# Using this "How to Draw a Sequence Diagram"
# http://www.cs.uku.fi/research/publications/reports/A-2003-1/page91.pdf
# draw some sequence diagrams with DiagrammeR
library(DiagrammeR)
library(pipeR)
# first steps -------------------------------------------------------------
"sequenceDiagram;
participant customer;
participant ticket seller;
participant database;
participant printer;
customer->>ticket seller: ask ticket;
ticket seller->>database: seats;
database->>ticket seller: ok;
ticket seller->>customer: confirm;
customer->>ticket seller: ok;
ticket seller->>database: book a seat;
ticket seller->>printer: print ticket;
" %>>% DiagrammeR
# since all participants are involved we can eliminate
# repetitive participant lines, but for clarity I often will leave them
"sequenceDiagram;
customer->>ticket seller: ask ticket;
ticket seller->>database: seats;
database->>ticket seller: ok;
ticket seller->>customer: confirm;
customer->>ticket seller: ok;
ticket seller->>database: book a seat;
ticket seller->>printer: print ticket;
" %>>% DiagrammeR
# more correct version --------------------------------------------
# let's add some conditionals
"sequenceDiagram;
customer->>ticket seller: ask ticket;
ticket seller->>database: seats;
alt tickets available
database->>ticket seller: ok;
ticket seller->>customer: confirm;
customer->>ticket seller: ok;
ticket seller->>database: book a seat;
ticket seller->>printer: print ticket;
else sold out
database->>ticket seller: none left;
ticket seller->>customer: sorry;
end
" %>>% DiagrammeR