Someone else’s model bank Not the domain name name currentBalance lastUpdatedOn Account registerSnapshot trackOperation name currentBalance lastUpdatedOn AccountTracker registerSnapshot trackOperation
first? • Kahneman’s System one? • …There’s a little backdoor in our brain that allows school examples to bypass validation • Including examples from speakers on a stage name currentBalance Account deposit withdraw
accuracy • Unfortunately, most of these proxies are only visible in large organisations Bounded Context Limit of applicability of a model Team Subdomain Organization Technology Legacy
got the point Books Public Trainings Private Trainings Consulting Sponsorships Public Speaking Software Delivery Meetups Events Planning Sales Delivery Billing Product Design Financial Analysis Strategy Marketing Inventory Date Picking Tracking Value Tickets and discounts Print on Demand Personal Availability Engagement Strategy Deals Pricing Budget Contracts & Engagement Partnerships Forecast Global Analysis Billing Billing Scouting Date Picking Content design Review Logistics Scouting Courseware and certificates Newsletter & social Newsletter & social Content Design Format Design
🧐 Commonalities are visible 🧐 More precise names & purposes 😎 Better project structure in the IDE We definitely need a map! Books Public Trainings Private Trainings Consulting Sponsorships Public Speaking Software Delivery Meetups Events Planning Sales Delivery Billing Product Design Financial Analysis Strategy Marketing Inventory Date Picking Tracking Value Tickets and discounts Print on Demand Personal Availability Engagement Strategy Deals Pricing Budget Contracts & Engagement Partnerships Forecast Global Analysis Billing Billing Scouting Date Picking Content design Review Logistics Scouting Courseware and certificates Newsletter & social Newsletter & social Content Design Format Design
a lot like EventStorming 😎 Public Trainings Planning Sales Delivery Billing Product Design Financial Analysis Strategy Marketing Inventory Tickets and discounts Deals Pricing Global Analysis Billing Date Picking Logistics Scouting Courseware and certificates Newsletter & social Content Design Reservations
possibly partially specified Solid, running on read- only data Collecting or visualizing Validation Different Models, very similar languages, different paradigms
Person Unit of transactional consistency Something that happened: verb in part tense Command Reactive logic: “Whenever (event) then (command) The information needed to decide Read Model External System
Training Summary Public Event Ticket Sale Open Event Printables Register Attendee Purchase Ticket Open Sales Schedule Confirm Cancel Close Sales Cancel Attendee Session Plan Ticket Plan …other possible Value Objects Open Registra tions (capacity) Close Registrations Venue Booking Purchase
Summary Public Event Ticket Sale Open Event Printables Register Attendee Purchase Ticket Open Sales Schedule Confirm Cancel Close Sales Cancel Attendee Session Plan Ticket Plan … Public Training Event Coordination Open Registra tions (capacity) Close Registrations Venue Booking Purchase
Training Summary Public Event Ticket Sale Open Event Printables Register Attendee Purchase Ticket Open Sales Schedule Confirm Cancel Close Sales Cancel Attendee Session Plan Ticket Plan … PTE Policy Open Registra tions (capacity) Close Registrations Ticket Purchased Attendee Registered Event Confirmed Purchase
Public Event Ticket Sale Open Event Printables Register Attendee Purchase Ticket Open Sales Schedule Confirm Cancel Close Sales Cancel Attendee Session Plan Ticket Plan … Public Training Event Coordination Policy Open Registra tions (capacity) Close Registrations Ticket Purchased Attendee Registered Event Confirmed Horrible names Venue Booking Purchase Experts will Keep using the specific terms like “Meetup” “Training” or “Conference”
Public Event Ticket Sale Open Event Printables Register Attendee Purchase Ticket Open Sales Schedule Confirm Cancel Close Sales Cancel Attendee Session Plan Ticket Plan … Public Training Event Coordination Policy Open Registra tions (capacity) Close Registrations Ticket Purchased Attendee Registered Event Confirmed Double Capacity? Venue Booking
Public Event Deal Open Event Printables Register Attendee Schedule Confirm Cancel Cancel Attendee Session Plan … Private Training Coordination Policy Open Registra tions (capacity) Close Registrations Attendee Registered Event Confirmed Private Training Coordination Policy Deal signed Materials Printed Very Limited changes, without opening boxes. Printables
Public Event Ticket Sale Open Event Printables Register Attendee Purchase Ticket Open Sales Schedule Confirm Cancel Close Sales Cancel Attendee Session Plan Ticket Plan … Public Online Training Policy Open Registra tions (capacity) Close Registrations Registration Policy Ticket Purchased Attendee Registered Courseware Policy One more! Delivery Online Session Schedule Start Purchase Very Limited changes, without opening boxes.
have [Reservations] without a [Ticket]? Is this the Exception or the Rule? It’s always a [Bundle], sometimes a simple one. Can I have [This] and [That]?
Public Event Deal Open Event Printables Register Attendee Schedule Confirm Cancel Cancel Attendee Session Plan Ticket Plan … Private Online Training Policy Open Registra tions (capacity) Close Registrations Attendee Registered Courseware Policy One more! Delivery Online Session Schedule Start Deal signed Progressively declining cost of new options
as a majestic stressor: • Exact Timing became vital information for online sessions • Empty spaces become interesting for different activity types Session Layout
Doe June 25 - 2023 90 days till deadline 5 of 16 ticket sold UNCONFIRMED Threshold at 8 - John Smith - Early Bird Ticket - Mario Rossi - Early Bird Ticket - Francesca Bianchi - Early Bird Ticket - Sylvie Bouchard - Standard Ticket - Nick Fury - Special Ticket The information needed to make a decision A few things are missing, I am lazy
Summary Public Event Open Event Printables Venue Booking Ticket Sale Purchase State-Based Aggregates (or nobody cares about your intermediate events anyway) Structural composition and possible collaboration Specifications as warnings. Read Models on Steroids, focus on information readability and sense-making for the users. EventSourcing on multiple parallel axes: events are meaningful for the listeners Policies -> Sagas or Process Managers to allow business flexibility Draft Executable Tracking Possible upscale to state-driven style Title