為什么寫這篇文章惊橱?
寫這篇文章的目的有兩個:一個原因是,由于最近將近兩年都在接觸大型的系統(tǒng),我有幸作為一個軟件實施方的一員遍烦,接觸并了解了幾個大型的項目,并自己也主·導設計了兩款軟件系統(tǒng)躺枕,我對于軟件的后臺設計有了一定程度的了解服猪,有能力闡述清楚這個問題。另外一個原因是拐云,曾經我作為一個軟件小白罢猪,想要在網上找到相應的資料,發(fā)現叉瘩,大部分的文章都來自與開發(fā)人員膳帕,他們偏向于從技術層面進行闡述,讀起來晦澀難懂薇缅,很少從業(yè)務和原理上進行闡述危彩,還有一部分文章闡述的層面較為淺顯,淺嘗輒止泳桦,并沒有從整體到部分進行完整的闡述汤徽,我這篇文章力求簡單明了,完整全面灸撰,任何人都通俗易懂漆羔。
系統(tǒng)后臺一般包括哪些內容,有什么用處狱掂?
系統(tǒng)后臺一般是管理者進行系統(tǒng)管理的一個模塊演痒。根據軟件的不同用途,其管理的內容各不相同趋惨。舉個簡單的例子:今日頭條鸟顺、騰訊視頻、頭條號等內容平臺器虾,一般其后臺都會有內容審核功能讯嫂,用戶賬號管理、權限分配等等兆沙。GUC用戶發(fā)布一篇文章嵌屎,后臺進行審核泥从,通過后袋毙,方可進行展示此虑。
我今天所闡述的系統(tǒng)后臺,指的是更為核心的東西库正,是一個系統(tǒng)的心臟曲楚。指的是權限數據管理,這一個部分的設計最為復雜也是系統(tǒng)設計最難最基礎的部門褥符。
權限包括兩個部分:一個是操作權限龙誊,一個是數據權限。?
操作權限又包括兩個部分:一個是菜單權限喷楣,另外一個是按鈕權限趟大。
菜單權限。舉個例子來說:我們使用同一個辦公軟件系統(tǒng)铣焊,你是HR逊朽,你有招聘模塊的菜單,可以進行招聘相關的操作粗截,我是財務惋耙,我有費用報銷模塊的菜單捣炬,而你沒有熊昌。這樣我們的菜單是不一定的。我們都可以使用辦公軟件湿酸,但是我們的職位不同婿屹,所以分配的菜單是不一樣的。
按鈕權限推溃。舉個例子:我們兩個都是人資部門的人昂利,你是招聘專員,我是人資經理。我們雖然都有招聘菜單蜂奸,但是你沒有招聘需求審批的按鈕犁苏,你沒有相應的權限操作,只有我可以進行招聘需求的審批扩所。
數據權限围详,說起來就比較簡單容易理解了,比如拿快消行業(yè)來說祖屏,我是安徽區(qū)的省區(qū)經理助赞,你是江蘇大區(qū)的省區(qū)經理,我們職位相同袁勺,我們都是省區(qū)經理雹食,我們擁有的操作權限也是一樣的,但是我們看到的數據是不一樣的期丰,我是安徽的省區(qū)經理群叶,只能允許看到安徽省的銷售數據,江蘇地區(qū)的銷售數據我是看不到的钝荡,同理盖呼,江蘇區(qū)的省區(qū)經理也是一樣的。所有這些化撕,都是可以通過數據權限進行控制的几晤。
怎么進行權限的控制?
我主要介紹兩種常見的權限控制方法植阴,也是比較常用的權限設計方式蟹瘾,一種是對于小型企業(yè)的,一般只有幾百人的那種掠手,另外一種涉及到工作流的系統(tǒng)產品憾朴,人數眾多。兩種設計方式之外還會有許多的變種喷鸽,這里就不一一說了众雷。
第一種:用戶—角色—權限
用戶——角色的設計方式是最為簡單的設計方式。他的設計原理是:把操作權限分配給角色做祝,如下圖1砾省,這樣新增一個新的角色以后,就會給這個新增的角色分配相應的操作權限混槐,包括操作按鈕和操作菜單编兄。
上圖為某公司的新增角色頁面,從圖中可以看到声登,勾選相應的菜單和按鈕狠鸳,則該角色就有用了菜單和按鈕的操作權限揣苏,沒有勾選,則沒有改權限件舵。
通過部門賦予用戶數據權限卸察,如圖2 。新建一個新的用戶時铅祸,必須要給這個用戶選擇一個權限角色蛾派,同時,在授權部門模塊个少,選擇其所屬的部門洪乍,部門就決定了其數據范圍。通過這兩個操作夜焦,一個新的用戶就具備了操作權限和數據權限壳澳。
第二種:用戶—職位—角色—權限
相比于第一種的權限設計方案,多用于小型系統(tǒng)茫经,沒有涉及到工作流的情況巷波;第二種權限設計方案多應用于一些中大型系統(tǒng)中,如CRM系統(tǒng)卸伞、OA系統(tǒng)等等抹镊。第二種和第一種相比較,中間多了一層職位荤傲,設計思路也是不一樣的垮耳。
第二種設計思路如下:
角色控制操作權限,和第一種一樣遂黍,如果涉及到工作流终佛,可以進行單獨定義工作流角色,也可以和權限角色相同雾家,不進行單獨定義铃彰。
職位是增加的一層,職位與角色關聯(lián)芯咧,也就是說牙捉,一個角色下面對應多個職位,一個職位只能對應一個角色敬飒,這樣職位就擁有了操作權限的屬性邪铲。同時驶拱,組織機構與職位關聯(lián),組織機構決定系統(tǒng)的數據權限阴孟。這樣職位就擁有了操作權限和數據權限永丝。
最后在把職位掛到相應的用戶慕嚷,這樣用戶在登錄該賬號時毕泌,就同時擁有操作權限和數據權限撼泛。
這里有一點需要說明愿题,用戶和職位是一對一的關系潘酗,也就是說,一個蘿卜一個坑琐脏,不可以把一個職位掛給多個用戶缸兔。
這樣設計有什么好處呢?
舉個例子說吧:當一個員工離職了阅签,采用第二種設計方式蝎抽,只需要停用該員工的用戶賬號,把職位移除樟结,如果新來一個員工替代他,只需要給新員工新建一個用戶賬號碎连,同時把職位掛給他就OK了驮履,不需要重新分配數據權限和操作權限。如果采用第一種設計方式:需要停用員工賬號怠噪,新來員工開通賬號需要重新分配數據權限傍念。
再舉個例子吧:當兩個員工A和B進行跨部門職位調崗時憋槐,該怎么操作呢淑趾?第一種方式:A和B的職位去掉治笨,同時對調就行或者把該部門空缺職位分配給A和B旷赖,不需要重新分配數據權限。第二種方式:A和B要同時進行數據權限的重新分配稚照。
如果有考慮有工作流的情況,就需要考慮流程節(jié)點處理對象俯萌,可以按照工作流角色果录、職位和具體用戶三個維度進行配置咐熙,第二種可以很好地滿足,第一種就無法滿足棋恼,只能按照具體人來定義和角色來處理返弹,當一個人調崗變動時爪飘,工作流審批節(jié)點可能也要進行調整义起,而第二種設計方式就不需要進行調整。
此外师崎,對于默终,有相應人員編制的企業(yè)來說,可以保證職位的固定齐蔽,只會有用戶的增減肴熏,職位可以始終保持不變蛙吏,這樣編制就得以控制了鸦做。
綜上:如果是設計小型系統(tǒng)并且沒有涉及到工作流的情況,第一種設計方案:用戶—角色的權限設計方案比較簡單泼诱;如果是中大型的系統(tǒng)并且涉及到工作流的情況治筒,則第二種設計方案:用戶—職位—角色 的設計方案比較好。