領域事件 事件風暴

2022-05-02 09:27:09 字數 1130 閱讀 7593

領域事件:

領域專家所關心的在領域中的一些事件。

將領域中所發生的活動建模城一系列的離散事件。每個事件都用領域物件來表示。

領域事件是領域模型的組成部分,表示領域中所發生的事情。

重要的事件肯定會在系統其他地方引起反應,因此理解為什麼會有這些反應同樣也很重要。--- martin fowler

乙個領域事件可以理解為是發生在乙個特定領域中的事件,是你希望在同乙個領域中其他部分知道並產生後續動作的事件。但是並不是所有發生過的事情都可以稱為領域事件。乙個領域事件必須對業務有價值,有助於形成完整的業務閉環,也即乙個領域事件將導致進一步的業務操作。

領域事件可以是業務流程中的乙個步驟。

如果在通用語言中存在「當a發生時,我們就需要做到b。」這樣的描述,則表明a可以定義成乙個領域事件。領域事件的命名一般也是「產生事件的物件名稱 + 完成的動作的過去式」的形式。

例如:訂單的發貨事件 orderdispathedevent

領域事件的優點:

領域事件可以是一種基於事件的架構。事件架構的好處是可以把處理的業務解耦,實現系統的可擴充套件性,提高主業務流程的內聚性。

領域事件的特點:解決領域的聚合性問題、也是領域分析的工具。領域事件可以通過觀察者模式和訂閱模式進行實現。比較常見的實現就是事件匯流排。

事件風暴:

事件風暴也稱為事件建模,類似頭腦風暴,通過事件風暴的方法可以快速分析複雜業務領域,完成領域建模的目標。

事件風暴是一項團隊活動,旨在通過領域事件識別出聚合根,今兒劃分微服務的限界上下文。在活動中,團隊先通過頭腦風暴的形式羅列出領域中的所有的領域事件,整合之後形成最終的領域事件集合,然後對於每乙個事件,標註出導致該事件的命令,然後再為每個事件標註出命令發起方的角色,命令可以是使用者發起的,也可以是第三方系統呼叫或者是定時器觸發等。最後對事件進行分類這裡出聚合根以及限界上下文。

能夠引發事件的事情包括使用者行為、外部系統所發生的事情以及時間的流逝。事件也有助於找到領域的邊界,對屬於的不同闡述可能就意味著存在邊界。

事件風暴中我們關注的東西:

事件 -> 某個動作的結果

屬性 -> 事件的輸入、輸出

命令 -> 某個動作

實體 -> 命令的觸發者

簡單理解就是誰(實體)使用什麼(輸入)做了什麼(命令、動作)產生了什麼(輸出)影響了什麼(事件)。

簡單的學習,實現,領域事件,事件儲存,事件溯源

自己以前都走了彎路,以為學習戰術設計就會ddd了,其實ddd的精華在戰略設計,但是對於我們菜鳥來說,學習一些技術概念也是挺好的 經常看到這些術語,概念太多,也想簡單學習一下,記憶力比較差記錄一下實現的細節1.領域事件是過去發生的與業務有關的事實,一但發生就不可更改,所以儲存事件時只能追加 3.領域事...

js 事件 事件物件

關於事件寫了一系列文章 1.事件流 事件捕獲和事件冒泡 2.事件處理程式 3.事件物件 本文介紹事件物件 4.通用的事件偵聽器函式 5.事件迴圈 event loop 6.事件 event delegation 1.事件物件 觸發dom上的某個物件時,會產生乙個事件物件event dom0級事件物件...

C 事件 事件解析

事件 event 這個詞兒對於初學者來說,往往總是顯得有些神秘,不易弄懂。而這些東西卻往往又是程式設計中常用且非常重要的東西。大家都知道windows訊息處理機制的重要,其實c 事件就是基於windows訊息處理機制的,只是封裝的更好,讓開發者無須知道底層的訊息處理機制,就可以開發出強大的基於事件的...