領域事件、事件風暴


領域事件:

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

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

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

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

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

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

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

例如:訂單的發貨事件 OrderDispathedEvent

領域事件的優點:

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

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

事件風暴:

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

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

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

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

事件 -> 某個動作的結果

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

命令 -> 某個動作

實體 -> 命令的觸發者

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM