block by timelyportfolio 67cb6d83e749000b0870

Sequence Diagrams in R with DiagrammeR c/o mermaid.js

Full Screen

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