Submit Search
Upload
事件風暴-領域建模
•
Download as PPTX, PDF
•
15 likes
•
4,646 views
國昭 張
Follow
AgileTour Hsinchu 2018 - 工作坊
Read less
Read more
Software
Report
Share
Report
Share
1 of 74
Download now
Recommended
DDD + Clean Architecture: 從需求到實作
DDD + Clean Architecture: 從需求到實作
teddysoft
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
Gelis Wu
DDD架構設計
DDD架構設計
國昭 張
DDD 拼圖中的另一半 – 以戰術實踐代碼
DDD 拼圖中的另一半 – 以戰術實踐代碼
Eason Kuo
從零開始做架構圖
從零開始做架構圖
Philip Zheng
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
ドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだ
増田 亨
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
Recommended
DDD + Clean Architecture: 從需求到實作
DDD + Clean Architecture: 從需求到實作
teddysoft
實踐 Clean Architecture(實作高可用性的軟件架構)
實踐 Clean Architecture(實作高可用性的軟件架構)
Gelis Wu
DDD架構設計
DDD架構設計
國昭 張
DDD 拼圖中的另一半 – 以戰術實踐代碼
DDD 拼圖中的另一半 – 以戰術實踐代碼
Eason Kuo
從零開始做架構圖
從零開始做架構圖
Philip Zheng
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
ドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだ
増田 亨
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcing
Emanuele DelBono
ドメイン駆動設計 複雑さに立ち向かう
ドメイン駆動設計 複雑さに立ち向かう
増田 亨
團隊協作實戰DDD
團隊協作實戰DDD
Jed Lin
50.000 orange stickies later
50.000 orange stickies later
Alberto Brandolini
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
Sylvia Yang
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント
増田 亨
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
[2022 DevOpsDays Taipei] 走過 DevOps 風雨的下一步
[2022 DevOpsDays Taipei] 走過 DevOps 風雨的下一步
Edward Kuo
Msを16倍出し抜くwpf開発2回目
Msを16倍出し抜くwpf開発2回目
cct-inc
如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)
Gelis Wu
enterprise agile lean modeling
enterprise agile lean modeling
Kenji Hiranabe
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
A AOKI
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
増田 亨
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
TIM WANG
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
軟體架構模式
軟體架構模式
Chieh (Jack) Yu
ドメイン駆動設計再入門
ドメイン駆動設計再入門
Yukei Wachi
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
Shohei Okada
「所知有雲」:維基百科雲端運算中文條目編輯行動發起說明
「所知有雲」:維基百科雲端運算中文條目編輯行動發起說明
Fred Chiang
Why based success_opensource_project_will_fail_its_product_last
Why based success_opensource_project_will_fail_its_product_last
Li Jiansheng
More Related Content
What's hot
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcing
Emanuele DelBono
ドメイン駆動設計 複雑さに立ち向かう
ドメイン駆動設計 複雑さに立ち向かう
増田 亨
團隊協作實戰DDD
團隊協作實戰DDD
Jed Lin
50.000 orange stickies later
50.000 orange stickies later
Alberto Brandolini
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
Sylvia Yang
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント
増田 亨
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
[2022 DevOpsDays Taipei] 走過 DevOps 風雨的下一步
[2022 DevOpsDays Taipei] 走過 DevOps 風雨的下一步
Edward Kuo
Msを16倍出し抜くwpf開発2回目
Msを16倍出し抜くwpf開発2回目
cct-inc
如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)
Gelis Wu
enterprise agile lean modeling
enterprise agile lean modeling
Kenji Hiranabe
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
A AOKI
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
増田 亨
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
TIM WANG
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
軟體架構模式
軟體架構模式
Chieh (Jack) Yu
ドメイン駆動設計再入門
ドメイン駆動設計再入門
Yukei Wachi
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
Shohei Okada
What's hot
(20)
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcing
ドメイン駆動設計 複雑さに立ち向かう
ドメイン駆動設計 複雑さに立ち向かう
團隊協作實戰DDD
團隊協作實戰DDD
50.000 orange stickies later
50.000 orange stickies later
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
DDD TW Conference 2020 與RD一起跳坑DDD (20201127)
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
[2022 DevOpsDays Taipei] 走過 DevOps 風雨的下一步
[2022 DevOpsDays Taipei] 走過 DevOps 風雨的下一步
Msを16倍出し抜くwpf開発2回目
Msを16倍出し抜くwpf開発2回目
如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)
enterprise agile lean modeling
enterprise agile lean modeling
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
軟體架構模式
軟體架構模式
ドメイン駆動設計再入門
ドメイン駆動設計再入門
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
Similar to 事件風暴-領域建模
「所知有雲」:維基百科雲端運算中文條目編輯行動發起說明
「所知有雲」:維基百科雲端運算中文條目編輯行動發起說明
Fred Chiang
Why based success_opensource_project_will_fail_its_product_last
Why based success_opensource_project_will_fail_its_product_last
Li Jiansheng
Conference Brochure Scrum Gathering Shanghai 2011
Conference Brochure Scrum Gathering Shanghai 2011
Shining Hsiong
Gettingreal 37signals Com Gr Chn Php
Gettingreal 37signals Com Gr Chn Php
yu bo
NCKU_visual thinking & information visualization design
NCKU_visual thinking & information visualization design
visualization, ID, NCKU
金字塔原理(清晰版)
金字塔原理(清晰版)
mumu337
微观重构 黄婉芳
微观重构 黄婉芳
Webrebuild
簡報規劃與技巧
簡報規劃與技巧
基欽 劉
20190126 ddd-meetup1
20190126 ddd-meetup1
國昭 張
應用設計思考1210 2
應用設計思考1210 2
Raymond Chang
Open source culture_in_china_team
Open source culture_in_china_team
Li Jiansheng
敏捷软件开发——一个实践者的思考V1.2
敏捷软件开发——一个实践者的思考V1.2
Zhang Yongji
How to cooporeate with IT partners from a designer's viewpoint
How to cooporeate with IT partners from a designer's viewpoint
NTUST
商業模式創新起手式
商業模式創新起手式
基欽 劉
2011 0729-推动知识管理之成功关键因素(拓尔思)
2011 0729-推动知识管理之成功关键因素(拓尔思)
Yeong-Long Chen
Design Method & Skill_20211217
Design Method & Skill_20211217
Winny Wang
2020/12 交通大學_資料視覺化與我們的生活|彭其捷
2020/12 交通大學_資料視覺化與我們的生活|彭其捷
彭其捷 Jack
程序员与技术
程序员与技术
ligaoren
如何利用Jira + structure 做需求管理
如何利用Jira + structure 做需求管理
howie YU
一个互联网产品的成长史
一个互联网产品的成长史
AHAConference
Similar to 事件風暴-領域建模
(20)
「所知有雲」:維基百科雲端運算中文條目編輯行動發起說明
「所知有雲」:維基百科雲端運算中文條目編輯行動發起說明
Why based success_opensource_project_will_fail_its_product_last
Why based success_opensource_project_will_fail_its_product_last
Conference Brochure Scrum Gathering Shanghai 2011
Conference Brochure Scrum Gathering Shanghai 2011
Gettingreal 37signals Com Gr Chn Php
Gettingreal 37signals Com Gr Chn Php
NCKU_visual thinking & information visualization design
NCKU_visual thinking & information visualization design
金字塔原理(清晰版)
金字塔原理(清晰版)
微观重构 黄婉芳
微观重构 黄婉芳
簡報規劃與技巧
簡報規劃與技巧
20190126 ddd-meetup1
20190126 ddd-meetup1
應用設計思考1210 2
應用設計思考1210 2
Open source culture_in_china_team
Open source culture_in_china_team
敏捷软件开发——一个实践者的思考V1.2
敏捷软件开发——一个实践者的思考V1.2
How to cooporeate with IT partners from a designer's viewpoint
How to cooporeate with IT partners from a designer's viewpoint
商業模式創新起手式
商業模式創新起手式
2011 0729-推动知识管理之成功关键因素(拓尔思)
2011 0729-推动知识管理之成功关键因素(拓尔思)
Design Method & Skill_20211217
Design Method & Skill_20211217
2020/12 交通大學_資料視覺化與我們的生活|彭其捷
2020/12 交通大學_資料視覺化與我們的生活|彭其捷
程序员与技术
程序员与技术
如何利用Jira + structure 做需求管理
如何利用Jira + structure 做需求管理
一个互联网产品的成长史
一个互联网产品的成长史
More from 國昭 張
8th ddd taiwan study group bounded context integration
8th ddd taiwan study group bounded context integration
國昭 張
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture
國昭 張
事件風暴-設計衝刺
事件風暴-設計衝刺
國昭 張
單元測試
單元測試
國昭 張
Docker實務
Docker實務
國昭 張
Scrum essential
Scrum essential
國昭 張
Docker進階探討
Docker進階探討
國昭 張
Vue
Vue
國昭 張
Docker基礎
Docker基礎
國昭 張
DDD系統分析
DDD系統分析
國昭 張
DDD引導
DDD引導
國昭 張
前端測試
前端測試
國昭 張
Asp.net core v1.0
Asp.net core v1.0
國昭 張
Redux+react js
Redux+react js
國昭 張
React js
React js
國昭 張
架構設計-資料存取的選擇
架構設計-資料存取的選擇
國昭 張
前端自動化工具
前端自動化工具
國昭 張
例外處理與單元測試
例外處理與單元測試
國昭 張
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享
國昭 張
ASP.Net MVC Framework
ASP.Net MVC Framework
國昭 張
More from 國昭 張
(20)
8th ddd taiwan study group bounded context integration
8th ddd taiwan study group bounded context integration
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture
事件風暴-設計衝刺
事件風暴-設計衝刺
單元測試
單元測試
Docker實務
Docker實務
Scrum essential
Scrum essential
Docker進階探討
Docker進階探討
Vue
Vue
Docker基礎
Docker基礎
DDD系統分析
DDD系統分析
DDD引導
DDD引導
前端測試
前端測試
Asp.net core v1.0
Asp.net core v1.0
Redux+react js
Redux+react js
React js
React js
架構設計-資料存取的選擇
架構設計-資料存取的選擇
前端自動化工具
前端自動化工具
例外處理與單元測試
例外處理與單元測試
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享
ASP.Net MVC Framework
ASP.Net MVC Framework
事件風暴-領域建模
1.
領域驅動設計 工作坊 1
2.
3.
一個開發該有的姿勢
4.
真實世界總是… 參考鏈結
5.
參考鏈結 專案成功率
6.
為什麼我們執行一個專案/產品這麼困難? 6
7.
聽過這座塔的故事嗎? 7
8.
溝通的失敗,讓偉大的工程無以為繼
9.
溝通力 = 執行力
10.
領域驅動是什麼? 10 戰略 戰術 戰技 促進溝通並探索問題領域 設計解決方案 基本能力
11.
12.
需求分析 參考鏈結
13.
辛苦的成果,有時候連自己也看不懂
14.
參考資料 利用其它UML圖協助
15.
最後…團隊多了好幾本文件要讀
16.
準備超長的壁報紙 事件探索 聚合
+ Context Map Modeling Design 16
17.
1 2 3 事件和動作有什麼不同呢? 行為
事件 17
18.
買早餐 已經買早餐 有什麼區別? 18
19.
Past • 採用過去式描述 • 事件彼此之間不相依 •
範例: 已購票(Ticket Bought) 19
20.
事件 事件的發生是有強列的順序性 事件 20
21.
事件意味著證據 21
22.
事件1 事件2 事件3 由左至右 呈現事件發生順序 22 *
事件探索的建議: 1. 盡可能細化,找出更多事件 2. 不要過早抽象化 3. 不要過早考慮例外處理,先以快樂路徑(Happy path)為主
23.
事件1 事件2 事件3 事件2’ 平行事件的處理方式 23
24.
事件1 事件2 事件3 事件2’ 添加命令 命令 24
25.
事件1 事件2 事件3 事件2’ 命令的發起者是誰? 命令 角色 25
26.
事件 事件 事件事件 事件 事件
事件 事件 豐富你的事件 命令 角色 26 事件
27.
或許是由User所執行的 命令而來 或許是由外部系統 所觸發 或許只是表達某個特定 間需要做的事 或許它是銜接另一個事件 事件從何而來?
28.
Refund Request Received Refund Policy Issue Refund Refund Issued Notificaton Sent to Payee 外部系統所引發的事件 商務流程中,極 有可能會使用 到外部系統
29.
決策流程 人為 促進人為決策 的輸入(Input) Refund Request Received Refund Policy Issue Refund Refund Issued Notificaton Sent to Payee Organizer 流程有可能是需要人為介入
30.
事件4事件1 事件2 事件3 事件2’ 找出機會/風險 命令 角色 30
31.
排序你的機會/風險 This is where everything is stock! This
is where everything is stock! This is where everything is stock! This is where everything is stock! This is where everything is stock! 31 淘汰
32.
要先找出問題,才能設計 解決方案,如果顛倒了順 序,就會事倍功半。 32 問題領域 和 解決方案領域
33.
先瞄準再射擊 33
34.
切割成多個問題子領域 核心子領域 (Core Subdomain) 支持子領域 (Supporting Subdomain) 支持子領域 (Supporting
Subdomain) 通用子領域 (General Subdomain) 問題域(Problem Domain) 依照價值(Value)將一個 問題領域切割成為多個 子問題領域。 核心子領域是最有價值的。 34
35.
通用子領域 : 採用現成服務 支持子領域 : 採用外包 核心子領域 :
傾團隊之力 35
36.
This is where everything is stock! This
is where everything is stock! This is where everything is stock! This is where everything is stock! This is where everything is stock! 將排序最高的風險/機會 列為核心子領域。 團隊最好能夠得到管理者 的承諾與支持。 挑選核心子領域
37.
怎麼確定那個風險/機會是最重要的? 價值是從最重要的利害關係人角度出發
38.
除了風險/機會之外, 還有什麼角度?
39.
財務貢獻 戰略效應 (Financial Impact) (Strategic Impact) 戰略支持 能力 核心 競爭力 商務 基底 商務 支撐力 高 高低 低 依照商業能力進行分析 參考資料
40.
由不同觀點看待 機會/痛點 (Rick / Pain
Point) 商務能力 (Business Capability)
41.
設計解決方案 每個問題子領域,都應該會 有解決方案,而這些解決 方案,在DDD中,稱其為: 限界上下文。 限界上下文 限界上下文 限界上下文 限界上下文 限界上下文
42.
在事件風暴中,先找出 聚合,再找出限界上下文。 這就是先求內聚,再看耦合 探索聚合(Aggregate) 把相同功能目標的事件收攏在一起
43.
聚合 事件 事件 事件 事件 命令 角色 事件 事件 事件 事件 命令 角色 43 命令 命令 命令 命令 每一個聚合都是為了相同 的功能目的。 命令與事件都是參考元素。
44.
在事件風暴中,先找出 聚合,再找出限界上下文。 這就是先求內聚,再看耦合 探索限界上下文 把相同功能目標的聚合收攏在一起
45.
限界上下文 (Bounded Context) 事件 事件 事件 事件 命令 事件 事件 事件 事件 命令 產品 事件 事件 事件 事件 命令 事件 事件 事件 事件 命令 將相同功能目的的 聚合放在一起,進而 形成一個限界上下文。 45
46.
限界上下文之間其實並非 完全獨立,它們還是會存在 關聯性(Association)。 探索限界上下文圖
47.
限界上下文圖 (Context Map) 47 U U U D D D 上游的改變會嚴重影響 到下游,藉這張圖瞭解 系統變更所可能引發的 風險。
48.
限界上下文圖模式 (Context Map Pattern) 模式大概有9種,但是可以 粗略地分成兩種: •
協作 • 整合 參考資料
49.
參考資料 一個完整的範例
50.
團隊溝通 重工 系統整合 團隊協作 資源分配 沒有上下文圖之前的窘境… 上下文圖提供更高的商務 視野,讓高階管理人員能夠 更快的理解資源分配和 組織概況。
51.
上下文圖與團隊組織 上下文圖也暗示了許多 與團隊組織相關的訊息。
52.
52
53.
重新看待聚合 業務上的聚合,需要進一步設計
54.
聚合畫布 (Aggregate Canvas) 名稱 輸入 模型
輸出 • 命令(Command) • 驅動模型運作 • 以統一語言進行建模 • 可以使用Stereoype去標示: • Entity • Value Object • Domain Service • 領域事件(Event) • 先不著急命名
55.
Order Create Order Update Order Cancel Order Order Created Order Updated Order Canceled <<Entity>> <<VO>> <<Entity>> <<Entity>> <<VO>> <<Entity>> 範例-聚合畫布 (Aggregate Canvas)
56.
交易樣式 (Transaction Pattern) 參考鏈結
57.
四色建模 (Four Color Modeling) 參考鏈結
58.
建模到底在做什麼? 對統一語言進行圖型化描述
59.
60.
DDD戰技概觀
61.
• 一個聚合是一個完整的交易(Transaction)概念 • 當交易所異動到的資料表過於龐大,會造成效能議題(Issue) •
適當拆解聚合(i.e. 不違反BASE理論為前題) • 考慮採用文件型資料庫(NoSQL) 聚合設計原則
62.
CAP理論 參考鏈結
63.
參考鏈結 三者之間的關係 DDD從BDD和TDD上借力, 讓設計更加地完整。
64.
BDD/TDD測試案例的切入點 BDD TDD 從命令著手,進行 系統行為分析 將模型以TDD 進一步驗證
65.
CAE三者的互動模式 (Command, Aggregate, Event) 參考鏈結 Aggregate接收Command, 並在處理完畢後拋出Event 若有需要流程控制,會再加 上Process
Manager這個 Domain Service。
66.
參考鏈結 參考鏈結 六角架構 DDD的模型在最內部的 核心,而越是往外,則代表的 易變性與脆弱。 六角的外部是Port/Adapter, 它們是模型與外部溝通 的工具
67.
參考鏈結 組成微服務架構 以六角堆疊出宛若蜂巢的微服務
68.
服務在微服務中的真面目 參考鏈結 微服務不在於服務的代碼 有多小,而在於其本身的 商務能力有多麼 - 明確與凝煉。
69.
響應式系統設計 參考鏈結 事件驅動的架構模式讓 系統變得更有彈性和 擴充性,是個可以考慮的 架構模式。
70.
Aggregate A Aggregate B Aggregate
C Bounded Context A Bounded Context B • 領域事件是用於同一個限界上下文 中Aggregate之間相互溝通 • 整合事件(Integration Event)是為了”交易(Transaction)”; 目標在於達成最終一致性(Eventually Consistency) 整合事件 領域事件 領域事件 領域事件 整合事件
71.
命令 事件 聚合 事件 策略 Given When Then 外部系統 UI/UX Alternatives啟動BDD Personas 以User為中心 的系統 警報 基於系統真實 事件的BI 打造自動化的 系統 Matrix 參考資料
72.
PO 我從限界上下文 地圖了解系統概 觀,並且讓我可以 依市場快速調整 資源! Contributors Designer: 我了解資料流 的來龍去脈 Developer: 模型都有了,我 只要按圖施工 QA: 驗收條件的分 析,清晰明朗! Scrum Master 團隊成員能夠快速 吸收領域知識,真的 是節省了我好多 時間和心思! Gain
73.
74.
Recap DDD具有兩個環節 戰略, 戰術 利用事件風暴完成 知識獲得, 上下文圖 聚合設計原則 輕巧,
符合BASE理論 事件 整合事件, 領域事件
Download now