后臺(tái)系統(tǒng)架構(gòu)設(shè)計(jì)-商務(wù)咨詢(xún)系統(tǒng)
本文為以業(yè)務(wù)邏輯層、數(shù)據(jù)底層、表現(xiàn)層這三個(gè)方面作為思維模型,進(jìn)行思考并打造了一款從0到1的后臺(tái)系統(tǒng)。
作為后端產(chǎn)品經(jīng)理,刻意練習(xí)系統(tǒng)架構(gòu)設(shè)計(jì)的能力和對(duì)業(yè)務(wù)充分了解的能力,個(gè)人覺(jué)得,顯得尤為重要。此文我只關(guān)注這兩點(diǎn),至于原型那些表現(xiàn)層的內(nèi)容,不在此文范圍。
文中我將通過(guò)M V C技術(shù)架構(gòu)(我的思維模型)去思考如何打造一款從0到1的后臺(tái)系統(tǒng)。商務(wù)咨詢(xún)系統(tǒng),是我負(fù)責(zé)的一個(gè)業(yè)務(wù)不算特別復(fù)雜的系統(tǒng),以此為例,咱們層層剝離,探尋萬(wàn)事萬(wàn)物的本質(zhì)。
目錄
(1)需求背景
(2)系統(tǒng)價(jià)值
(3)系統(tǒng)設(shè)計(jì)
- 第一步:用例圖
- 第二步:系統(tǒng)流程圖
- 第三步:系統(tǒng)功能清單
- 第四步:系統(tǒng)架構(gòu)設(shè)計(jì)
- 第五步:數(shù)據(jù)庫(kù)表結(jié)構(gòu)(對(duì)象)
- 第六步:表之間的關(guān)聯(lián)關(guān)系(ER圖)
C:業(yè)務(wù)邏輯層
(1)需求背景
全國(guó)各分公司的商務(wù)的同事剛來(lái)公司沒(méi)多久,對(duì)很多業(yè)務(wù)以及同事都不是很熟悉,出去談業(yè)務(wù)的時(shí)候,經(jīng)常會(huì)遇到很多比較棘手的問(wèn)題,也會(huì)提出很多無(wú)規(guī)則你根本想不到的問(wèn)題。
打開(kāi)釘釘,龐大的組織架構(gòu),一堆又一堆的釘釘群,根本不知道找哪些專(zhuān)業(yè)人士解答疑惑。
將自己的問(wèn)題,丟到幾百人的后臺(tái)服務(wù)支持群,結(jié)果很快被其他人的問(wèn)題給淹沒(méi),不知道找誰(shuí)提問(wèn),不知道在哪里提問(wèn),好不容易找到個(gè)熱心的同事,結(jié)果答非所問(wèn),浪費(fèi)時(shí)間。
不知道該在哪里提問(wèn)?不知道找誰(shuí)問(wèn)?沒(méi)有人回復(fù)?找不到之前的問(wèn)題解答記錄?公司系統(tǒng)的各種問(wèn)題,沒(méi)地方提出改進(jìn)建議?
(2)系統(tǒng)價(jià)值
- 快速解決商務(wù)同事日常業(yè)務(wù)問(wèn)題
- 提升后臺(tái)支持人員處理問(wèn)題效率
- 統(tǒng)一提問(wèn)入口
- 隨時(shí)查看問(wèn)題進(jìn)度
(3)系統(tǒng)設(shè)計(jì)
PS:考慮到文中涉及到很多公司內(nèi)部數(shù)據(jù),不得已才打上馬賽克,但不影響此文我想表達(dá)的架構(gòu)設(shè)計(jì)方法,各位看官見(jiàn)諒。
第一步:用例圖
說(shuō)明:設(shè)計(jì)任何一個(gè)系統(tǒng),首先必須搞清楚有哪些參與者,這些參與者都能在系統(tǒng)里做什么,都有什么功能。
第二步:系統(tǒng)流程圖
說(shuō)明:其次,必須搞清楚這些參與者在系統(tǒng)中是如何操作的,先后順序是怎樣的,有什么判斷情況,有哪些逆向流程等等。而且畫(huà)流程圖,建議千萬(wàn)別一口吃成一個(gè)胖子,要循序漸進(jìn)。
建議按照以下步驟,一點(diǎn)一點(diǎn)從簡(jiǎn)入手:
業(yè)務(wù)流程圖-頁(yè)面流程圖-功能流程圖-數(shù)據(jù)流程圖
2.1 業(yè)務(wù)流程圖
說(shuō)明:凡事,先從簡(jiǎn)入手,先把當(dāng)前系統(tǒng)的流程枝干搭建起來(lái),主要流程確定下來(lái),清晰明了地告知所有人:你這個(gè)系統(tǒng)在干嘛、要干嘛。其他的枝枝葉葉,先全部去掉,不要影響你的思維,不要打擾你的思路。
2.2 頁(yè)面流程圖
說(shuō)明:主干就像房子的地基,搭好地基之后,就要開(kāi)始建房子了。具體有哪些頁(yè)面、頁(yè)面之間如何調(diào)整,就要開(kāi)始想清楚啦。此時(shí),先過(guò)濾掉所有判斷條件,所有逆向流程,先跑通所有頁(yè)面,先跑通正向流程。
2.3 功能流程圖
說(shuō)明:地基建好了,毛坯房也建好了,具體房子怎么設(shè)計(jì),得開(kāi)始啦。此時(shí),每往下走一步,盡量多問(wèn)自己幾個(gè)為什么。為什么要這樣做?不這樣做可不可以?
附件1:?jiǎn)栴}狀態(tài)流轉(zhuǎn)圖
說(shuō)明:此系統(tǒng),問(wèn)題的狀態(tài)流轉(zhuǎn),比較關(guān)鍵,所以用流程圖清晰的表明出來(lái)是很有必要的,當(dāng)前最小MVP做的好不好,關(guān)鍵在于問(wèn)題狀態(tài)的流轉(zhuǎn),以及問(wèn)題狀態(tài)改變后所有影響情況的考慮。
附件2:?jiǎn)栴}時(shí)效規(guī)則設(shè)置
說(shuō)明:?jiǎn)栴}被人提出來(lái)了,什么時(shí)候通知給處理人,處理人多久沒(méi)處理問(wèn)題會(huì)超時(shí)再次提醒,處理人回答完問(wèn)題,發(fā)問(wèn)人多久不給出評(píng)價(jià)后,問(wèn)題自動(dòng)結(jié)束狀態(tài)改為已處理等等。問(wèn)題的時(shí)效控制,也是增強(qiáng)系統(tǒng)體驗(yàn)的一個(gè)重要信息,主要用于消息提醒的觸發(fā)和問(wèn)題狀態(tài)的改變。
第三步:系統(tǒng)功能清單
說(shuō)明:當(dāng)前系統(tǒng)當(dāng)前版本,總共要做哪些功能,要列出來(lái),告知項(xiàng)目組所有成員,并排好優(yōu)先級(jí)。
第四步:系統(tǒng)架構(gòu)設(shè)計(jì)
說(shuō)明:首先,要想清楚,系統(tǒng)是否要?jiǎng)澐智昂笈_(tái)。一般后臺(tái)系統(tǒng)是不需要前臺(tái)頁(yè)面,直接PC端訪問(wèn)即可。
但是,此系統(tǒng)是針對(duì)商務(wù)設(shè)計(jì)的,那么必須考慮其在外辦公的便利性,部分重要解決其問(wèn)題的功能,做成wap網(wǎng)頁(yè)嵌套在釘釘中或者單獨(dú)開(kāi)發(fā)小程序、APP原生頁(yè)面就很有必要。載體不重要,重要的是商務(wù)使用順暢,簡(jiǎn)單方便易操作。
4.1 前臺(tái)架構(gòu)
說(shuō)明:當(dāng)前系統(tǒng),牽涉的外部系統(tǒng)不多,所以架構(gòu)不復(fù)雜。
4.2 后臺(tái)架構(gòu)
說(shuō)明:從角色權(quán)限分配可以看出,當(dāng)前系統(tǒng)會(huì)調(diào)用人員組織系統(tǒng)的外部接口,來(lái)獲取公司的所有人員以及所屬部門(mén)。
M:數(shù)據(jù)結(jié)構(gòu)層
第五步:數(shù)據(jù)庫(kù)表結(jié)構(gòu)概念設(shè)計(jì)
說(shuō)明:依稀記得《java編程思想》中有段話,萬(wàn)物皆對(duì)象。世間萬(wàn)事萬(wàn)物,皆為對(duì)象,很強(qiáng)大,也很有道理。數(shù)據(jù)庫(kù)表結(jié)構(gòu),就是對(duì)象在程序語(yǔ)言的體現(xiàn)。咱們做系統(tǒng)設(shè)計(jì),追蹤到數(shù)據(jù)底層,就是一個(gè)又一個(gè)對(duì)象,以及對(duì)象之間的關(guān)系(ER圖)。
其實(shí),將功能拆解為對(duì)象并將之表象為數(shù)據(jù)庫(kù),并不復(fù)雜,沒(méi)那么玄乎,是有根可循的。舉個(gè)例子,咱們通篇都在講發(fā)起問(wèn)題,處理問(wèn)題。
那問(wèn)題很明顯就是一個(gè)對(duì)象,發(fā)起和處理,只是他的動(dòng)作(技術(shù)語(yǔ)言叫方法,這里我說(shuō)的大白話一點(diǎn)),并不能稱(chēng)之為一個(gè)對(duì)象。以此類(lèi)推,數(shù)據(jù)表結(jié)構(gòu)也就揭開(kāi)迷霧啦。
PS:數(shù)據(jù)庫(kù)表,對(duì)于產(chǎn)品經(jīng)理,不是必備技能,個(gè)人認(rèn)為會(huì)畫(huà)的產(chǎn)品,并且時(shí)間充裕那就畫(huà)一下(畫(huà)出來(lái),可以讓你思路更加清晰明了,OMG,原來(lái)我的系統(tǒng)就是這幾張表在發(fā)揮作用,太牛逼了,技術(shù)大哥們),不會(huì)并不影響你系統(tǒng)架構(gòu)的設(shè)計(jì)。這些是編程小哥哥小姐姐們的看家本領(lǐng),咱們做產(chǎn)品的了解就好,不強(qiáng)求。我畫(huà)出來(lái),是因?yàn)?,突然心血?lái)潮,就隨便畫(huà)了一下。
第六步:表之間的關(guān)聯(lián)關(guān)系(ER圖)
說(shuō)明:表之間的關(guān)聯(lián)關(guān)系有什么用?可以有一個(gè)連帶關(guān)系,舉個(gè)例子,一個(gè)用戶(hù)表,一個(gè)信息表,一個(gè)用戶(hù)對(duì)應(yīng)多條信息,當(dāng)你刪除用戶(hù)的時(shí)候是不是這個(gè)用戶(hù)的信息也要被刪除,如果沒(méi)有關(guān)聯(lián)關(guān)系的話,你就要在刪除用戶(hù)前手工寫(xiě)條SQL語(yǔ)句去刪除信息表里的對(duì)應(yīng)信息,如果有關(guān)聯(lián)的話,就不用了,級(jí)聯(lián)刪除就可以了,只要?jiǎng)h除用戶(hù),這個(gè)用戶(hù)下面的信息也就沒(méi)了。
表之間的關(guān)系有四種【一對(duì)一、一對(duì)多、多對(duì)一、多對(duì)多】,那么是如何判斷的呢?這里,我只講方法,不講細(xì)節(jié)。6張表,兩兩相關(guān)聯(lián)作比較。比如:一個(gè)問(wèn)題對(duì)應(yīng)一個(gè)問(wèn)題分類(lèi),一個(gè)問(wèn)題分類(lèi)對(duì)應(yīng)多個(gè)問(wèn)題,表明問(wèn)題表與問(wèn)題分類(lèi)表是1對(duì)多的關(guān)聯(lián)關(guān)系;一個(gè)問(wèn)題對(duì)應(yīng)多個(gè)問(wèn)題狀態(tài),一個(gè)問(wèn)題狀態(tài)對(duì)應(yīng)多個(gè)問(wèn)題,表明問(wèn)題表與問(wèn)題狀態(tài)表是多對(duì)多的關(guān)聯(lián)關(guān)系。
再?gòu)?fù)雜再龐大的業(yè)務(wù)系統(tǒng),只要功夫深,經(jīng)過(guò)咱們層層剝離,無(wú)非就是一個(gè)又一個(gè)光禿禿的數(shù)據(jù)表結(jié)構(gòu),是不是很好玩,是不是很有趣,不妨使用我本文提到的方法順序,去剝離一個(gè)系統(tǒng)試試,你會(huì)有驚喜的喲!
V:表現(xiàn)層
表現(xiàn)層,也就是咱們做產(chǎn)品的基本功,將構(gòu)思好的系統(tǒng)用圖形化的界面表象出來(lái),給項(xiàng)目組所有成員評(píng)審,這點(diǎn)不是此文的重點(diǎn),我不過(guò)多闡述。
總結(jié):當(dāng)前系統(tǒng),只實(shí)現(xiàn)了最小可行性MVP,解決當(dāng)下核心問(wèn)題。未來(lái)的規(guī)劃,是想將本系統(tǒng)打造成商務(wù)智能咨詢(xún)系統(tǒng)。實(shí)現(xiàn)系統(tǒng)能通過(guò)問(wèn)題庫(kù),自動(dòng)解決80%商務(wù)日常提出的問(wèn)題,20%人工介入。
作者:會(huì)飛的豬能上樹(shù),微信公眾號(hào):刻意練習(xí)產(chǎn)品經(jīng)理(ID:kylxpm520)
本文由 @會(huì)飛的豬能上樹(shù) 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash, 基于CC0協(xié)議
思路可以借鑒一下,不錯(cuò)
謝謝認(rèn)可
為什么前臺(tái)還要處理問(wèn)題?不是只是提問(wèn)嘛?
業(yè)務(wù)方想在手機(jī)端直接處理問(wèn)題,有時(shí)候在外面開(kāi)會(huì)
差點(diǎn)就把全篇都馬賽克了
沒(méi)辦法,被人舉報(bào)了我,理解思路就好,案例就別細(xì)看了