In the literature, the Coffee Shop scenario (Café for short) introduced by Greggor Hohpe has become the de facto standard to inspire implementations which then allow to compare proposals in the integration field from a practical point of view. This workflow describes how customer orders are processed in a café. Roughly speaking, it starts by a Customer placing an order to the Cashier, who then registers the order in the system and add it to an order queue. An order may include entries for hot and cold drinks, which are prepared by different Baristas. When all drinks corresponding to the same order have being prepared, they are ready to be delivered by the Waiter. Every order has a tray associated to it, which is used to deliver the order to the Customer. Note that, the Cashier is decoupled from the Baristas, since orders taken from customers are placed in the queue which serves the Baristas. It allows the Cashier to keep taking orders from customers even when the Baristas are backed up. Baristas do not have a complete view of the whole set of drinks in an order, they receive individual drink requests and when a drink is prepared the Barista places it to the corresponding tray for the order. Every drink request carries the information to which order it belongs.
:: Guaraná solution
Below you can have one possible design for this solution using Guaraná DSL and download its implementation on Guaraná SDK. Note that to run this example in your computer you have to setup the rurring environment. Instructions can be found here.
:: Download files