A curated list of awesome resources (articles / videos / courses / repositories) about Event Modeling.
Event Modeling is a method of describing systems using an example of how information has changed within them over time. Specifically this omits transient details and looks at what is durably stored and what the user sees at any particular point in time. These are the events on the timeline that form the description of the system.
Event Modeling was coined by Adam Dymitruk by building on long-running process specifications that Greg Young used in CQRS/ES systems. Alberto Brandolini’s Event Storming sticky notes and collaboration was integrated to adopt the workshop format. The final piece was the UI/UX aspects to complete what more resembles a movie story board. In the recent years many organizations were able to get on the same page with all departments and get their projects done with much greater efficiency.
Event Modeling history from HERE.
🚀 Go ahead to the official web page here: 🌐 https://eventmodeling.org
- Read official introduction from Adam Dymitruk: Event Modeling: What is it?
- See Event Modeling Cheat Sheet by Sebastian Bortz: EventModeling Cheat Sheet
- eventmodeling.org | Event Modeling: What is it? - Adam Dymitruk
- eventmodeling.org | Event Modeling Traditional Systems - Adam Dymitruk
- eventmodeling.org | Great User Experience Demands Event Modeling - Eric Lau
- eventmodeling.org | EventModeling Cheat Sheet - Sebastian Bortz
- eventmodeling.org | Natural Human Thinking - Event Storming vs Event Modeling - Rafał Maciąg
- zycienakodach.pl | Event Modeling & Modularny Monolit | Od kolorowych karteczek do kodu poprzez TDD (🇵🇱 Polish) - Mateusz Nowak
- InfoQ | Interview with Event Modeling Founder - Adam Dymitruk
- Goeleven.com | WHAT IS EVENT MODELING? (WITH EXAMPLE)
- Event Modeling - A New Approach to Software Design
- From Model to Code: Event Modeling & Axon Framework
Official Event Modeling YouTube channel: Event-Driven Information Systems
- Event Modeling Workshop - Adam Dymitruk - Full mini-workshop for InfoZone.se on Event Modeling.
- Guidance Using Event Modeling
- Copenhagen DDD Event Modeling with Adam Dymitruk
- Event Modeling and Wardley Mapping with Chris Daniel
- OAuth2 Event Modeling in Go
- Event Sourcing, Event Modeling and Event Storming
- Event Modeling and Wardley Mapping with Chris Daniel
- Event Modeling a Time Tracking System
- Sagas Don't Exist
- CQRS and Event Sourcing Introduction with Greg Young
- Small Design Up-Front Removes Agile
- MrDev.pl | Krzysztof Owsiany | Moje 5 minut (🇵🇱 Polish)
- ADD DOT | Event Modeling and Event Sourcing - host: Vaughn Vernon
- semaphoreci.com | Adam Dymitruk on How to Upgrade Your Toolbox with Event Modeling
- devsession.pl | Event Modeling – Rafał Maciąg (🇵🇱 Polish) - host: Grzegorz Kotfis
Whiteboards and everything else with can help you lead Event Modeling workshop.
- miro
- Templates:
- Examples:
- eventmodeling.org | Event Modeling Tutorial: Time Tracking System
- eventmodeling.org | TODO List
- mrdev.pl | Krzysztof Owsiany | CatchTheFlow + Git (implementation)
- ZycieNaKodach.pl | Mateusz Nowak | Table Soccer Tournaments system + GitHub (implementation)
- ZycieNaKodach.pl | Mateusz Nowak | Programming course management system + GitHub (implementation)
- ZycieNaKodach.pl | Mateusz Nowak | StarWars Quiz - for frontend development bootcamp
- ZycieNaKodach.pl | Mateusz Nowak | Event Modeling workshops based on GitHub domain(🇵🇱 Polish) + GitHub (implementation) - DDD.EventSourcing.EventModeling.Kotlin.NodeJS.DotNet.GitHubClone
- Figma
- Templates:
- Examples:
- draft.io
- Templates:
- oNote
- Modellution (beta)
- prooph BOARD
- Examples:
Repositories with software implementations from Event Modeling
// TODO: WAITING FOR YOUR CONTRIBUTIONS
- Wimma - Event utilization in the start-up world - Per Ökvist
- Event Modeling Discord - leaded by Adam Dymitruk
-Event Modeling Slack - replaced by Discord
- ChatGPT | Event Modeling Architect - Adam Dymitruk
Prompt content 2023.08.26
you are an event modeling architect. you describe everything in steps using example data. every step is either a state change or a view into state.each state change step has 4 items:
- the screen that shows how the state change is initiated by the user including example data.
- the command that contains the information that's needed to change the state including example data. only one command is allowed in this type of step. minimal information is used to mark the intent to change the state. this command can fail if business rules are broken.
- the resulting event with the information that shows how the state is changed including example data
- a reference to the previous step.
each state view step has 4 items:
- the screen with what information is available to view with example data,
- the read model that contains the model that populates the screen including example data. this is the result of a reducer over any relevant previous events. It may contain default data if no relevant events occured yet. only one read model is allowed in this type of step. it includes relevant ids that can be used by the system to accomodate commands.
- a list of relevant events including the step they were created in that happened in the previous steps to make the informaton available
- a link to the previous step
screen descriptions will include itemization of controls such as text boxes, lists, buttons, radio buttons, checkboxes, menus etc.
When a state view step connects to a state change step, they share the same screen so please repeat the screen between the 2 if they are related. When a state change step is followed by a state view step, references to relevant previous events serve as a link. These links ensure that there is referential integrity to the data in the system being shown. State changes are only user initiated. Any other state change is strictly deduced from a reduction of previous events. There are no explicit commands to adjust product inventaries or total prices.
Steps can also be called slices. A slice can be either a state change or a state view. Example data is used in each component - not just the property names. Data can be traced through the steps. Use realistic data and avoid gerenarlities like "Prouct A". Use integers or UUIDs as identifiers, but don't show them on the screens. You never combine operations into one step. if the instructions say something like "remove 2 products" you will make 2 steps to show explicitly how that happens.
Each command will have a suite of tests in the style of Given-When-Then GWT from BDD with the following format: "Given" is a set of 0..N events. "When" is the command. "Then" is one event showing the resulting state change if the command was successful. "Then" can be an exception if the scenario shows the command failing. The minimal amount of test is 2: 1 for a failure, 1 for a success. But more is usually typical to show data variations.
Each read model will have a suite of tests in the style of Given-When-Then GWT from BDD but without the "When" step. The "Given" is a set of 0..N events. The "Then" is a model that is the result of running a reducer over the events from the "Given" events.
The tests for commands and read models will be fully listed after all steps of the system are described.
Now that you know what to do, please architect the following system:
comletely show what happens when a user sees a page listing 10 different products, adds 2 products and removes one of them from their basket in an online store and then goes to checkout and pay. Please keep track of inventory (but not viewable by the end user) along the way and the users invoice history. show all tests needed.
Please mark if they are free (🆓) or paid (💰).
- Introduction to Event Modeling by Bobby Calderwood 🆓
- Vaughn Vernon’s IDDD Workshop Series | Event Modeling & Event Sourcing (💰 latest price: ???)
Where Event Modeling is used for software development or consultancy services / workshops facilitating.
- Adaptech Group - CEO/Founder: Adam Dymitruk
Contributions welcome! Read the contribution guidelines first.