Event storming
Denk als verslaggever
Wanneer command?
Als de gebruiker iets wil
Wanneer event?
De rest zijn events
Case
Integratie testen
Blackbox testing
- Event in geeft bepaalde events terug
- Net nadat event van rabbit komt, inprikken
- Net voordat event wordt verstuurd naar rabbit, inprikken
DDD Programming
Union goed testbaar, want
- Buitenste ringen zijn eenvoudig weg te denken
Opbouw
Value objects
- Represemteren een simpele waarde
- Geen expliciete identiteit binnen het model
- Immutable
- Iedere functie die iets met de waarde doet, retourneert een nieuwe instantie met de nieuwe waarde en laat de oude ongewijzigd
- Lijkt erg op structs
- Bijvoorbeeld:
Entities
- Representeren een object met een expliciete identiteit binnen het model
- Zijn altijd voorzien van een specifiek ID of Key
- Soms zelfs meerdere(technisch en functioneel)
- Bijvoorbeeld:
Aggregates
- Gooien events als er iets gebeurt
- Representeren een verzameling objecten (Entities & Value objects) waarvan de consistentie bewaakt moet worden (transaction boundary)
- Hebben altijd een Entity als ‘Aggregate Root’
- Zijn hierdoor altijd voorzien van een specifiek ID of Key
- Key van de Aggregate Root Entity
- Andere Aggregates mogen alleen een verwijzing naar de Aggegate Root van een andere Aggregate hebben
- Sla je meestal in zijn geheel in een repository op
- Bijvoorbeeld:
- Bestelling
- Als je een product toevoegt, moet ook de totaalprijs aangepast worden
- Heeft een klant
- Heeft een afleveradres
- Heeft een aantal producten
Repository
Niet alleen maar insert, delete en update methodes, maar ook update methodes die specifieker zijn
- UpdateAddress
- VerlaagVoorraad
Ubiquitous Language
- Elk woord heeft binnen een Bounded Context een hele specifieke betekenis
- Van elke term precies weten wat dat betekent en het hier met zijn allen over eens zijn