1.引言
在開(kāi)始之前,我想我們有必要先了解以下DDD的主要參與者。因?yàn)楫吘拐Z(yǔ)言是人說(shuō)的嗎,就像我們面向?qū)ο缶幊桃粯?,那通用語(yǔ)言面向的是?
DDD的主要參與者:領(lǐng)域?qū)<?開(kāi)發(fā)人員
領(lǐng)域?qū)<遥壕I(yè)務(wù)的任何人。
開(kāi)發(fā)人員:開(kāi)發(fā)+測(cè)試。
領(lǐng)域?qū)<疑瞄L(zhǎng)某個(gè)領(lǐng)域的知識(shí),專注于交付的業(yè)務(wù)價(jià)值。
開(kāi)發(fā)人員則注重于技術(shù)實(shí)現(xiàn)。
開(kāi)發(fā)人員總是想著類、接口、方法、設(shè)計(jì)模式、架構(gòu)等。以面向?qū)ο蟮木幊趟枷脒M(jìn)行思考,思考如何進(jìn)行抽象、封裝、繼承、多態(tài)等。而領(lǐng)域?qū)<覍?duì)軟件中的框架、持久化、數(shù)據(jù)庫(kù)等沒(méi)有概念,而這也就導(dǎo)致了他們之間交流的困難性。
那怎么解決交流障礙這個(gè)問(wèn)題呢?
2. 通用語(yǔ)言
拋開(kāi)DDD而言,單從字面意思來(lái)理解,我們首先肯定先聯(lián)想到作為世界使用最多的語(yǔ)言--英語(yǔ)。
英語(yǔ)之所以能成為通用語(yǔ)言,我想無(wú)非是以下幾方面:
簡(jiǎn)單易學(xué)
使用率高
國(guó)際通用
那DDD中通用語(yǔ)言又是怎樣呢?
首先它也同樣要擁有【簡(jiǎn)單】的特性,這樣才便于理解和傳播。
其次,它也要有【通用】、【使用率高】的特性,因?yàn)橹挥性谲浖_(kāi)發(fā)的過(guò)程中,團(tuán)隊(duì)范圍內(nèi)所有的參與人員廣泛使用,才能準(zhǔn)確傳遞業(yè)務(wù)規(guī)則。
通用語(yǔ)言是團(tuán)隊(duì)交流的基礎(chǔ)上建立起來(lái)的,代碼則是基于通用語(yǔ)言來(lái)進(jìn)行業(yè)務(wù)表達(dá)的。
3. 舉個(gè)例子
項(xiàng)目經(jīng)理安排了一項(xiàng)任務(wù)給我:
圣杰這個(gè)補(bǔ)丁處理下【可銷控制】這個(gè)需求。
聽(tīng)后,真是一臉懵逼,【可銷控制】是什么鬼?
這明顯是專業(yè)術(shù)語(yǔ),我不懂的專業(yè)術(shù)語(yǔ)。
按照DDD對(duì)通用語(yǔ)言的定義,【可銷控制】就不算通用語(yǔ)言。
因?yàn)橹挥蓄I(lǐng)域?qū)<抑浪暮x,開(kāi)發(fā)人員一臉茫然。
但通用語(yǔ)言是領(lǐng)域?qū)<液烷_(kāi)發(fā)人員一起創(chuàng)建的,所以我們開(kāi)個(gè)需求會(huì)議,來(lái)梳理下專業(yè)術(shù)語(yǔ)背后的含義。
可銷控制的應(yīng)用場(chǎng)景是:
在ERP中,在做單時(shí)對(duì)銷售員負(fù)責(zé)的客戶進(jìn)行范圍控制。比如,A客戶是銷售員小李發(fā)展過(guò)來(lái)的,小李希望僅能自己負(fù)責(zé)對(duì)A客戶的業(yè)務(wù)。
這么一解釋,是不是明白不少了。但是不是還有幾點(diǎn)疑惑?
可銷范圍如何配置?
做什么單據(jù)時(shí)進(jìn)行可銷范圍控制?
如何進(jìn)行可銷控制?
可銷控制需不需要參數(shù)控制?
經(jīng)過(guò)討論,得出以下結(jié)論:
提供專門的【銷售員-客戶可銷控制】界面進(jìn)行銷售員-客戶映射數(shù)據(jù)配置。
做銷售訂單單據(jù)時(shí)進(jìn)行可銷范圍控制
在錄入銷售員后,做單員在選擇客戶列表時(shí),客戶列表中僅顯示可銷范圍配置的客戶數(shù)據(jù)。
提供【銷售員-客戶可銷范圍控制】系統(tǒng)參數(shù),勾選后才進(jìn)行可銷范圍控制。