Domain Event
Das wegweisende Buch "Domain-Driven Design. Tackling Complexity in the Heart of Software" von Eric Evans erwähnt den Domain Event noch nicht.
Mit der zunehmenden Ausbreitung von Domain-Driven Design als Philosophie zum kollaborativen Entwickeln von Software wurde über die Jahre immer deutlicher, dass eine event-zentrische Sicht auf Prozesse nicht nur beim Modellieren von Software nützlich ist, sondern dass diese Ereignisse (Events) auch explizit in der Software selbst repräsentiert werden sollten.
Es ist schließlich ein erklärtes Ziel des Domain-Driven Design, eine gemeinsame Sprache zu schaffen, die sogenannte allgegenwärtige Sprache. Diese soll durchgängig sowohl von Fachexperten als von Software-Entwicklern verwendet werden und sich auch in der Software selbst wiederfinden.
Ereignisse bestimmen die Welt
Die reale Welt wird bestimmt durch eine Abfolge von Ereignissen. Es gibt kleine Ereignisse ("in Wolfratshausen wurde am Bahnhof ein Fahrrad gestohlen"), große Ereignisse ("der Ätna ist ausgebrochen") und eine große Bandbreite an Ereignissen dazwischen.
Ereignisse sind nicht umkehrbar. Wenn ich ein Glas zerbrochen habe, dann kann ich das nicht ungeschehen machen. Selbst wenn ich die Scherben zusammenklebe, ist das Ergebnis nicht dasselbe wie ein unversehrtes Glas. Ereignisse sind also unveränderlich.
Ob ein Ereignis wichtig ist oder nicht, ist sehr subjektiv. Die Polizei in Wolfratshausen (ja, die gibt es wirklich, aber da arbeiten weder Hubert noch Staller) wird sich vermutlich für das gestohlene Fahrrad eher interessieren als das Bundeskriminalamt in Wiesbaden.
Ein Bewohner Siziliens ist vom Ausbruch des Ätna mehr oder weniger direkt betroffen, während sich ein Bewohner Neuseelands vermutlich nur dafür interessiert, wenn er Vulkanologe ist, oder Freunde oder Familie auf Sizilien hat.
Wir müssen jedes Ereignis in einem geeigneten Kontext betrachten. Oder anders gesagt, der Kontext bestimmt, ob ein Ereignis relevant ist oder nicht.
Domain Event
Ein fachlich relevantes Ereignis nennen wir Domain Event.
Auf welcher Granularität wir ein Ereignis betrachten, ist ebenfalls vom Kontext abhängig. Wenn wir einen Bienenschwarm beobachten, könnte für einen Bienenforscher jede einzelne Biene relevant sein ("eine Arbeitsbiene hat den Stock verlassen"), während der Imker sich nur für ein grober granulares Ereignis interessiert.
Eine zentrale Aufgabe bei der Modellierung von Software ist es, relevante Ereignisse zu identifizieren, die richtige Granularität von Ereignissen zu finden und schließlich die Informationen festzulegen, welche das Ereignis hinreichend beschreiben.
Um rasch potenziell wichtige Ereignisse zu identifizieren, eignet sich eine kollaborative Modellierungsmethode wie Event Storming. Im Event Storming wird ein Domain Event durch einen orangen Klebezettel dargestellt.
Wir lehnen uns typischerweise an diese Notation an und verwenden eine orangenes Kästchen, um einen Domain Event zu visualisieren: