為什么寫這篇文章?
寫這篇文章的目的有兩個:一個原因是,由于最近將近兩年都在接觸大型的系統(tǒng),我有幸作為一個軟件實施方的一員,接觸并了解了幾個大型的項目,并自己也主·導設計了兩款軟件系統(tǒng),我對于軟件的后臺設計有了一定程度的了解,有能力闡述清楚這個問題。另外一個原因是,曾經(jīng)我作為一個軟件小白,想要在網(wǎng)上找到相應的資料,發(fā)現(xiàn),大部分的文章都來自與開發(fā)人員,他們偏向于從技術(shù)層面進行闡述,讀起來晦澀難懂,很少從業(yè)務和原理上進行闡述,還有一部分文章闡述的層面較為淺顯,淺嘗輒止,并沒有從整體到部分進行完整的闡述,我這篇文章力求簡單明了,完整全面,任何人都通俗易懂。
系統(tǒng)后臺一般包括哪些內(nèi)容,有什么用處?
系統(tǒng)后臺一般是管理者進行系統(tǒng)管理的一個模塊。根據(jù)軟件的不同用途,其管理的內(nèi)容各不相同。舉個簡單的例子:今日頭條、騰訊視頻、頭條號等內(nèi)容平臺,一般其后臺都會有內(nèi)容審核功能,用戶賬號管理、權(quán)限分配等等。GUC用戶發(fā)布一篇文章,后臺進行審核,通過后,方可進行展示。
我今天所闡述的系統(tǒng)后臺,指的是更為核心的東西,是一個系統(tǒng)的心臟。指的是權(quán)限數(shù)據(jù)管理,這一個部分的設計最為復雜也是系統(tǒng)設計最難最基礎的部門。
權(quán)限包括兩個部分:一個是操作權(quán)限,一個是數(shù)據(jù)權(quán)限。?
操作權(quán)限又包括兩個部分:一個是菜單權(quán)限,另外一個是按鈕權(quán)限。
菜單權(quán)限。舉個例子來說:我們使用同一個辦公軟件系統(tǒng),你是HR,你有招聘模塊的菜單,可以進行招聘相關(guān)的操作,我是財務,我有費用報銷模塊的菜單,而你沒有。這樣我們的菜單是不一定的。我們都可以使用辦公軟件,但是我們的職位不同,所以分配的菜單是不一樣的。
按鈕權(quán)限。舉個例子:我們兩個都是人資部門的人,你是招聘專員,我是人資經(jīng)理。我們雖然都有招聘菜單,但是你沒有招聘需求審批的按鈕,你沒有相應的權(quán)限操作,只有我可以進行招聘需求的審批。
數(shù)據(jù)權(quán)限,說起來就比較簡單容易理解了,比如拿快消行業(yè)來說,我是安徽區(qū)的省區(qū)經(jīng)理,你是江蘇大區(qū)的省區(qū)經(jīng)理,我們職位相同,我們都是省區(qū)經(jīng)理,我們擁有的操作權(quán)限也是一樣的,但是我們看到的數(shù)據(jù)是不一樣的,我是安徽的省區(qū)經(jīng)理,只能允許看到安徽省的銷售數(shù)據(jù),江蘇地區(qū)的銷售數(shù)據(jù)我是看不到的,同理,江蘇區(qū)的省區(qū)經(jīng)理也是一樣的。所有這些,都是可以通過數(shù)據(jù)權(quán)限進行控制的。
怎么進行權(quán)限的控制?
我主要介紹兩種常見的權(quán)限控制方法,也是比較常用的權(quán)限設計方式,一種是對于小型企業(yè)的,一般只有幾百人的那種,另外一種涉及到工作流的系統(tǒng)產(chǎn)品,人數(shù)眾多。兩種設計方式之外還會有許多的變種,這里就不一一說了。
第一種:用戶—角色—權(quán)限
用戶——角色的設計方式是最為簡單的設計方式。他的設計原理是:把操作權(quán)限分配給角色,如下圖1,這樣新增一個新的角色以后,就會給這個新增的角色分配相應的操作權(quán)限,包括操作按鈕和操作菜單。

上圖為某公司的新增角色頁面,從圖中可以看到,勾選相應的菜單和按鈕,則該角色就有用了菜單和按鈕的操作權(quán)限,沒有勾選,則沒有改權(quán)限。

通過部門賦予用戶數(shù)據(jù)權(quán)限,如圖2 。新建一個新的用戶時,必須要給這個用戶選擇一個權(quán)限角色,同時,在授權(quán)部門模塊,選擇其所屬的部門,部門就決定了其數(shù)據(jù)范圍。通過這兩個操作,一個新的用戶就具備了操作權(quán)限和數(shù)據(jù)權(quán)限。
第二種:用戶—職位—角色—權(quán)限
相比于第一種的權(quán)限設計方案,多用于小型系統(tǒng),沒有涉及到工作流的情況;第二種權(quán)限設計方案多應用于一些中大型系統(tǒng)中,如CRM系統(tǒng)、OA系統(tǒng)等等。第二種和第一種相比較,中間多了一層職位,設計思路也是不一樣的。
第二種設計思路如下:
角色控制操作權(quán)限,和第一種一樣,如果涉及到工作流,可以進行單獨定義工作流角色,也可以和權(quán)限角色相同,不進行單獨定義。

職位是增加的一層,職位與角色關(guān)聯(lián),也就是說,一個角色下面對應多個職位,一個職位只能對應一個角色,這樣職位就擁有了操作權(quán)限的屬性。同時,組織機構(gòu)與職位關(guān)聯(lián),組織機構(gòu)決定系統(tǒng)的數(shù)據(jù)權(quán)限。這樣職位就擁有了操作權(quán)限和數(shù)據(jù)權(quán)限。

最后在把職位掛到相應的用戶,這樣用戶在登錄該賬號時,就同時擁有操作權(quán)限和數(shù)據(jù)權(quán)限。

這里有一點需要說明,用戶和職位是一對一的關(guān)系,也就是說,一個蘿卜一個坑,不可以把一個職位掛給多個用戶。
這樣設計有什么好處呢?
舉個例子說吧:當一個員工離職了,采用第二種設計方式,只需要停用該員工的用戶賬號,把職位移除,如果新來一個員工替代他,只需要給新員工新建一個用戶賬號,同時把職位掛給他就OK了,不需要重新分配數(shù)據(jù)權(quán)限和操作權(quán)限。如果采用第一種設計方式:需要停用員工賬號,新來員工開通賬號需要重新分配數(shù)據(jù)權(quán)限。
再舉個例子吧:當兩個員工A和B進行跨部門職位調(diào)崗時,該怎么操作呢?第一種方式:A和B的職位去掉,同時對調(diào)就行或者把該部門空缺職位分配給A和B,不需要重新分配數(shù)據(jù)權(quán)限。第二種方式:A和B要同時進行數(shù)據(jù)權(quán)限的重新分配。
如果有考慮有工作流的情況,就需要考慮流程節(jié)點處理對象,可以按照工作流角色、職位和具體用戶三個維度進行配置,第二種可以很好地滿足,第一種就無法滿足,只能按照具體人來定義和角色來處理,當一個人調(diào)崗變動時,工作流審批節(jié)點可能也要進行調(diào)整,而第二種設計方式就不需要進行調(diào)整。
此外,對于,有相應人員編制的企業(yè)來說,可以保證職位的固定,只會有用戶的增減,職位可以始終保持不變,這樣編制就得以控制了。
綜上:如果是設計小型系統(tǒng)并且沒有涉及到工作流的情況,第一種設計方案:用戶—角色的權(quán)限設計方案比較簡單;如果是中大型的系統(tǒng)并且涉及到工作流的情況,則第二種設計方案:用戶—職位—角色 的設計方案比較好。