DDD實戰(zhàn)篇 - 權(quán)限域戰(zhàn)略建模

領(lǐng)域這個詞語承載了太多的含義异希,既可以表示整個業(yè)務(wù)系統(tǒng)幽邓,也可以表示其中的某個核心域或者支持子域呜笑。

賬戶域可以分為:權(quán)限子域和用戶信息域(子域下面還可以再接在劃分出子域,沒有最小的子域顷锰,只有最合適的子域)。

權(quán)限子域又可以分為:認(rèn)證上下文和授權(quán)上下文亡问。對于限定上下文官紫,我們把重點放在界限上。

比如州藕,“顧客”這個術(shù)語可能有多種含義束世。在瀏覽產(chǎn)品目錄的時候,“顧客”表示一種意思床玻;而在下單的時候良狈,“顧客”又表示另一種意思。原因在于:當(dāng)瀏覽產(chǎn)品目錄時笨枯,“顧客”被放在了先前購買情況薪丁、忠誠度、可買產(chǎn)品馅精、折扣和物流方式這樣的上下文中严嗜。而在下單時,“顧客”的上下文包括名字洲敢、產(chǎn)品寄送地址漫玄、訂單總價和一些付款術(shù)語。

1. 事件風(fēng)暴

在領(lǐng)域建模過程中压彭,我們需要關(guān)注這類業(yè)務(wù)語言和行為睦优。比如某個業(yè)務(wù)動作或者行為(事件)是否會觸發(fā)下一個業(yè)務(wù)動作?這個動作(事件)的輸入和輸出是什么壮不?是誰(實體)發(fā)出的什么行為(命令)汗盘,觸發(fā)了這個動作(事件)...我們可以從這些暗藏的詞匯中,分析出領(lǐng)域模型的事件询一、命令和實體等領(lǐng)域?qū)ο蟆?/p>

權(quán)限域有三個典型的業(yè)務(wù)場景:

  1. 資源和角色設(shè)置隐孽;
  2. 用戶分配角色癌椿,創(chuàng)建賬戶和密碼;
  3. 用戶登錄系統(tǒng)和權(quán)限系統(tǒng)菱阵,生成用戶登錄和操作日志踢俄;

我們可以按照業(yè)務(wù)流程,進(jìn)行場景分析:

  1. 搜尋用戶業(yè)務(wù)流程中的關(guān)鍵領(lǐng)域事件晴及,比如資源創(chuàng)建都办,角色創(chuàng)建,用戶創(chuàng)建等事件虑稼。
  2. 再找出什么行為會引起這些領(lǐng)域事件脆丁,這些行為可能是一個或若干命令組合在一起的。
  3. 領(lǐng)域事件會觸發(fā)下一步的操作动雹,比如發(fā)布到郵件系統(tǒng)通知用戶創(chuàng)建槽卫;

場景分析時會產(chǎn)生很多命令和領(lǐng)域事件:

事件風(fēng)暴.png

2. 領(lǐng)域建模

領(lǐng)域建模時,我們會根據(jù)場景分析過程中產(chǎn)生的領(lǐng)域?qū)ο笠闰穑热缑罴吲唷⑹录戎g的關(guān)系,找出產(chǎn)生命令的實體茸塞,分析實體之間的依賴關(guān)系組成聚合躲庄,為聚合劃定限定上下文,建立領(lǐng)域模型與領(lǐng)域之間的依賴钾虐。領(lǐng)域模型利用限定上下文向上可以指導(dǎo)微服務(wù)設(shè)計噪窘,通過向下可以指導(dǎo)聚合根、實體和值對象的設(shè)計效扫。

2.1 提取實體

從命令和事件中提取產(chǎn)生這些行為的實體倔监。用綠色貼紙表示實體。通過分析權(quán)限模塊的命令和事件等行為數(shù)據(jù)菌仁,提取了產(chǎn)生這些行為的用戶浩习、賬戶、認(rèn)證Token济丘、資源谱秽、菜單、角色和用戶日志七個實體摹迷。

劃分實體.png

2.2 劃分聚合

將實體劃分成聚合疟赊,這上面的7個實體都可以獨自作為一個聚合。

大話DDD — 服務(wù)峡碉、實體近哟、值對象、聚合根

2.3 劃分限定上下文

劃定限界上下文异赫,根據(jù)上下文語義將聚合歸類椅挣。根據(jù)用戶域的上下文語境,

  • 用戶基本信息和用戶日志信息這兩個聚合共同構(gòu)成用戶信息域塔拳,分別管理用戶基本信息鼠证、用戶登錄和操作日志。
  • 認(rèn)證Token和賬戶這兩個聚合共同構(gòu)成認(rèn)證域靠抑,分別實現(xiàn)不同方式的登錄和認(rèn)證量九。
  • 資源、角色颂碧、菜單共同構(gòu)成了權(quán)限域荠列。
權(quán)限域上下文.png

2.4 轉(zhuǎn)化為領(lǐng)域模型圖

將上面的圖轉(zhuǎn)化為技術(shù)人員可以理解的領(lǐng)域模型圖。

領(lǐng)域模型圖.png

推薦閱讀

領(lǐng)域建模:如何用事件風(fēng)暴構(gòu)建領(lǐng)域模型载城?

領(lǐng)域驅(qū)動設(shè)計之實戰(zhàn)權(quán)限系統(tǒng)微服務(wù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肌似,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子诉瓦,更是在濱河造成了極大的恐慌川队,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睬澡,死亡現(xiàn)場離奇詭異固额,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)煞聪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門斗躏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人昔脯,你說我怎么就攤上這事啄糙。” “怎么了云稚?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵迈套,是天一觀的道長。 經(jīng)常有香客問我碱鳞,道長桑李,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任窿给,我火速辦了婚禮贵白,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘崩泡。我一直安慰自己禁荒,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遵班,像睡著了一般。 火紅的嫁衣襯著肌膚如雪洗搂。 梳的紋絲不亂的頭發(fā)上热康,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天沛申,我揣著相機(jī)與錄音,去河邊找鬼姐军。 笑死铁材,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奕锌。 我是一名探鬼主播著觉,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惊暴!你這毒婦竟也來了饼丘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤辽话,失蹤者是張志新(化名)和其女友劉穎葬毫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屡穗,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡贴捡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了村砂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烂斋。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖础废,靈堂內(nèi)的尸體忽然破棺而出汛骂,到底是詐尸還是另有隱情,我是刑警寧澤评腺,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布帘瞭,位于F島的核電站,受9級特大地震影響蒿讥,放射性物質(zhì)發(fā)生泄漏蝶念。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一芋绸、第九天 我趴在偏房一處隱蔽的房頂上張望媒殉。 院中可真熱鬧,春花似錦摔敛、人聲如沸廷蓉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桃犬。三九已至刹悴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間攒暇,已是汗流浹背土匀。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留扯饶,地道東北人恒削。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓池颈,卻偏偏與公主長得像尾序,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子躯砰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容