朱軍紅 唐明根 張小玲
[摘 ? ?要] 各類軟件應(yīng)用系統(tǒng)幾乎都涉及系統(tǒng)應(yīng)用權(quán)限、系統(tǒng)用戶賬號處理問題,每開發(fā)一個應(yīng)用系統(tǒng)進(jìn)行一次重復(fù)性的勞動費(fèi)時費(fèi)力。文章文以系統(tǒng)管理各種概念的區(qū)別入手,在明確概念的前提下提出了一套通用系統(tǒng)管理的設(shè)計方案??蔀閼?yīng)用軟件系統(tǒng)開發(fā)團(tuán)隊提供有益的借鑒。
[關(guān)鍵詞] 系統(tǒng)管理;用戶;角色;崗位;組織機(jī)構(gòu);權(quán)限
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2019. 23. 059
[中圖分類號] TP315 ? ?[文獻(xiàn)標(biāo)識碼] ?A ? ? ?[文章編號] ?1673 - 0194(2019)23- 0138- 03
1 ? ? ?開發(fā)通用系統(tǒng)管理的意義
從Windows、Linux等操作系統(tǒng)到各類的應(yīng)用管理系統(tǒng),每個系統(tǒng)都需要處理系統(tǒng)權(quán)限與用戶賬戶問題。管理信息系統(tǒng)還需要處理組織機(jī)構(gòu)、人員、客戶等問題。定義一種適應(yīng)于各類系統(tǒng)的系統(tǒng)管理機(jī)制,開發(fā)成相對獨(dú)立的系統(tǒng),重復(fù)應(yīng)用在多個不同的系統(tǒng)中可以節(jié)約開發(fā)時間,提高開發(fā)效率,縮短軟件開發(fā)周期。提高軟件開發(fā)效益。
2 ? ? ?幾個容易混淆的概念
2.1 ? 人員與用戶
在信息系統(tǒng)建設(shè)過程中都存在人員與用戶的管理問題。
首先,有的系統(tǒng)每個企業(yè)成員都要登錄使用系統(tǒng),所有人員都是用戶。有的系統(tǒng)部分人員登錄使用系統(tǒng),只有部分人員才是用戶。其次,用戶信息與人員信息有相互重疊,可對系統(tǒng)分析設(shè)計人員造成迷惑。
以上兩種客觀事實的存在就給軟件開發(fā)者,尤其是缺乏經(jīng)驗的開發(fā)者帶來了混淆。在系統(tǒng)設(shè)計之初不能正確的處理兩者的關(guān)系,將二者混為一談用一張數(shù)據(jù)表存放信息,在后期的開發(fā)設(shè)計應(yīng)用中總感覺別扭不順手。其實人員信息是企業(yè)中需要統(tǒng)一規(guī)劃的一個基本信息,人員信息涉及企業(yè)各種管理活動,人員信息可以簡單到采用一張數(shù)據(jù)表存放,也可以復(fù)雜到采用人力資源管理系統(tǒng)進(jìn)行管理。不管企業(yè)規(guī)模的大小人員信息是一個實體,必須單獨(dú)存放。存放人員信息應(yīng)該設(shè)置本企業(yè)人員的唯一識別號,唯一識別號長度信息容量應(yīng)該考慮企業(yè)的規(guī)模及企業(yè)的發(fā)展不宜太短。企業(yè)信息系統(tǒng)的用戶來源于人員,企業(yè)中可能具有多種的應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)的用戶可以采用不同類型的數(shù)據(jù)庫存放,但是對于相同的人不論在哪個系統(tǒng)中人員信息應(yīng)該是相同的唯一的,不應(yīng)該相互冗余也不應(yīng)該不一致。
2.2 ? 崗位與角色
角色是完成一定任務(wù)的執(zhí)行者,一個演員在同一部戲中可以扮演女兒,同時扮演青年時代的媽媽,女兒與媽媽在戲里是兩個角色,但扮演者是同一個人。這與企業(yè)管理中的角色和崗位的關(guān)系很相似,戲中扮演者的崗位是演員,根據(jù)劇情的需要可以扮演不同的角色。企業(yè)中的崗位是員工從事工作的職位,一個崗位根據(jù)企業(yè)運(yùn)營的實際需要,可以執(zhí)行多種任務(wù)擔(dān)當(dāng)不同的角色。企業(yè)各類管理事務(wù)的執(zhí)行都是通過角色的擔(dān)當(dāng)來完成,角色是企業(yè)具體活動的承載者,是各種執(zhí)行權(quán)限的體現(xiàn)者。系統(tǒng)設(shè)計中需要將崗位和角色采用不同的數(shù)據(jù)表存放信息,鑒于一個崗位可以承擔(dān)多個角色上的工作任務(wù),需要設(shè)計數(shù)據(jù)表存放崗位與角色間的關(guān)系。在建立信息系統(tǒng)時需要區(qū)好角色與崗位的關(guān)系才能夠設(shè)計出靈活方便,易于使用的信息系統(tǒng),同時便于系統(tǒng)擴(kuò)充。
2.3 ? 組織機(jī)構(gòu)與隸屬關(guān)系
在進(jìn)行需求分析時企業(yè)常給開發(fā)者介紹企業(yè)的組織架構(gòu),組織架構(gòu)一般是以樹形結(jié)構(gòu)的方式體現(xiàn),樹形結(jié)構(gòu)有效地體現(xiàn)了企業(yè)組織的隸屬關(guān)系,在企業(yè)管理者看來樹形結(jié)構(gòu)表現(xiàn)了企業(yè)各部門間的管理關(guān)系。實質(zhì)上企業(yè)展現(xiàn)給分析人員的樹形結(jié)構(gòu)表現(xiàn)了兩層意思,其一是企業(yè)有哪些機(jī)構(gòu),其二是機(jī)構(gòu)間的隸屬關(guān)系,在系統(tǒng)設(shè)計中極容易將兩者混淆,不能正確的設(shè)計結(jié)構(gòu),通常會采用一張數(shù)據(jù)表存放企業(yè)組織架構(gòu)。結(jié)果在程序編制中這樣的結(jié)構(gòu)也能使用,但是在組織結(jié)構(gòu)發(fā)生變化或隸屬關(guān)系發(fā)生變化時,對于查詢歷史數(shù)據(jù)就會造成極大的不便。正確的做法應(yīng)該是將兩種關(guān)系分開存放,對于組織機(jī)構(gòu)要納入信息資源統(tǒng)一規(guī)劃的范疇,一個機(jī)構(gòu)在企業(yè)只要產(chǎn)生過就應(yīng)該具有唯一的代號,即使將來該機(jī)構(gòu)取消了,其機(jī)構(gòu)代碼還應(yīng)該存在,這樣便于歷史信息查詢。機(jī)構(gòu)間的隸屬關(guān)系可能會隨著企業(yè)的發(fā)展發(fā)生變革,對于隸屬關(guān)系變革都需要進(jìn)行存儲。當(dāng)然將組織機(jī)構(gòu)與隸屬關(guān)系分開存放是一種符合數(shù)據(jù)范式的做法,如果你愿意也可以采用一張數(shù)據(jù)表存放兩種關(guān)系,在每條記錄中加入一個parentID字段用于存放上級組織機(jī)構(gòu)的編碼,該表采用雙親表示法可以存放數(shù)據(jù)庫組織機(jī)構(gòu)及隸屬關(guān)系兩種信息,但是應(yīng)用起來可能會麻煩一點(diǎn)。
3 ? ? ?權(quán)限的存儲方式
軟件中系統(tǒng)權(quán)限存儲采用授權(quán)文件、授權(quán)記錄、授權(quán)字符串三種方式進(jìn)行存儲,對于一些軟件根據(jù)系統(tǒng)運(yùn)行的硬件信息,如CPU號、網(wǎng)卡硬件地址、硬盤序列號等信息結(jié)合軟件采用一定的算法生成一個軟件授權(quán)文件,軟件運(yùn)行時系統(tǒng)根據(jù)硬件察看授權(quán)文件,如果運(yùn)行軟件的硬件信息與授權(quán)文件一致系統(tǒng)將運(yùn)行,否則軟件將不運(yùn)行。授權(quán)記錄適用于系統(tǒng)權(quán)限較多,每個權(quán)限采用特殊的記錄存放,記錄的存放形式可以是文本文件記錄也可以是數(shù)據(jù)庫記錄。具有對應(yīng)記錄就可以運(yùn)行對應(yīng)的軟件功能模塊。不具有對應(yīng)的記錄相應(yīng)的軟件功能將不能運(yùn)行。在系統(tǒng)權(quán)限較少且具有規(guī)律性的情況下,可采用字符串或數(shù)字來表示系統(tǒng)權(quán)限,在unix系統(tǒng)中對于文件的權(quán)限采用三位數(shù)字表示文件所有者、同組人員、其他人員對文件的讀寫及執(zhí)行權(quán)限。如777表示文件所有者、同組人員、其他人員都可以對文件進(jìn)行讀寫與執(zhí)行操作,當(dāng)然給文件設(shè)置777的權(quán)限是一種較為危險的做法,還是設(shè)置成755比較安全些。想詳細(xì)了解Unix系統(tǒng)權(quán)限可以參閱Unix的相關(guān)書籍。
4 ? ? ?靈活的權(quán)限分配機(jī)制
對于系統(tǒng)權(quán)限較多,用戶較多的軟件系統(tǒng)進(jìn)行系統(tǒng)初始設(shè)置將是一件極為費(fèi)時的工作。為了便于用戶的使用,提高系統(tǒng)效率,通常的做法是在系統(tǒng)中設(shè)置一些角色,根據(jù)需要為每個角色設(shè)置若干的系統(tǒng)權(quán)限,然后再設(shè)置一些崗位,為崗位分配一定數(shù)量的角色,最后將人員分配到各崗位上去。系統(tǒng)運(yùn)行時就可以根據(jù)用戶的崗位查看到角色,然后根據(jù)角色直接查看到系統(tǒng)的權(quán)限,這樣做就可以避免直接為每個人員分配權(quán)限,直接為每個人員直接分配角色的煩瑣操作,達(dá)到了有效提高管理效率的目的。當(dāng)然采用崗位、角色權(quán)限管理機(jī)制還是不能解決所有的需求。為了滿足將特定權(quán)限可授權(quán)給指定用戶的需求,軟件系統(tǒng)需要在提供崗位、角色權(quán)限分配機(jī)制的前提下同樣提供直接將權(quán)限直接分配給用戶的機(jī)制,如Windows中可以將系統(tǒng)備份權(quán)授權(quán)給任何指定的用戶。只有這樣才能夠適應(yīng)實際的市場需求。
5 ? ? ?系統(tǒng)管理物理設(shè)計
如圖1所示,本結(jié)構(gòu)采用PowerDesigner設(shè)計,為適合于通用系統(tǒng)管理的要求,刪除了具體項目中使用的一些字段,系統(tǒng)權(quán)限采用了記錄方式存放,首先將系統(tǒng)使用到的權(quán)限存放在系統(tǒng)權(quán)限表中,然后為角色分配系統(tǒng)權(quán)限,為崗位分配角色,最后給人員分配崗位,再根據(jù)需要為用戶分配特定的權(quán)限。用戶登錄系統(tǒng)后,可以根據(jù)用戶編號查詢用戶崗位信息,然后查詢角色信息,根據(jù)角色權(quán)限表得到用戶崗位下的所有權(quán)限,再根據(jù)用戶編號查詢用戶權(quán)限表得到單獨(dú)分配給用戶的權(quán)限,最后將兩個查詢結(jié)果求并集得到用戶真正擁有的所有系統(tǒng)權(quán)限。
一個角色可以擁有多個系統(tǒng)權(quán)限,不同的角色可以擁有相同的系統(tǒng)權(quán)限。
6 ? ? ?系統(tǒng)權(quán)限與其他權(quán)限綜合使用
在現(xiàn)實的生活中對于軟件保護(hù)與簡單的業(yè)務(wù)管理使用單一的一類權(quán)限管理就可以滿足實際的需要,但是對于業(yè)務(wù)復(fù)雜的管理系統(tǒng)可能會涉及多種權(quán)限的配合使用,才能有效靈活地管理信息。如一家公司在全國有多個銷售點(diǎn),在一座城市又具有多家門店,各門店具有同樣的業(yè)務(wù)操作,要求各門店使用同一數(shù)據(jù)庫系統(tǒng),門店間可以查詢庫存以便于銷售時庫存信息共享,銷售其他門店具有庫存的商品,這樣的系統(tǒng)就需要具有門店權(quán)限,具有本門店權(quán)限的銷售人員可銷售本門店的商品,商品銷售后庫存減少。對于其他門店的商品庫存,這個銷售人員只能查看庫存。如果商品的種類較多,可能還需要對商品分類,并對每個用戶分配不同的大類權(quán)限,用戶只有具備了該大類商品管理權(quán)才能實施系統(tǒng)賦予的銷售或入庫等操作。在同一個系統(tǒng)中各種權(quán)限的方式可以不相同,系統(tǒng)權(quán)限可以采用數(shù)據(jù)庫記錄的方式進(jìn)行存放,系統(tǒng)設(shè)計時可為各種系統(tǒng)權(quán)限定義具體的權(quán)限記錄,在系統(tǒng)權(quán)限表中具有該記錄表示具有該權(quán)限,否則沒有該權(quán)限。對于商品大類這樣的權(quán)限,由于商品大類較多,各大類又具有相同的特性,存放這類權(quán)限采用字符串或二進(jìn)制串較為合理,一次取出所有大類的權(quán)限。
7 ? ? ?權(quán)限使用
用戶登錄系統(tǒng)時,可將用戶的權(quán)限從數(shù)據(jù)庫取出,對權(quán)限結(jié)構(gòu)進(jìn)行權(quán)限初始化,然后將權(quán)限在結(jié)構(gòu)緩存起來,程序中可以調(diào)用權(quán)限結(jié)構(gòu)進(jìn)行權(quán)限判斷,以確定信息是否可以顯示,業(yè)務(wù)能否操作完成等。登錄取出權(quán)限緩存使用可有效減少數(shù)據(jù)庫連接次數(shù)和數(shù)據(jù)查詢時間,可提高軟件系統(tǒng)的運(yùn)行效率。這種方法已被廣泛應(yīng)用。
8 ? ? ?改進(jìn)意見
在現(xiàn)實中有些角色是不能有相同的人擔(dān)任,有些權(quán)限不能讓一個用戶同時擁有。為了保證系統(tǒng)管理的嚴(yán)謹(jǐn),系統(tǒng)管理中還需要設(shè)置角色沖突信息表和權(quán)限沖突信息表,將相互沖突的角色與相互沖突的權(quán)限存放起來。在為崗位分配角色時可檢查角色沖突表,確保相互沖突的角色不能分配給同一個崗位。在分配權(quán)限時可檢查權(quán)限沖突表,確保相互沖突的權(quán)限不會分配給同一個用戶。