隨筆 - 147  文章 - 71  trackbacks - 0
          <2009年2月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          1234567

          常用鏈接

          留言簿(1)

          隨筆分類(146)

          隨筆檔案(147)

          文章分類(28)

          文章檔案(28)

          喜歡的Blog

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          l 不同職責(zé)的人員,對于系統(tǒng)操作的權(quán)限應(yīng)該是不同的。優(yōu)秀的業(yè)務(wù)系統(tǒng),這是最基本的功能。

          l 可以對“組”進行權(quán)限分配。對于一個大企業(yè)的業(yè)務(wù)系統(tǒng)來說,如果要求管理員為其下員工逐一分配系統(tǒng)操作權(quán)限的話,是件耗時且不夠方便的事情。所以,系統(tǒng)中就提出了對“組”進行操作的概念,將權(quán)限一致的人員編入同一組,然后對該組進行權(quán)限分配。

          l 權(quán)限管理系統(tǒng)應(yīng)該是可擴展的。它應(yīng)該可以加入到任何帶有權(quán)限管理功能的系統(tǒng)中。就像是組件一樣的可以被不斷的重用,而不是每開發(fā)一套管理系統(tǒng),就要針對權(quán)限管理部分進行重新開發(fā)。

          l 滿足業(yè)務(wù)系統(tǒng)中的功能權(quán)限。傳統(tǒng)業(yè)務(wù)系統(tǒng)中,存在著兩種權(quán)限管理,其一是功能權(quán)限的管理,而另外一種則是資源權(quán)限的管理,在不同系統(tǒng)之間,功能權(quán)限是可以重用的,而資源權(quán)限則不能。

           

          針對OA系統(tǒng)的特點,權(quán)限說明:

          權(quán)限

          在系統(tǒng)中,權(quán)限通過模塊+動作來產(chǎn)生,模塊就是整個系統(tǒng)中的一個子模塊,可能對應(yīng)一個菜單,動作也就是整個模塊中(在B/S系統(tǒng)中也就是一個頁面的所有操作,比如“瀏覽、添加、修改、刪除”等)。將模塊與之組合可以產(chǎn)生此模塊下的所有權(quán)限。

          權(quán)限組

          為了更方便的權(quán)限的管理,另將一個模塊下的所有權(quán)限組合一起,組成一個“權(quán)限組”,也就是一個模塊管理權(quán)限,包括所有基本權(quán)限操作。比如一個權(quán)限組(用戶管理),包括用戶的瀏覽、添加、刪除、修改、審核等操作權(quán)限,一個權(quán)限組也是一個權(quán)限。

          角色

          權(quán)限的集合,角色與角色之間屬于平級關(guān)系,可以將基本權(quán)限或權(quán)限組添加到一個角色中,用于方便權(quán)限的分配。

          用戶組

          將某一類型的人、具有相同特征人組合一起的集合體。通過對組授予權(quán)限(角色),快速使一類人具有相同的權(quán)限,來簡化對用戶授予權(quán)限的繁瑣性、耗時性。用戶組的劃分,可以按職位、項目或其它來實現(xiàn)。用戶可以屬于某一個組或多個組。

          通過給某個人賦予權(quán)限,有4種方式(參考飛思辦公系統(tǒng))

          A. 通過職位

          a) 在職位中,職位成員的權(quán)限繼承當(dāng)前所在職位的權(quán)限,對于下級職位擁有的權(quán)限不可繼承。

          b) 實例中:如前臺這個職位,對于考勤查詢有權(quán)限,則可以通過對前臺這個職位設(shè)置考勤查詢的瀏覽權(quán),使他們有使用這個對象的權(quán)限,然后再設(shè)置個,考勤查詢權(quán)(當(dāng)然也可以不設(shè)置,默認(rèn)能進此模塊的就能查詢),則所有前臺人員都擁有考勤查詢的權(quán)利。

          B. 通過項目

          a) 在項目中,項目成員的權(quán)限來自于所在項目的權(quán)限,他們同樣不能繼承下級項目的權(quán)限,而對于項目組長,他對項目有全權(quán),對下級項目也一樣。

          b) 實例中:在項目中,項目成員可以對項目中上傳文檔,查看本項目的文檔,可以通過對項目設(shè)置一個對于本項目的瀏覽權(quán)來實現(xiàn)進口,這樣每個成員能訪問這個項目了,再加上項目文檔的上傳權(quán)和查看文檔權(quán)即可。

          c) 對于組長,因為可以賦予組長一個組長權(quán)(組長權(quán)是個特殊的權(quán)限,它包含其他各種權(quán)限的一個權(quán)限包),所有組長對于本項目有全權(quán),則項目組長可以對于項目文檔查看,審批,刪除,恢復(fù)等,這些權(quán)限對于本項目的下級項目依然有效。

          C. 通過角色

          a) 角色中的成員繼承角色的權(quán)限,角色與角色沒有上下級關(guān)系,他們是平行的。通過角色賦予權(quán)限,是指沒辦法按職位或項目的分類來賦予權(quán)限的另一種方式,如:系統(tǒng)管理員,資料備份員…

          b) 實例中:對于本系統(tǒng)中,全體人員應(yīng)該默認(rèn)都有的模塊,如我的郵件,我的文檔,我的日志,我的考勤……,這些模塊系統(tǒng)成員都應(yīng)該有的,我們建立一個角色為系統(tǒng)默認(rèn)角色,把所有默認(rèn)訪問的模塊的瀏覽權(quán)加入到里面去,則系統(tǒng)成員都能訪問這些模塊。

          D. 直接指定

          a) 直接指定是通過對某個人具體指定一項權(quán)限,使其有使用這個權(quán)限的能力。直接指定是角色指定的一個簡化版,為了是在建立像某個項目的組長這種角色時,省略創(chuàng)建角色這一個步驟,使角色不至于過多。

          b) 實例中:指定某個項目的組長,把組長權(quán)指定給某個人。

          針對職位、項目組:

          如果用添加新員工,員工調(diào)換職位、項目組,滿足了員工會自動繼承所在職位、項目組的權(quán)限,不需要重新分配權(quán)限的功能。

          用戶管理

          用戶可以屬于某一個或多個用戶組,可以通過對用戶組授權(quán),來對組中的所有用戶進行權(quán)限的授予。一個用戶可以屬于多個項目組,或擔(dān)任多個職位。

          授權(quán)管理

          將一個基本權(quán)限或角色授予用戶或用戶組,使用戶或用戶組擁有授予權(quán)限的字符串,如果角色、職位、項目中存在相同的基本權(quán)限,則取其中的一個;如脫離角色、職位、項目組,只是取消用戶或用戶組的中此角色、職位、項目組所授予的權(quán)限。用戶所擁有的權(quán)限是所有途徑授予權(quán)限的集合。管理員用戶可以查看每個用戶的最終權(quán)限列表。

          權(quán)限管理

          基本操作權(quán)限與權(quán)限組(基本操作權(quán)限的集合)的管理。

          OA權(quán)限管理設(shè)計的實現(xiàn) 

          物理數(shù)據(jù)模型圖如下:


          物理數(shù)據(jù)模型圖 

          根據(jù)以上設(shè)計思想,權(quán)限管理總共需要以下基本表:

          tb_User:用戶信息基本表;

          tb_Department:部門表;

          tb_Company:公司表;

          tb_Module:系統(tǒng)模塊表;

          tb_Action:系統(tǒng)中所有操作的動作表;

          tb_Permit:由tb_Module與tb_Action兩表結(jié)合產(chǎn)生的系統(tǒng)基本權(quán)限表;

          tb_Permit_Group:權(quán)限組表,將一模塊的中的所有權(quán)限劃分一個權(quán)限組中,可以通過權(quán)限組授予用戶權(quán)限;

          tb_Role:角色表,基本權(quán)限的集合。無上級與下級之分;

          tb_Position:職位表,有上級與下級之分;

          tb_Project:項目組表,

          tb_Role_Permit:角色授權(quán)表;

          tb_Postion_Permit:職位授權(quán)表;

          tb_Project_Permit:項目授權(quán)表;

          tb_Project_User:項目成員表,IsLead字段代表此成員為項目組長;

          tb_Postion_User:職位成員表;

          tb_User_Permit:用戶授權(quán)表,用戶ID與角色、職位、項目及直接授予的權(quán)限串表;

          權(quán)限的產(chǎn)生:

                 由tb_Module中的ModuleCode與tb_Action中的ActionCode組成

          權(quán)限代碼PermitCode=ModuleCode+ActionCode。

                 實例:ModuleCode=0101,ActionCode=01,則PermitCode=010101。

                 權(quán)限值則有ModuleValue與ActionCode組合而成,采用下劃線來連接。

                 實例:ModuleValue=Sys_User,ActionValue=AdD,PermitValue= Sys_User_Add

          權(quán)限組:

                 包括一組同一模塊下的權(quán)限的組合,如管理用戶包括基本的權(quán)限:添加、刪除、修改、查看等,將這些組合起來構(gòu)成一個用戶組——“用戶管理”權(quán)限組。其它類似。只是為了更方便的查看系統(tǒng)權(quán)限與權(quán)限的分配。

                 實例:如管理用戶的權(quán)限代碼為010101à查看用戶,010102à添加用戶,010103à刪除用戶,010104à修改用戶,010105à審核用戶等,將這些基本權(quán)限組合起來一個集合而構(gòu)成了“用戶管理”權(quán)限組。

          角色、職位、項目:

                 也就是按特定的需要劃分一種權(quán)限的集合。使用角色授權(quán)表、職位授權(quán)表、項目授權(quán)表來實現(xiàn)。授權(quán)表中存放的是權(quán)限代碼PermitCode,而不是權(quán)限組的GroupCode代碼。

          用戶授權(quán):

                 由用戶授權(quán)表來實現(xiàn),用戶授權(quán)表中的RoleCode、PositionCode、ProjectCode分別是角色表中RoleCode組成的串、職位表PositionCode組成的串、ProjectCode組成的串。與角色授權(quán)表中的角色代碼RoleCode、職位授權(quán)表中PositionCode、項目授權(quán)表中的ProjectCode不對應(yīng)(不是主表與從表之間外鍵關(guān)系)。

                 從而能夠?qū)崿F(xiàn)了一個用戶可以擁有多個角色、多個職位、多個項目的情況。

          用戶授權(quán)表中的PermitCode為直接授權(quán)的權(quán)限代碼串,直接給用戶分配權(quán)限。

          實例:

          用戶ID為UserId=1的用戶權(quán)限授權(quán)表的記錄為:

          RoleCode=001,003

          PostionCode = 001,002

          ProjectCode=001,005

          PermitCode = 010101,020102

          表明此用戶擁有兩個角色,代碼為001和003,并繼承這兩個角色的權(quán)限;

          擔(dān)任兩個職位,代碼為001與002,并繼承兩個職位的權(quán)限;

          屬于兩個項目組中的成員,項目代碼為001與005,并繼承兩個項目中的權(quán)限。
          直接指定給用戶的權(quán)限為010101與010102這兩個權(quán)限代碼的權(quán)限

          用戶權(quán)限字符串:

                 根據(jù)用戶授權(quán)表的角色代碼、職位代碼、項目代碼得到權(quán)限字符串及表中直接分配的權(quán)限字符串組合成一個用戶的所有權(quán)限字符串集合。

          posted on 2009-02-14 10:18 飛翔天使 閱讀(9605) 評論(7)  編輯  收藏 所屬分類: 軟件設(shè)計

          FeedBack:
          # re: OA系統(tǒng)權(quán)限管理設(shè)計方案 2009-02-14 19:32 heyang
          關(guān)注。  回復(fù)  更多評論
            
          # re: OA系統(tǒng)權(quán)限管理設(shè)計方案 2009-06-01 10:26 HiMagic!
          User和Permission之間應(yīng)該用role關(guān)聯(lián),避免關(guān)系網(wǎng)太發(fā)散。
          Permit code應(yīng)該用關(guān)系表表示,不要把所有code放在一個字段。
          感覺Project的概念應(yīng)該是一個特殊的Role,與組織上的group不同,以為前者和resource相關(guān),后者不依賴任何項目和權(quán)限而存在。  回復(fù)  更多評論
            
          # re: OA系統(tǒng)權(quán)限管理設(shè)計方案 2009-10-27 13:58 式樣
          很好.  回復(fù)  更多評論
            
          # re: OA系統(tǒng)權(quán)限管理設(shè)計方案 2009-11-10 11:30 newPeople
          小弟初學(xué)表之間的關(guān)聯(lián)設(shè)計,可以附加上數(shù)據(jù)模型圖中字段的意思嗎?感激不盡!  回復(fù)  更多評論
            
          # re: OA系統(tǒng)權(quán)限管理設(shè)計方案 2010-01-11 11:55 jimmyhcl
          道友,我認(rèn)為你的權(quán)限值沒有太大的意義  回復(fù)  更多評論
            
          # re: OA系統(tǒng)權(quán)限管理設(shè)計方案 2010-03-04 09:35 mavin
          這文章相當(dāng)?shù)挠斡狙剑呛牵x謝  回復(fù)  更多評論
            
          # re: OA系統(tǒng)權(quán)限管理設(shè)計方案 2013-09-03 13:38 劍飄紅
          職位和項目屬于部門吧
          不應(yīng)該與用戶關(guān)聯(lián)會好點  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 台安县| 普洱| 渭源县| 麻城市| 宁明县| 临沭县| 乌兰浩特市| 沙河市| 潮安县| 汾西县| 竹山县| 安乡县| 三江| 东乌| 大理市| 永仁县| 双峰县| 谷城县| 五河县| 威海市| 溧阳市| 蛟河市| 隆林| 惠来县| 商都县| 阿坝县| 镇江市| 阿拉尔市| 沛县| 眉山市| 尚志市| 八宿县| 霍林郭勒市| 遵义市| 桂林市| 桃园市| 衢州市| 盐津县| 长白| 承德市| 湖州市|