What is Event Stream?
Event Stream is a core concept in Event Storming, which is a workshop-based approach to collaborative modeling in the realm of Domain-Driven Design (DDD). Event Storming helps teams model complex business domains by focusing on events that occur in the system. Here’s how an Event Stream fits into the Event Storming concepts:
Event Storming Overview
In Event Storming, participants collaboratively explore and map out domain events—things that happen within the domain that are meaningful to business stakeholders. These events are typically modeled as past-tense, business-relevant occurrences, such as "Order Placed," "Payment Processed," or "Shipment Delivered."
Event Stream Definition
An Event Stream represents a sequence of domain events that occur over time in a business process or a bounded context. The stream is a chronological series of events that define how a system or process evolves from one state to another.
Key Elements of an Event Stream in Event Storming:
1. Domain Events: The building blocks of an event stream, domain events are the critical milestones that change the state of the system. In Event Storming, each event is typically represented on a sticky note, often in orange.
2. Flow of Events: The events in the event stream are laid out in a linear or time-based sequence, showing how the process progresses from one step to the next. The flow shows the interaction between different business activities, decisions, and responses.
3. Event Triggers: Events can be triggered by user actions, system responses, or external inputs. A change in state due to a trigger is what gives rise to the next event in the stream.
4. Aggregates and Commands: While Event Storming primarily focuses on events, commands and aggregates also interact with the event stream. Commands (usually actions or decisions) lead to domain events, while aggregates (entities or groups of entities) change states based on these events.
5. Bounded Contexts: An event stream usually occurs within a bounded context, which refers to the boundaries within which a specific model applies. This helps teams focus on a portion of the domain without being overwhelmed by complexity.
6. Exploring Problems and Opportunities: As you model the event stream, you might discover bottlenecks, gaps, or opportunities for optimization, as the events provide a visual, time-sequenced overview of the process.
How Event Streams Work in Practice
- Chronology: In an Event Storming session, the team collaboratively places domain events in a chronological sequence. Each event represents something important that happened, capturing the flow of activities from the initial trigger to the final outcome.
- Feedback Loop: As participants discuss the events, they may adjust the sequence, split certain events into smaller ones, or identify missing events. This feedback loop helps refine the understanding of the process and the relationship between events.
- Business Insights: The event stream helps domain experts, developers, and other stakeholders understand how the system works, the role of different actors, and how the system changes over time.
Example
In an e-commerce domain:
1. Order Placed (a customer places an order)
2. Payment Authorized (payment is successfully processed)
3. Order Shipped (the warehouse ships the order)
4. Delivery Confirmed (customer confirms receipt of the product)
This sequence of events forms an event stream that describes the lifecycle of an order.
Summary of Event Stream in Event Storming:
- It’s a timeline of key domain events.
- Helps visualize and analyze complex business processes.
- Encourages collaboration and feedback among diverse team members.
- Provides insights into the domain's state transitions and flow.
The Event Stream in Event Storming ultimately helps capture the full narrative of how systems and processes evolve through a sequence of events, making it easier to identify points of improvement and align business goals with system design.