1.引言

在開始之前,我想我們有必要先了解以下DDD的主要參與者。因?yàn)楫吘拐Z言是人說的嗎,就像我們面向?qū)ο缶幊桃粯?,那通用語言面向的是?
DDD的主要參與者:領(lǐng)域?qū)<?開發(fā)人員
領(lǐng)域?qū)<遥壕I(yè)務(wù)的任何人。
開發(fā)人員:開發(fā)+測試。
領(lǐng)域?qū)<疑瞄L某個(gè)領(lǐng)域的知識,專注于交付的業(yè)務(wù)價(jià)值。
開發(fā)人員則注重于技術(shù)實(shí)現(xiàn)。
開發(fā)人員總是想著類、接口、方法、設(shè)計(jì)模式、架構(gòu)等。以面向?qū)ο蟮木幊趟枷脒M(jìn)行思考,思考如何進(jìn)行抽象、封裝、繼承、多態(tài)等。而領(lǐng)域?qū)<覍浖械目蚣堋⒊志没?shù)據(jù)庫等沒有概念,而這也就導(dǎo)致了他們之間交流的困難性。

那怎么解決交流障礙這個(gè)問題呢?

2. 通用語言

拋開DDD而言,單從字面意思來理解,我們首先肯定先聯(lián)想到作為世界使用最多的語言--英語。
英語之所以能成為通用語言,我想無非是以下幾方面:

  • 簡單易學(xué)

  • 使用率高

  • 國際通用

那DDD中通用語言又是怎樣呢?
首先它也同樣要擁有【簡單】的特性,這樣才便于理解和傳播。
其次,它也要有【通用】、【使用率高】的特性,因?yàn)橹挥性谲浖_發(fā)的過程中,團(tuán)隊(duì)范圍內(nèi)所有的參與人員廣泛使用,才能準(zhǔn)確傳遞業(yè)務(wù)規(guī)則。

通用語言是團(tuán)隊(duì)交流的基礎(chǔ)上建立起來的,代碼則是基于通用語言來進(jìn)行業(yè)務(wù)表達(dá)的。

3. 舉個(gè)例子

項(xiàng)目經(jīng)理安排了一項(xiàng)任務(wù)給我:
圣杰這個(gè)補(bǔ)丁處理下【可銷控制】這個(gè)需求。
聽后,真是一臉懵逼,【可銷控制】是什么鬼?

這明顯是專業(yè)術(shù)語,我不懂的專業(yè)術(shù)語。
按照DDD對通用語言的定義,【可銷控制】就不算通用語言。
因?yàn)橹挥蓄I(lǐng)域?qū)<抑浪暮x,開發(fā)人員一臉茫然。

但通用語言是領(lǐng)域?qū)<液烷_發(fā)人員一起創(chuàng)建的,所以我們開個(gè)需求會議,來梳理下專業(yè)術(shù)語背后的含義。

可銷控制的應(yīng)用場景是:
在ERP中,在做單時(shí)對銷售員負(fù)責(zé)的客戶進(jìn)行范圍控制。比如,A客戶是銷售員小李發(fā)展過來的,小李希望僅能自己負(fù)責(zé)對A客戶的業(yè)務(wù)。

這么一解釋,是不是明白不少了。但是不是還有幾點(diǎn)疑惑?

  • 可銷范圍如何配置?

  • 做什么單據(jù)時(shí)進(jìn)行可銷范圍控制?

  • 如何進(jìn)行可銷控制?

  • 可銷控制需不需要參數(shù)控制?

經(jīng)過討論,得出以下結(jié)論:

  • 提供專門的【銷售員-客戶可銷控制】界面進(jìn)行銷售員-客戶映射數(shù)據(jù)配置。

  • 做銷售訂單單據(jù)時(shí)進(jìn)行可銷范圍控制

  • 在錄入銷售員后,做單員在選擇客戶列表時(shí),客戶列表中僅顯示可銷范圍配置的客戶數(shù)據(jù)。

  • 提供【銷售員-客戶可銷范圍控制】系統(tǒng)參數(shù),勾選后才進(jìn)行可銷范圍控制。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式