Event Storming
Event Storming is a collaborative modeling technique that helps understand the dynamics of a complex domain. The diagram below shows the result of an Event Storming session for the Bartendie system.
What is Event Storming?
Event Storming is a workshop-based method to quickly explore complex business domains. It focuses on:
- Domain events (things that happen in the system)
- Commands (user actions that trigger events)
- Aggregates (business entities that maintain consistency)
- Policies (business rules that react to events)
- External systems and actors
The Bartendie Event Storm
The diagram below represents a comprehensive Event Storm for the Bartendie system:
Key Components
Commands (Blue)
Commands represent user actions or system operations that trigger events. Examples include:
- Schedule Event: The act of creating a new event
- Create Menu: Creating a drink menu for an event
- Check Inventory: Checking current stock levels
- Scan Product Barcode: Scanning a product to identify it
Domain Events (Orange)
Events are facts that have happened in the system. They are named in past tense:
- EventScheduled: An event has been scheduled
- MenuCreated: A menu has been created
- InventoryChecked: Inventory levels have been checked
- ProductBarcodeScanned: A product barcode has been scanned
Aggregates (Yellow)
Aggregates are clusters of domain objects that are treated as a single unit:
- Event: The event being planned
- Menu: The drink menu for an event
- Inventory: The collection of products and ingredients
- Recipe: A cocktail recipe
Policies (Purple)
Policies represent business rules that react to events and trigger commands:
- When EventScheduled then Define Theme: After scheduling an event, a theme should be defined
- When MenuCreated then Check Inventory: After creating a menu, inventory should be checked
- When ProductMarkedEmpty then Add To Shopping List: When a product is marked empty, add it to the shopping list
External Systems (Pink)
Systems outside of Bartendie that interact with it:
- Supplier: For ordering supplies
- Email/Messaging: For communicating with guests
- Product Database: For looking up product information
- Barcode Scanner: For scanning product barcodes
Actors (Green)
People who interact with the system:
- Host: Plans events and manages inventory
- Bartender: Prepares and serves drinks
- Guests: Attend events and provide preferences
Key Workflows
The diagram shows several key workflows:
-
Event Planning Flow:
- Host schedules an event
- System prompts to define a theme
- System creates a menu
- System checks inventory and generates shopping list
-
Inventory Management Flow:
- Product is scanned
- System looks up product data
- Product is added to inventory
- When levels are low, product is added to shopping list
-
Bar Setup Flow:
- Menu is created
- System checks tool availability
- Bar setup is prepared
- Cocktails are batched for the event
-
Guest Management Flow:
- Guest list is created
- Guests are added with preferences
- Attendance estimate is updated
- Shopping quantities are recalculated
Event Storming helps identify the key workflows and interactions in the system, making it easier to design the software architecture and identify potential issues or opportunities for improvement.