事件風(fēng)暴建模101

之前文章提到了對(duì)項(xiàng)目中使用MongoDB的思考肢础,里面寫(xiě)了一些由于數(shù)據(jù)庫(kù)導(dǎo)致了項(xiàng)目中領(lǐng)域模型設(shè)計(jì)的問(wèn)題音瓷,有必要采用DDD的方法和相關(guān)實(shí)踐對(duì)項(xiàng)目進(jìn)行領(lǐng)域建模和梳理姓迅。馬上般甲,下個(gè)月要去客戶現(xiàn)場(chǎng)做工作坊肋乍,如何設(shè)計(jì)好工作坊, 通過(guò)良好的引導(dǎo)幫助我們與客戶順暢協(xié)作,全面地梳理業(yè)務(wù)概念敷存,并基于業(yè)務(wù)概念進(jìn)行抽象和聚合住拭,完成領(lǐng)域建模和域劃分是這次工作坊的主要內(nèi)容之一。那么在去之前,很有必要回顧一下事件風(fēng)暴的建模方法論滔岳,為工作坊順利完成做好準(zhǔn)備杠娱。

什么是事件風(fēng)暴?

EventStorming是一種用于復(fù)雜業(yè)務(wù)領(lǐng)域協(xié)作探索的靈活工作坊模式谱煤。它可以按照不同的形式開(kāi)展摊求,并適用于以下場(chǎng)景:

評(píng)估現(xiàn)有業(yè)務(wù)運(yùn)行狀況和發(fā)現(xiàn)有效提升業(yè)務(wù)狀況的措施

探索新創(chuàng)業(yè)務(wù)模型的可行性

設(shè)想新的服務(wù),最大限度地提高每個(gè)參與方的積極成果

幫助設(shè)計(jì)整潔可維護(hù)的事件驅(qū)動(dòng)軟件來(lái)支撐迅速發(fā)展的業(yè)務(wù)

事件風(fēng)暴建模過(guò)程

通常事件風(fēng)暴工作坊需要熟悉熟悉方法論的主持人引導(dǎo)刘离,業(yè)務(wù)顧問(wèn)和技術(shù)顧問(wèn)以及客戶熟悉業(yè)務(wù)的領(lǐng)域?qū)<液褪煜は到y(tǒng)的技術(shù)專(zhuān)家一起參與室叉。工作坊在一個(gè)開(kāi)放空間開(kāi)展,需要有足夠長(zhǎng)的墻來(lái)貼上白紙方便所有參與者按業(yè)務(wù)的時(shí)間順序貼上建模需要的關(guān)鍵信息硫惕,足夠的便利貼和事件風(fēng)暴建模方法中關(guān)鍵要點(diǎn)的指導(dǎo)說(shuō)明茧痕。這些信息將作為領(lǐng)域建模的重要輸入。

工作坊空間

工作坊由添加領(lǐng)域事件開(kāi)始恼除,領(lǐng)域事件一般用橘色的便利貼表示踪旷,書(shū)寫(xiě)領(lǐng)域?qū)嵺`的規(guī)則是使用被動(dòng)語(yǔ)態(tài),并按照時(shí)間順序貼在白紙上豁辉。剛開(kāi)始令野,一些參與者對(duì)具體怎么寫(xiě)事件便利貼還是會(huì)有疑惑,這時(shí)可以關(guān)注一些行動(dòng)更快的參與者徽级,將他們作為模板气破,這時(shí)其它參與者會(huì)迅速的開(kāi)始模仿,這時(shí)我們可以讓大家快速的進(jìn)入狀態(tài)餐抢。在大家的討論中现使,我們也會(huì)發(fā)現(xiàn)大家可能也只了解局部,這個(gè)工作坊也是第一次將各個(gè)局部信息組織到一起旷痕,也有人描述出領(lǐng)域事件但是也不了解背后的細(xì)節(jié)碳锈,或者給出“流程總是阻塞在這里”之類(lèi)的描述。這些信息也很關(guān)鍵苦蒿,我們也需要將其記錄下來(lái)殴胧,為我們?nèi)媪私鈽I(yè)務(wù)模型提供更多的細(xì)節(jié)渗稍,通常我們用紫色的便利貼記錄這類(lèi)信息佩迟,并將其與領(lǐng)域?qū)嵺`關(guān)聯(lián)起來(lái)。對(duì)于疑問(wèn)和告警比較集中的領(lǐng)域事件竿屹,也會(huì)是后續(xù)需要重點(diǎn)優(yōu)化的部分报强。

記錄所有的警告、討論和疑問(wèn)

在工作坊中拱燃,我們會(huì)聽(tīng)到一些客戶的領(lǐng)域/技術(shù)專(zhuān)家談到某處秉溉,會(huì)發(fā)散開(kāi)來(lái)提到一些很有洞見(jiàn)的觀點(diǎn)和我們不曾預(yù)料到的領(lǐng)域復(fù)雜性,每當(dāng)這些話題出現(xiàn)時(shí),也會(huì)使用便于區(qū)分的便利貼來(lái)記錄這些上下文召嘶。這些上下文不需要刨根問(wèn)底父晶,只需要準(zhǔn)確的描述當(dāng)時(shí)的對(duì)話中的內(nèi)容即可。很多時(shí)候弄跌,這些對(duì)話會(huì)以開(kāi)放式的問(wèn)題結(jié)束甲喝,這也問(wèn)后續(xù)進(jìn)一步的討論提供了方向。

隨著我們對(duì)業(yè)務(wù)認(rèn)識(shí)的不斷加深铛只,可以隨時(shí)回顧和總結(jié)之前添加的內(nèi)容埠胖,對(duì)于有問(wèn)題的描述進(jìn)行更正,對(duì)于表述不清楚的內(nèi)容可以進(jìn)行重寫(xiě)淳玩。

在收集完領(lǐng)域?qū)ο笾笾背罚覀兛梢赃M(jìn)一步開(kāi)始探索系統(tǒng)核心事件的運(yùn)行機(jī)制。這時(shí)我們?cè)谥暗念I(lǐng)域事件的基礎(chǔ)上加入指令和角色的概念蜕着。指令代表系統(tǒng)中用戶的意圖谋竖、動(dòng)作和決定,一般用藍(lán)色的便利貼表示侮东;角色表一類(lèi)特定用戶圈盔,一般用黃色便利貼表示。它們之間的關(guān)系是“角色”發(fā)送“指令”產(chǎn)生了“領(lǐng)域事件”(指令也可由外部系統(tǒng)觸發(fā)悄雅,外部系統(tǒng)通常用粉色的便利貼表示)驱敲。

用戶發(fā)送指令產(chǎn)生領(lǐng)域事件

在加入指令和角色后,會(huì)觸發(fā)更多關(guān)于為什么用戶會(huì)產(chǎn)生這個(gè)操作的討論宽闲。關(guān)于指令和角色有意思的是众眨,指令作為用戶決定的結(jié)果,當(dāng)我們?cè)谒伎际鞘裁丛驅(qū)е掠脩糇鲞@個(gè)決定時(shí)容诬,我們會(huì)產(chǎn)生類(lèi)似“能讓用戶更容易的作出決定嗎娩梨?”,“能幫助用戶作出更好的決定嗎览徒?”的問(wèn)題狈定。這些問(wèn)題將幫助我們思考與用戶做決定相關(guān)的數(shù)據(jù)模型。這時(shí)习蓬,我們會(huì)將這類(lèi)數(shù)據(jù)模型記錄在綠色的便利貼上纽什。

讀模型-視圖

更有意思的是,在探究用戶作出決定的動(dòng)機(jī)時(shí)躲叼,我們會(huì)發(fā)現(xiàn)同類(lèi)型角色的用戶并不相同芦缰。即使做出了相同的決定,背后的動(dòng)機(jī)也會(huì)有很大區(qū)別枫慷。隨著討論的深入让蕾,我們會(huì)用一組更加貼切的用戶畫(huà)像來(lái)表示角色浪规,這也幫助我們?cè)跇?gòu)建MVP時(shí)更有效的捕獲用戶角色。隨著我們更深入的了解領(lǐng)域事件的內(nèi)部機(jī)制探孝,我們也會(huì)越來(lái)越多的討論到領(lǐng)域事件發(fā)生后引起的系統(tǒng)變化笋婿。這種變化通常通過(guò)“當(dāng)...發(fā)生時(shí)...”的句式描述出來(lái),比如“當(dāng)用戶通過(guò)新的設(shè)備登入時(shí)顿颅,系統(tǒng)會(huì)發(fā)送提醒通知”萌抵。通常,我們將這種系統(tǒng)的行為邏輯稱為策略,通常記錄在紫丁香色的便利貼上元镀。

不論是手動(dòng)或者自動(dòng)的行為邏輯绍填,都是系統(tǒng)策略

在一個(gè)將要新創(chuàng)建的系統(tǒng)中,越早捕獲這些策略對(duì)構(gòu)建系統(tǒng)越有利栖疑,因?yàn)樗鼈兛梢詭臀覀儽苊庖蕾嚰僭O(shè)而實(shí)現(xiàn)系統(tǒng)讨永。當(dāng)我們收集完業(yè)務(wù)中相關(guān)的信息之后,這時(shí)也是業(yè)務(wù)中關(guān)鍵聚合涌現(xiàn)之時(shí)遇革。我們把跟一個(gè)概念相同的指令和事件集合到一起卿闹,并用黃色的較大的便利貼表示:

現(xiàn)在我們有了事件,指令萝快,角色锻霎,視圖,策略和聚合的概念揪漩,它們之間的關(guān)系總結(jié)起來(lái)如下圖的關(guān)系所示:

事件風(fēng)暴中概念之間的關(guān)系t

事件風(fēng)暴建模的技巧

在收集領(lǐng)域事件的過(guò)程中旋恼,由于參與方眾多,一開(kāi)始大家寫(xiě)的領(lǐng)域事件會(huì)比較發(fā)散奄容,也有很多類(lèi)似的描述冰更。前期我們需要抑制內(nèi)心想要統(tǒng)一它們的想法,因?yàn)椴煌谋磉_(dá)背后可能意味著大家不同的理解昂勒,我們可以做的是把相關(guān)的事件放在一起蜀细,一遍后續(xù)進(jìn)一步分析。為了方便按照時(shí)間去組織, 我們可以在眾多事件中戈盈,找到一些大家沒(méi)有分歧的關(guān)鍵事件奠衔,然后給予關(guān)鍵事件來(lái)做參照,然后在關(guān)鍵事件標(biāo)記的范圍里塘娶,按照不同的組織和上下文來(lái)組織領(lǐng)域事件归斤。

挑選關(guān)鍵事件

在對(duì)領(lǐng)域事件進(jìn)行分類(lèi)時(shí),由于事件之間有不同的邏輯關(guān)系血柳,可能需要對(duì)不同事件段內(nèi)的事件進(jìn)行分類(lèi)官册。分組能讓我們?cè)谂帕袝r(shí)的邏輯更清晰生兆,也方便我們對(duì)事件的上下文進(jìn)行劃分难捌。最后膝宁,基于關(guān)鍵事件的領(lǐng)域事件分組會(huì)形成下圖的結(jié)構(gòu):

基于關(guān)鍵事件的事件流

通過(guò)時(shí)間線,我們可以更好的與眾多的業(yè)務(wù)人員和領(lǐng)域?qū)<疫M(jìn)行協(xié)同根吁,發(fā)掘領(lǐng)域事件员淫。但當(dāng)我們尋找聚合時(shí),由于聚合是對(duì)業(yè)務(wù)規(guī)則的封裝击敌,保證數(shù)據(jù)的一致性介返,它會(huì)跨越領(lǐng)域事件的時(shí)間線。

結(jié)語(yǔ)

事件風(fēng)暴建模沒(méi)有固定的過(guò)程沃斤,它是根據(jù)具體情況而裁減的圣蝎。通過(guò)事件風(fēng)暴建模方法,能更好的引導(dǎo)我們與業(yè)務(wù)人員和領(lǐng)域?qū)<液献骱馄浚ㄟ^(guò)激發(fā)他們發(fā)表不同的觀點(diǎn)和協(xié)調(diào)他們之間的沖突徘公,幫助我們了解復(fù)雜業(yè)務(wù)的全景,更準(zhǔn)確的建立業(yè)務(wù)模型哮针。建模方法中的概念有限关面,但是通過(guò)這些概念,怎么能更好的挖掘描繪出業(yè)務(wù)模型是需要在不斷的實(shí)踐中學(xué)習(xí)和提升的十厢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末等太,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蛮放,更是在濱河造成了極大的恐慌缩抡,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件包颁,死亡現(xiàn)場(chǎng)離奇詭異缝其,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)徘六,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)内边,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人待锈,你說(shuō)我怎么就攤上這事漠其。” “怎么了竿音?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵和屎,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我春瞬,道長(zhǎng)柴信,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任宽气,我火速辦了婚禮随常,結(jié)果婚禮上潜沦,老公的妹妹穿的比我還像新娘。我一直安慰自己绪氛,他們只是感情好唆鸡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著枣察,像睡著了一般争占。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上序目,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天臂痕,我揣著相機(jī)與錄音,去河邊找鬼猿涨。 笑死刻蟹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嘿辟。 我是一名探鬼主播舆瘪,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼红伦!你這毒婦竟也來(lái)了英古?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤昙读,失蹤者是張志新(化名)和其女友劉穎召调,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蛮浑,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唠叛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沮稚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艺沼。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蕴掏,靈堂內(nèi)的尸體忽然破棺而出障般,到底是詐尸還是另有隱情,我是刑警寧澤盛杰,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布挽荡,位于F島的核電站,受9級(jí)特大地震影響即供,放射性物質(zhì)發(fā)生泄漏定拟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一逗嫡、第九天 我趴在偏房一處隱蔽的房頂上張望青自。 院中可真熱鬧株依,春花似錦、人聲如沸性穿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)需曾。三九已至,卻和暖如春祈远,著一層夾襖步出監(jiān)牢的瞬間呆万,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工车份, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谋减,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓扫沼,卻偏偏與公主長(zhǎng)得像出爹,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缎除,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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