事件風暴
1. 基礎概念
術語
- 執行者 -----> 是指執行的角色,系統的主體,是導致系統狀態變化的觸發源
- 人員,系統的使用者,操作人員等
- 系統,系統本身執行的,或者排程的,自動觸發的 ,第三方系統
- 定時任務,定時的觸發任務
- 命令 -----> 是執行者發起的操作,構成要件是執行者的行為
- 是某個場景中領域事件的觸發動作,對應一個用例
- 領域物件 -----> 是對物件,人或者系統的資訊表示,它通過較為簡單的資訊結構來代表我們需要理解的複雜事務或系統
- 建立訂單,修改訂單 ,刪除訂單等 ,領域物件:訂單
- 領域事件 -----> 是和領域相關的事情,實在業務上真實發生的事實,這些事件對系統會產生關鍵影響,是觀察業務系統變化的關鍵點,領域事件一般是領域專家關心的,一般已動詞的過去式表示,表示已發生什麼事件,是過去已經發生過的事實
- 識別領域事件的線索
- 是否產生了某種資料
- 系統狀態是否發生變化,無論這種狀態存放到資料庫還是記憶體
- 是否對外傳送了某些訊息
- 讀模型 -----> 為了達到一個目的,需要在系統中讀出一些資料
- 讀模型來源於領域物件,展現的形式不一樣,一個讀模型中可能包含多個領域物件
2. 事件風暴工作坊實踐流程
- 產品願景,識別軟體價值和定位,進行業務的匯入,團隊共識業務需求資訊
- 初步進行領域劃分,識別出核心域,分而治之 ,對問題域的初步劃分,分解問題
- 事件風暴,觀察業務系統變化的關鍵點,找出系統狀態的變化規律
- 命令風暴,找出系統狀態的觸發者和行為
- 尋找模型,根據領域名詞,設別領域物件,識別物件之間的關係,設計模型
- 限界上下文劃分,分解問題 ,戰略規劃
- 規範化的輸出,已團隊共識的模型或者UML輸出等
3. 步驟
-
共識白板中的圖例,各自表示的是什麼
-
從一個初步劃分的領域開始 ,按照時間軸,從左到右的,寫出事件(對時間的順序要求不是很高,儘量按照時間的先後順序識別)
-
識別命令 ,和 執行者 ,並明確執行者的角色,比如,第三方系統,系統操作人員,定時任務
-
識別讀模型
-
根據業務識別出來的命令,事件,找出具有代表性的名詞,建立初步的模型,並整理分類
-
識別模型之間的關係,畫出領域分析模型
-
根據分析模型,細化模型,設計出領域設計模型,並用uml展示
-
根據設計模型 設計 聚合,實體,值物件,細化模型
-
劃分限界上下文 ,規範檔案輸出
業務需求
願景和目標,統一認識,對於目標的共識
對於 :精裝管理業務流程的業務人員(銷售,訂單,財務)
他們想 :更好的管理客戶,專案,訂單,以及更快的共同作業,完成訂單,跟蹤訂單
這個 :精裝訂單系統
是一個 :內部管理系統
它可以 :通過對客戶,專案,訂單的線上化管理,提升業務方的共同作業效率,更好的跟蹤 客戶 和訂單的情況
不同於 : OA管理系統
它的優勢是 :結合業務的實際執行情況,基於客製化化的管理系統,提升效率
1. 需求描述
銷售人員 登入APP,如果沒有賬號則註冊賬號,登入成功後,可以在系統上錄入客戶的基本資訊,根據客戶的房屋資訊建立專案,一個客戶可以建立一個或者多個專案,銷售人員根據客戶的意向情況,建立訂單,收取意向金,收取的意向金需要財務進行確認,並記錄稽核的情況, 財務確認後,訂單專員可以看到訂單列表,稽核訂單資訊,稽核未通過,則通知銷售人員原因
訂單專員可以給訂單系結合同,如果該客戶下沒有合同,可以為客戶建立合同,並繫結,有合同,就直接繫結合同號,繫結的合同號會流轉到下游的系統中,訂單專員可以填寫排期單資訊,確定訂單沒有問題後,可以做訂單下達 ,當訂單的生命週期完結後,訂單專員可以完成訂單 ,訂單中途出現意外情況 ,可以作廢訂單
訂單狀態機:
- 訂單已建立 ------> 訂單建立的初始狀態
- 訂單已生成合同號 ------> 訂單系結合同號成功
- 訂單已下達 ------> 訂單下達成功
- 訂單已完成 ------> 訂單完成了
- 訂單已廢棄 ------> 比如客戶不想在公司做了 等情況 或者 沒有用的訂單不用跟蹤了,廢棄訂單
2. 規則
- 意向金:向客戶收取的定金 ,可以任意的填寫 ,至少收取1千以上
- 財務稽核確認,線上支付的不需要財務確認,現金需要財務進行確認
- 合同號生成規則:Gr + 年月日時分秒
- 合同號必須繫結 ,不繫結不能做訂單下達
- 排期單必須填寫,不填寫不能做點單下達
- 使用者名稱必須唯一,必須填寫電話號碼 和郵箱,並驗證 ,密碼長度不能低於6位
3. 術語
- 專案:在家裝行業,專案的基本資訊,一般就是客戶的房屋資訊,把房屋資訊當作專案資訊來管理
- 合同號:合同的標識
- 下游系統,另外一個服務或者第三方的系統
4. 干係人
-
銷售 ,客戶 ,訂單專員 ,財務人員
-
分析
- 銷售是支援者,錄入和收集客戶的基本資訊應該要儘量完善,這樣有利於設計師的設計和報價,面向的是客戶,挖掘更多的客戶資訊,有利於簽單
- 需要對客戶進行分層,不同的客戶,儘量匹配比較適合的設計師和銷售
- 財務人員稽核的週期控制等
- 訂單專員稽核的步驟可能很繁瑣,需要考慮他的痛點以及效率
5. 流程圖
6. 領域分析模型
參考資料
感謝各位老師的輸出整理
- 公眾號:作者:少個分號,公眾號名稱:DDD和微服務, https://mp.weixin.qq.com/s/3Ef7jzetIb7r_abH-i4Z8g
- 51CTO 課程 ,領域驅動設計課程 ---> 事件風暴
- 解構領域驅動設計 ---> 事件風暴