專利名稱:可選擇性定義對(duì)應(yīng)用程序功能部件訪問的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及定義用戶對(duì)計(jì)算機(jī)系統(tǒng)的訪問,特別是多數(shù)用戶對(duì)計(jì)算機(jī)系統(tǒng)中一個(gè)或多個(gè)可運(yùn)行程序的功能部件進(jìn)行訪問時(shí),具有選擇性適應(yīng)性地定義每一個(gè)用戶的訪問限制。
背景技術(shù):
在例如具有資源共享服務(wù)的部門環(huán)境的環(huán)境中,其中多個(gè)雇員和/或客戶可以訪問允許運(yùn)行多個(gè)應(yīng)用程序的計(jì)算機(jī)系統(tǒng),這就需要可以依據(jù)特定用戶或用戶類別來限制對(duì)于應(yīng)用程序一個(gè)或多個(gè)功能部件的訪問。這里用到的術(shù)語“功能部件”包括了幾乎所有可能的程序功能,舉例說明,存取數(shù)據(jù)庫中的數(shù)據(jù),產(chǎn)生、查看和打印報(bào)告,以及發(fā)送和/或接受電子郵件。
目前,對(duì)于限制用戶訪問的適應(yīng)性還未實(shí)現(xiàn)。在限制訪問數(shù)據(jù)方面,最近Oracle公司在其數(shù)據(jù)庫程序中使用了一種方法,用來在數(shù)據(jù)庫水平上限制訪問特殊數(shù)據(jù)表的用戶權(quán)力。Oracle公司實(shí)現(xiàn)這一方法是通過給用戶分配“角色”來限制對(duì)含有數(shù)據(jù)的表格訪問,而不是對(duì)數(shù)據(jù)本身的訪問。
限制對(duì)應(yīng)用程序功能部件的訪問,包括由Oracle角色限制的數(shù)據(jù)訪問功能部件,需要更好的適應(yīng)性,通過一個(gè)簡單的例子來說明。以下是一張假設(shè)的數(shù)據(jù)表格,顯示的是客戶A、B和C在1998年6月15日上午進(jìn)行的機(jī)密的金融交易,其中WDRWL表示提款,DPST表示存入,PYMNT表示支付。
表1
為了準(zhǔn)備一份只是關(guān)于6月份客戶A的機(jī)密交易報(bào)告,需要讀取1、4、6行的數(shù)據(jù),而不需要2、3、5、7行的。由于這一數(shù)據(jù)具有很大的敏感性,對(duì)于數(shù)據(jù)的讀取僅限制在與任務(wù)(即客戶A的交易報(bào)告)有關(guān)的范圍內(nèi)是非常必要的。
此外,用于準(zhǔn)備A過去交易報(bào)告的應(yīng)用程序可能具備產(chǎn)生不同類型報(bào)告的能力,包括除了顯示過去的表現(xiàn),還有計(jì)劃未來任務(wù)的報(bào)告。依據(jù)被分配任務(wù)的對(duì)象,可能并不希望準(zhǔn)許訪問兩種類型的生成報(bào)告??赡芤膊幌M麥?zhǔn)許打印生成報(bào)告。
發(fā)明概要根據(jù)本發(fā)明,一個(gè)或多個(gè)“屬性”分配給可運(yùn)行多個(gè)應(yīng)用程序的計(jì)算機(jī)系統(tǒng)的用戶。每一個(gè)屬性是一名稱-值對(duì),其中名稱標(biāo)明應(yīng)用程序功能部件或是被定義訪問的功能部件(例如,讀取數(shù)據(jù),產(chǎn)生報(bào)告),值設(shè)置訪問權(quán)限(例如,全部或部分?jǐn)?shù)據(jù))。屬性可以成組分配以減少準(zhǔn)備為每一個(gè)用戶進(jìn)行單獨(dú)的屬性分配的負(fù)擔(dān)。
根據(jù)本發(fā)明,提供一種系統(tǒng)和方法用以定義至少運(yùn)行一個(gè)應(yīng)用程序功能部件的用戶權(quán)力。依照該系統(tǒng)和方法,用戶至少分配一個(gè)屬性。屬性存儲(chǔ)在數(shù)據(jù)庫的表格中。應(yīng)用程序被用戶運(yùn)行,然后分配給用戶的屬性被檢索。屬性通過程序被執(zhí)行,這樣依據(jù)所檢索的屬性,定義用戶對(duì)于應(yīng)用程序功能部件的訪問。
根據(jù)本發(fā)明進(jìn)一步的特征,提供用以定義至少運(yùn)行一個(gè)應(yīng)用程序功能部件的用戶權(quán)力的系統(tǒng)和方法,其中組至少分配一個(gè)屬性,而組分配給用戶。組存儲(chǔ)在數(shù)據(jù)庫的表格中。應(yīng)用程序被用戶運(yùn)行,而后分配給用戶的組被檢索。分配給組的屬性通過程序被執(zhí)行,這樣依據(jù)所檢索的屬性,定義用戶對(duì)于應(yīng)用程序功能部件的訪問。
因此,本發(fā)明的目的是提供可選擇性定義對(duì)應(yīng)用程序功能部件的訪問的能力,該功能部件對(duì)于計(jì)算機(jī)系統(tǒng)中給定的用戶或用戶組是可利用的。
本發(fā)明的進(jìn)一步目的是,在限制用戶對(duì)存儲(chǔ)在面向表格的數(shù)據(jù)庫中數(shù)據(jù)訪問的能力方面,提供比現(xiàn)有水平更強(qiáng)的適應(yīng)性。
為更好的理解本發(fā)明以及進(jìn)一步目的,參考以下結(jié)合附圖的描述,它的范圍將在附帶的權(quán)利要求中指出。
附圖的簡略描述
圖1的框圖示出了依照本發(fā)明的示例性系統(tǒng);圖2的框圖示出了用戶屬性系統(tǒng)分組方案的范例;圖3的流程圖示出了本發(fā)明方法的一個(gè)具體實(shí)例。
發(fā)明的詳盡描述用戶屬性圖1的框圖示出了依照本發(fā)明的示例性系統(tǒng)。計(jì)算機(jī)5運(yùn)行數(shù)據(jù)庫軟件8,其保存有數(shù)據(jù)表,圖示為表11、13和15。許多應(yīng)用程序,圖示為程序ABC、DEF和GHI,也在計(jì)算機(jī)5上運(yùn)行。其中一些是用于檢索和使用表11、13和15中的數(shù)據(jù)。每一個(gè)該系統(tǒng)的用戶,X、Y和Z,可以通過終端訪問計(jì)算機(jī)5,圖示分別為計(jì)算機(jī)18、21和24。依照本發(fā)明,用戶X、Y和Z分配到一個(gè)或多個(gè)“屬性”。每一個(gè)屬性有一個(gè)名稱,標(biāo)明訪問被定義的應(yīng)用程序功能部件(例如,訪問數(shù)據(jù)庫中的數(shù)據(jù)的權(quán)力),并且有一個(gè)定義訪問權(quán)限的值,在后面將更詳細(xì)的解釋。如果不特別指出,如這里所用到的,術(shù)語屬性將用來指名稱-值對(duì)。
屬性通過數(shù)據(jù)庫軟件8被保存在表中,并分別定義用戶運(yùn)行應(yīng)用程序ABC、DEF和GHI的權(quán)力。例如,兩個(gè)有用的屬性為DATA_SCOPE和USER_LEVEL。DATA_SCOPE定義用戶被允許訪問的數(shù)據(jù),并用前面表1作為范例,其擁有的可能的值為A、B、C或ALL,它們分別表示與客戶A、B、C或所有三個(gè)客戶有關(guān)的數(shù)據(jù)。USER_LEVEL是一較寬的屬性,其通常定義用戶選擇運(yùn)行一給定應(yīng)用程序特定功能部件的訪問級(jí)別。USER_LEVEL具有的值最好為ADMIN、REGULAR和RESTRICTED,其中ADMIN限制性最少,準(zhǔn)許訪問所有可用的應(yīng)用程序功能部件,例如,檢索報(bào)告,電子郵件,打印。RESTRICTED限制用戶至基礎(chǔ)應(yīng)用程序功能部件,例如,產(chǎn)生報(bào)告。REGULAR級(jí)用戶允許訪問的功能部件比ADMIN級(jí)用戶少,但比RESTRICTED級(jí)用戶多。每個(gè)應(yīng)用程序都可以基于它所提供的不同功能部件來解釋USER_LEVEL屬性。這就可以理解一些精確集中的屬性,例如,與報(bào)告生成或打印有關(guān),可以代替USER_LEVEL屬性了。
兩個(gè)屬性DATA_SCOPE和USER_LEVEL,以及它們各自的值,當(dāng)然都只是例子。本領(lǐng)域技術(shù)人員可以理解定義限制訪問應(yīng)用程序功能部件的屬性是不受限制的。
分組屬性可以分配給單獨(dú)的用戶,或者如最佳實(shí)施例中,執(zhí)行分組的方案,其范例在圖2中顯示。屬性如DATA_SCOPE和USER_LEVEL以方塊表示,“屬性組”以三角形表示,而“受托人組”以圓形表示。屬性組只包含屬性及它們的值,而受托人組包括屬性組和/或其它的受托人組,并不是單個(gè)的屬性。在首選的分組方案實(shí)例中,每個(gè)屬性組被限定為對(duì)應(yīng)一個(gè)應(yīng)用程序的屬性,從而提供可為不同的應(yīng)用程序分配不同的屬性和值的能力。在一個(gè)可供選擇的實(shí)例中,屬性組可以獨(dú)立于特殊的應(yīng)用程序而生成,這樣一個(gè)組就可以包含所有應(yīng)用程序的屬性。盡管定義對(duì)單獨(dú)應(yīng)用程序功能部件的訪問缺少了一些適應(yīng)性,但這樣的系統(tǒng)是比較容易實(shí)現(xiàn)的。
在這首選的實(shí)施例中,表APPS,它至少包含一列為APP_CODE,定義有相關(guān)屬性的合法應(yīng)用程序的列表?;氐角懊鎱⒖紙D1,合法的APP_CODE值是ABC、DEF和GHI。在APPS表中的其它列將包含每個(gè)應(yīng)用程序所必需的任何信息。例如,在一菜單系統(tǒng)中,它提供圖標(biāo),用戶可以從中選擇應(yīng)用程序運(yùn)行,APP_NAME列將包含特殊字符串作為圖標(biāo)的可視標(biāo)識(shí)它與APP_CODE列中的應(yīng)用程序相關(guān)聯(lián)。
每個(gè)屬性組定義為由APP_CODE確定的特殊應(yīng)用程序定義一組零或多個(gè)屬性。零屬性的屬性組用來說明應(yīng)該為應(yīng)用程序分配屬性的默認(rèn)值。通常默認(rèn)值是最具限制性的。另一種情況,零屬性的屬性組可以用來說明除了運(yùn)行程序的能力,沒有APP_CODE確定的訪問被定義的應(yīng)用程序功能部件。
圖2的分組范例描繪了比前面討論過與圖1和表1有關(guān)的例子更復(fù)雜的用戶結(jié)構(gòu)。圖2中屬性組106、115、130、145和148屬性分配如下
表2
在這最佳實(shí)施例中,每個(gè)屬性組對(duì)應(yīng)的應(yīng)用程序在該組建立的時(shí)候被指定,并在討論的范例中由上面表2中第二列顯示出來。
回到圖2,分配了屬性組106的用戶將有屬性DATA_SCOPE107和USER_LEVEL108,及其各自的值A(chǔ)LL和ADMIN,如表2所示。根據(jù)屬性,在程序被運(yùn)行時(shí),用戶將被允許對(duì)應(yīng)用程序GHI進(jìn)行ADMIN式訪問,并且被準(zhǔn)許訪問與客戶A、B和C有關(guān)的數(shù)據(jù)。分配了屬性組130的用戶將有三個(gè)屬性DATA_SCOPE133、DATA_SCOPE136和USER_LEVEL139,以及各自的值A(chǔ)、B和REGULAR。根據(jù)屬性,這個(gè)用戶可以訪問與客戶A或B相關(guān)的數(shù)據(jù),并可以訪問應(yīng)用程序ABC的功能部件,它是為REGULAR身份的用戶預(yù)先定義的。分配了屬性組145的用戶可以對(duì)應(yīng)用程序ABC進(jìn)行RESTRICTED式訪問,并被準(zhǔn)許訪問與客戶A和B有關(guān)的數(shù)據(jù)。分配了屬性組148的客戶將被允許對(duì)應(yīng)用程序DEF進(jìn)行RESTRICTED式訪問,并被準(zhǔn)許訪問與客戶B和C有關(guān)的數(shù)據(jù)。
一個(gè)或多個(gè)屬性組可以分配給受托人組。圖2中,例如受托人組142可以由屬性組145和148組成,并且可以包括下面表3中最后兩列所列出的所有的屬性名稱-值對(duì)表3
受托人組也可以分配給其它的受托人組。這可以從圖2中受托人組103看出,它包括了受托人組142的所有屬性以及屬性組130和135的所有屬性。在圖上端,受托人組100由受托人組103和屬性組106組成。因此,受托人組100包含了五個(gè)屬性組130、145、148、115和106的所有屬性。
屬性分組系統(tǒng)特別適用于給責(zé)任級(jí)別不同的雇員分配屬性。例如,屬性組115、130、145和148可以分配給低或中級(jí)雇員,而受托人組100、103和142以及屬性組106可以分配給管理人員,其職責(zé)是監(jiān)督下級(jí)雇員的工作,至于屬性組106,就是運(yùn)行他們自己的應(yīng)用程序。
在優(yōu)化的分組系統(tǒng)中,對(duì)屬性組、受托人組和用戶進(jìn)行的屬性分配保存在表ATTRIBUTES中。ATTRIBUTES表有三列ASSIGNEE、ATTRIBUTE_NAME和ATTRIBUTE_VALUE。ASSIGNEE可以是屬性組名稱,受托人組名稱或是用戶。ATTRIBUTE_NAME是屬性名稱(例如,DATA_SCOPE)。ATTRIBUTE_VALUE是命名屬性的特定值(例如,ALL)。
ATTRIBUTES表由七個(gè)基本命令來維護(hù)。范例命令是以用于Oracle數(shù)據(jù)庫環(huán)境中的Oracle程序?qū)懗龅摹1绢I(lǐng)域的技術(shù)人員可以導(dǎo)出適于其它環(huán)境的類似命令。在以下的描述中,單引號(hào)中是參數(shù),雙引號(hào)中是字符串。
命令1attr_utils.create_group('group_name','group_type','app_code')
'group_name'組的名稱'group_type':"ATTRIBUTE"或"ASSIGNEE"'app_code'如果'group_type'是"ATTRIBUTE",這一字段是需要的;否則,它將被忽略這個(gè)例程將生成一指定類型的組。如果'group_name'已經(jīng)作為一個(gè)組或Oracle用戶存在,例程將由于錯(cuò)誤而退出。
根據(jù)例程,'group_name'和'group_type'值轉(zhuǎn)換成大寫。然后,有下面一列值的記錄被插入ATTRIBUTES表設(shè)置ASSIGNEE='group_name'設(shè)置ATTRIBUTE_NAME="ASSIGNEE_TYPE"設(shè) 置ATTRIBUTE_VALUE = "ATTRIBUTE_GROUP"或"ASSIGNEE_GROUP"基于'group_type'的變量值。
另外,如果'group_type'是"ATTRIBUTE",下面有另一列值的記錄將被插入ATTRIBUTES表設(shè)置ASSIGNEE='group_name'設(shè)置ATTRIBUTE_NAME="APP_CODE"設(shè)置ATTRIBUTE_VALUE='app_code'。
命令2attr_utils.assign_group('assignee','group_name')'assignee'有分配了'group_name'的用戶或受托人組。
'group_name'分配給受托人的組。
這個(gè)例程將把一個(gè)組分配給另外一個(gè)組或用戶。如果'assignee'作為受托人組或用戶不存在,將返回錯(cuò)誤信息。如果'group_name'不存在,同樣返回錯(cuò)誤信息。
這個(gè)例程首先將'assignee'和'group_name'的值轉(zhuǎn)換化大寫。其次,有下面一列值的記錄被插入ATTRIBUTES表設(shè)置ASSIGNEE='assignee'設(shè)置ATTRIBUTE_NAME="ASSIGNED_GROUP"設(shè)置ATTRIBUTE_VALUE='group_name'。
命令3attr_utils.assign_attribute('assignee','attribute_name','attribute_value)
'assignee'屬性組名稱。這必須是一個(gè)屬性組。
'attribute_name'屬性名稱'attribute_value'指定屬性的值這個(gè)例程將分配值的屬性給'assignee'。當(dāng)受托人組作為一個(gè)屬性組不存在,或是attribute_name是保留字段,將返回錯(cuò)誤信息。
這個(gè)例程首選將'assignee'和'attribute_name'值轉(zhuǎn)化成大寫,然后再將有下面一列值的記錄插入ATTRIBUTES表設(shè)置ASSIGNEE='assignee'設(shè)置ATTRIBUTE_NAME='attribute_name'設(shè)置ATTRIBUTE_VALUE='attribute_value'。
命令4attr_utils.drop_group('group_name')'group_name'將與其相關(guān)信息一起被刪除的組或用戶的名稱。
這個(gè)例程將刪除組或用戶及其相關(guān)信息。如果'group_name'不存在,將返回錯(cuò)誤信息。
這個(gè)例程首先將'group_name'轉(zhuǎn)化成大寫,然后刪除ATTRIBUTES表中ASSIGNEE列的值與'group_name'相符的所有記錄。另外在ATTRIBUTES表中滿足下面兩個(gè)條件的所有記錄也將被刪除a.ATTRIBUTE_NAME列的值是"ASSIGNED_GROUP"。
b.ATTRIBUTE_NAME列的值與'group_name'相符。
命令5attr_utils.rescind_group('assignee','group_name')'assignee'用戶或受托人組,其含有被刪除的group_name'group_name'從受托人組中刪除的組這個(gè)例程將從'assignee'中刪除指定的'group_name'。如果'group_name'或'assignee'不存在,將返回錯(cuò)誤信息。
這個(gè)例程首選將'assignee'和'group_name'轉(zhuǎn)化成大寫,然后將ATTIBUTES表中與下面三個(gè)條件符合的所有記錄刪除a.ATTIBUTE_NAME列中的值是"ASSINGED_GROUP"。
b.ATTIBUTE_VALUE列中的值與'group_name'相符。
c.ASSIGNEE列中的值與'assignee'相符。
命令6attr_utils.rescind_attribute('assignee','attribute_name')'assignee'屬性組名稱。這必須是一個(gè)屬性組。
'attribute_name'屬性名稱。
這個(gè)例程將從'assignee'中刪除指定的'attribute_name'。如果attribute_name和assignee不存在,或是attribute_name為保留字段,將返回錯(cuò)誤信息。
這個(gè)程序首先將'assignee'和'attribute_name'轉(zhuǎn)化成大寫,然后將ATTRIBUTES表中滿足以下兩個(gè)條件的所有記錄刪除a.ASSIGNEE列中的值與'assignee'相符。
b.ATTRIBUTE_NAME列中的值與'attribute_name'相符。
命令7attr_utils.update_attribute('assignee','attribute_name','attribute_value')'assignee'屬性組名稱。這必須是一個(gè)屬性組。
'attribute_name'屬性名稱。
'attribute_value'指定屬性的新值。
這個(gè)例程將為確定的'assignee'和'attribute_name'更新指定的'attribute_value'。如果attribute_name或assignee不存在,或是attribute_name為保留字段,將返回錯(cuò)誤信息。
這個(gè)例程首先將'assignee'和'attribute_name'轉(zhuǎn)化成大寫,然后更新ATTRIBUTES表,對(duì)于滿足以下兩個(gè)條件的所有記錄,將把ATTRIBUTE_VALUE設(shè)置成'attribute_value':
a.ASSIGNEE列中的值與'assignee'相符。
b.ATTRIBUTE_NAME列中的值與'attribute_name'相符。
利用前面的命令,就維護(hù)了一個(gè)ATTRIBUTES表。如命令1和2中所示,在首選實(shí)施例中,一些保留的ATTRIBUTE_NAME在ATTRIBUTES表中使用,用來確定系統(tǒng)中所用到的特殊信息。"APP_CODE"的ATTRIBUTE_NAME自動(dòng)分配給屬性組,用以確定與組相關(guān)的應(yīng)用程序。"ASSIGNED_GROUP"的ATTRIBUTE_NAME是用來給屬性組分配屬性,給受托人組分配屬性組和受托人組,還給用戶分配屬性組和受托人組。"ASSIGNEE_TYPE"的ATTRIBUTE_NAME用來確定一個(gè)組是屬性組還是受托人組。這些例程檢查ATTRIBUTE_NAME參數(shù)以確定它們不是保留字段,如果使用了保留的ATTRUBUTE_NAME將返回錯(cuò)誤信息。
舉例說明,在下面的表4中將顯示圖2中受托人組142的ATTRIBUTES表的一部分表4
在本發(fā)明供選擇的實(shí)施例中,前面所討論過的,屬性組不是限制于特定的應(yīng)用程序,creat_group例程不一定要求有'app_code'輸入,而APP_CODE屬性將不保存在ATTRIBUTES表中。但是,利用附加表將APP_CODE直接分配給用戶,對(duì)應(yīng)用程序大規(guī)模的訪問仍可以控制。如果用戶沒有分配到特定的APP_CODE,用戶將完全不能獲得相應(yīng)的應(yīng)用程序。
父子結(jié)構(gòu)為單一的受托人組分配多重屬性組和/或受托人組導(dǎo)致可以對(duì)同一組或用戶分配交迭、重復(fù)甚至沖突的值。例如,受托人組100,圖2上端所示,包括圖中的每個(gè)屬性,因此,如前面表2所示,對(duì)于同一應(yīng)用程序DEF,DATA_SCOPE屬性包括不同的值B、C和ALL,而USER_LEVEL有不同的值REGULAR和RESTRICTED。由于這個(gè)原因,在首選的實(shí)施例中,建立屬性分層結(jié)構(gòu),其中每個(gè)屬性值都分配了“父值”。例如,DATA_SCOPE屬性的值B分配了父值A(chǔ)LL。在實(shí)際中,這被稱作用戶分配的屬性,同一屬性和應(yīng)用程序的父值和子值都存在,父值將被保存而子值被刪除。此外,重復(fù)的值將被刪除。
父子的分配被保存在ATTRIBUTE_LEVELS表中,其中包括三列ATTRIBUTE_NAME、CHILD_VALUE和PARENT_VALUE。ATTRIBUTE_NAME是屬性的名稱(例如,DATA_SCOPE)。CHILD_VALUE是屬性的實(shí)際值(例如,C)。對(duì)于PARENT_VALUE來說,實(shí)際值是它的子集(例如,ALL)。有種情況,即實(shí)際值是結(jié)構(gòu)中級(jí)別最高的,例如ALL,所分配的父值就是NULL(空)。
ATTRIBUTE_LEVELS表由四個(gè)基本命令維護(hù)。范例命令是以用于Oracle數(shù)據(jù)庫環(huán)境中的Oracle程序?qū)懗龅摹1绢I(lǐng)域的技術(shù)人員可以導(dǎo)出適于其它數(shù)據(jù)庫環(huán)境的類似命令。注意在以下的描述中,單引號(hào)中是參數(shù),雙引號(hào)中是字符串。
命令1attr_utils.add_attr_level('attribute_name','child_value','parent_value')'attribute_name'屬性名稱'child_value'對(duì)應(yīng)指定'attribute_name'的子值parent_value'對(duì)應(yīng)指定'attribute_name',指定'child_value'的父值這個(gè)例程將給一指定的指針加上新的屬性級(jí)別。如果'child_value'在指定的'attribute_name'的權(quán)限內(nèi)具有最高級(jí)別,則'parent_value'為"NULL"。如果父值為空或不存在,將返回錯(cuò)誤信息。
這個(gè)例程首先將'attribute_name'轉(zhuǎn)化成大寫,然后將有下面一列值的記錄插入ATTRIBUTE_LEVELS表設(shè)置ATTRIBUTE_NAME='attribute_name'設(shè)置CHILD_VALUE='child_value'設(shè)置PARENT_VALUE='parent_value'命令2
attr_utils.update_attr_level('attribute_name','child_value','parent_value')'attribute_name'屬性名稱'child_value'對(duì)應(yīng)指定'attribute_name'的子值parent_value'對(duì)應(yīng)指定'attribute_name',指定'child_value'的父值這個(gè)例程將為指定的參數(shù)更新父值。如果'child_value'在指定的'attribute_name'的權(quán)限內(nèi)具有最高級(jí)別,則'parent_value'為"NULL"。如果父值為空或不存在,或者attribute_name與child_value組合不存在,將返回錯(cuò)誤信息。
這個(gè)例程首先將'attribute_name'轉(zhuǎn)化成大寫,然后更新ATTRIBUTE_LEVELS表,對(duì)于滿足下面兩個(gè)條件的所有記錄,將PARENT_VALUE列的值設(shè)置為'parent_value':
a.ATTRIBUTE_NAME列的值與'attribute_name'相符。
b.CHILD_VALUE列的值與'child_name'相符。
命令3attr_utils.delete_attr_levels('attribute_name','child_value')'attribute_name'屬性名稱'child_value'對(duì)應(yīng)指定'attribute_name'的子值這個(gè)例程將刪除屬性級(jí)別以及指定指針?biāo)械淖訉傩约?jí)別。如果組合不存在,將返回錯(cuò)誤信息。
這個(gè)例程首先將'attribute_name'轉(zhuǎn)化成大寫,然后將ATTRIBUTE_LEVELS表中指定組合對(duì)'attribute_name'和'child_value'所派生出的所有記錄都刪除。舉例說明,以下SQL語句可以用來完成頭兩步DELETE ATTRIBUTE LEVELSWHERE(ATTRIBUTE_NAME,CHILD_VALUE)IN(SELECT ATTRIBUTE_NAME,CHILD_VALUEFROM ATTRIBUTE_LEVELSSTART WITH PARENT_VALUE=P_CHILD_VALUEAND ATTRIBUTE_NAME=UPPER(P_ATTRIBUTE_NAME)
CONNECI BY PARENT_VALUE=PRIOR CHILE_VALUEAND ATTRIBUTE_NAME=PRIOR ATTRIBUTE_NAME).
這個(gè)例程將刪除ATTRIBUTE_LEVELS表中滿足以下兩個(gè)條件的所有記錄a.ATTRIBUTE_NAME列的值與'attribute_name'相符。
b.CHILD_VALUE列的值與'child_name'相符。
命令4attr_utils.delete_all_levels('attribute_name')'attibute_name'屬性名稱這個(gè)例程將刪除指定attribute_name的所有屬性級(jí)別。如果attribute_name不存在,將返回錯(cuò)誤信息。
這個(gè)例程首先將'attribute_name'轉(zhuǎn)化成大寫,然后將ATTRIBUTE_LEVELS表中ATTRIBUTE_NAME列值與'attribute_name'相符的所有記錄刪除。
利用前面的命令,ATTRIBUTE_LEVELS表被保存。舉例說明,下面的表5顯示了一個(gè)ATTRIBUTE_LEVELS表,是對(duì)應(yīng)前面討論過的范例屬性表5
根據(jù)表5,如果對(duì)于同一應(yīng)用程序,擁有值A(chǔ)LL的DATA_SCOPE賦值給同一用戶,對(duì)于擁有值A(chǔ)、B或C的DATA_SCOPE屬性的賦值將被刪除。同樣,較低級(jí)USER_LEVEL值的賦值將被刪除以利于最高級(jí)別值的賦值。
更進(jìn)一步,如果屬性值在ATTRIBUTES表中賦值了,而沒有在ATTRIBUTE_LEVELS表中定義,則被認(rèn)為在ATTRIBUTE_LEVELS表中它被定義為帶有NULL父值,并且沒有具有值的其它值作為它的父值。
考慮到較低級(jí)完整的一組賦值變量可以由較高級(jí)變量取代,進(jìn)一步的簡化就可以實(shí)現(xiàn)了。例如,DATA_SCOPE值A(chǔ)、B和C被指定了,系統(tǒng)可以返回值A(chǔ)LL。這種簡化只能在所有的較低級(jí)值與較高級(jí)值表示同一事物時(shí)才可使用,因?yàn)檩^高級(jí)值可能比較低級(jí)值代表的要多一些。
用戶屬性系統(tǒng)的操作結(jié)合以下對(duì)本發(fā)明的用戶屬性系統(tǒng)示范使用的討論,將對(duì)圖3作出參考說明。根據(jù)發(fā)明的首選實(shí)施例,對(duì)數(shù)據(jù)庫環(huán)境中運(yùn)行程序的訪問由初始的圖形用戶界面(IGUI)控制。IGUI的例子包括互聯(lián)網(wǎng)站點(diǎn)主頁和局域網(wǎng)的初始頁面。
但是,在獲準(zhǔn)訪問應(yīng)用程序之前,用戶通常要登錄到計(jì)算機(jī)系統(tǒng)中,方框201所示,如果登錄完全正確的話,計(jì)算機(jī)系統(tǒng)將確認(rèn)用戶。方框204,IGUI檢索用戶可用的應(yīng)用程序。在首選實(shí)施例中,IGUI通過讀取ATTRIBUTES表做到這點(diǎn)的,箭頭205包含了給用戶的分組分配。如前面所討論的,在首選實(shí)施例中,組分配包括屬性組分配,而它又包含了可用程序的指定。在Oracle數(shù)據(jù)庫系統(tǒng)中準(zhǔn)備了“視圖(view)”,它優(yōu)于搜索整個(gè)ATTRIBUTES表,而表又可能相當(dāng)龐大,它保存有頻繁使用的搜索結(jié)果(例如,特殊用戶的屬性),而且很有可能被反復(fù)使用。在可選擇的實(shí)例中,屬性不是限制于特定的應(yīng)用程序,特殊用戶可用的應(yīng)用程序可以在分離的表中存儲(chǔ)和檢索。
在箭頭205,IGUI也將訪問合法程序的APPS表,其包含的APP_CODE列告知IGUI在方框207中顯示給用戶哪些字符串,此方框中IGUI顯示給用戶可用的應(yīng)用程序。方框210中,用戶選擇其中一個(gè)可用的應(yīng)用程序。方框213中,IGUI讀取ATTRIBUTES表,在箭頭214,檢索對(duì)應(yīng)所選程序的用戶屬性。在Oracle數(shù)據(jù)庫系統(tǒng)中,視圖可以再一次用于檢索屬性。另外,IGUI可以訪問ATTRIBUTE_LEVELS表來刪除屬性個(gè)數(shù)。
在箭頭215,IGUI將相關(guān)的屬性傳給應(yīng)用程序,而在方框216中,應(yīng)用程序,按程序執(zhí)行屬性運(yùn)行。如果用戶試圖超越指定的限制,可能會(huì)顯示錯(cuò)誤或警告信息。
在可選擇的實(shí)例中,本領(lǐng)域的技術(shù)人員可以理解可以直接檢索屬性,不需要IGUI的輔助,并執(zhí)行屬性。
視圖如前面所討論的,Oracle視圖在本發(fā)明中用于檢索和組織來自表的記錄。以下是十二個(gè)視圖的列表,它們?cè)诒景l(fā)明的執(zhí)行中有用。這里提供了每個(gè)視圖的解釋和一個(gè)SQL范例。
視圖1V_ATTRIBUTE_APP_CODES這個(gè)視圖將返回,用戶屬性系統(tǒng)中安裝的所有不同的應(yīng)用程序代碼的列表。這個(gè)視圖對(duì)記錄執(zhí)行一條含有DISTINCT子句的SELECT,記錄中的ATTRIBUTE_NAME是'APP_CODE'保留的ATTRIBUTE_NAME。
SQL范例CREATE OR REPLACE VIEW V_ATTRIBUTE_APP_CODES ASSELECT DISTINCT ASSIGNEE,ATTRIBUTE_VALUE_APP_CODEFROM ATTRIBUTESWHERE ATTRIBUTE_NAME='APP_CODE'視圖2V_ATTRIBUTE_GROUPS_ATTR這個(gè)視圖將返回所有不同的屬性組列表。這個(gè)視圖對(duì)記錄執(zhí)行一條含有DISTINCT子句的SELECT,記錄中的ATTRIBUTE_NAME是'ASSIGNEE_TYPE'保留的ATTRIBUTE_NAME,而ATTRIBUTE_VALUE是'ATTRIBUTE_GROUP'。
SQL范例CREATE OR REPLACE VIEW V_ATTRIBUTE_GROUPS_ATTRAS SELECT DISTICT ASSIGNEE GROUP_NAMEFROM ATTRIBUTESWHERE ATTRIBUTE_NAME='ASSIGNEE_TYPE'AND ATTRIBUTE_VALUE='ATTRIBUTE_GROUP';視圖3V_ATTRIBUTE_GROUPS_ASSIGN這個(gè)視圖將返回所有不同的受托人組列表。這個(gè)視圖對(duì)記錄執(zhí)行一條含有DISTINCT子句的SELECT,記錄中的ATTRIBUTE_NAME是'ASSIGNBE_TYPE'保留的ATTRIBUTE_NAME,而ATTRIBUTE_VALUE是'ATTRIBUTE_GROUP'。
SQL范例CREATE OR REPLACE VIEWV_ATTRIBUTE_GROUPS_ASSIGN ASSELECT DISTINCT ASSIGNEE GROUP_NAMEFROM ATTRIBUTESWHERE ATTRIBUTB_NAME='ASSIGNEB_TYPE'AND ATTRIBUTE_VALUE='ASSIGNEE_GROUP';視圖4V_ATTRIBUTE_USERS這個(gè)視圖將返回所有不同的屬性用戶列表。這個(gè)視圖對(duì)記錄執(zhí)行一條含有DISTINCT子句的SELECT,記錄中的ASSIGNEE等于在Oracle數(shù)據(jù)程序庫表ALL_USERS中找到的USER_NAME。
SQL范例CREATE OR REPLACE VIEW V_ATTRIBUTE_USERS ASSELECT DISTINCT ASSIGNBE USERIDFROM ATTRIBUTES,ALL_USERSWHERE ASSIGNBE=USBRNAME;視圖5V_ATTRIBUTB_GROUPS_ALL這個(gè)視圖將返回系統(tǒng)中所有不同的組列表。這包括屬性組和受托人組。這個(gè)視圖對(duì)記錄執(zhí)行一條含有DISTINCT子句的SELECT,記錄中的ASSIGNEE不是屬性用戶。
SQL范例CREATE OR REPLACE VIEW V_ATTRIBUTE_GROUPS_ALL ASSELECT DISTINCT ASSIGNBE GROUP_NAMEFROM ATTRIBUTES,V_ATTRIBUTE_USERSWHERE ASSIGNBE=USBRID(+)
AND USERID IS NULL;視圖6V_USER_GROUPS這個(gè)視圖將返回分配給當(dāng)前連接到Oracle用戶的所有組的列表。這個(gè)結(jié)果包括直接分配給用戶的組和間接分配給用戶的組。進(jìn)一步說,就是組分配給ASSIGNEE GROUPS,而ASSIGNEE GOUPS又分配給了用戶。這個(gè)視圖執(zhí)行使用CONNECT BY子句的系統(tǒng)樹型查詢。
SQL范例CREATE OR REPLACE VIEW V_USER_GROUPS ASSELECT ATTRIBUTE_NAME,ATTRIBUTE_VALUEFROM ATTRIBUTESWHERE ATTRIBUTE_NAME!='ASSIGNEE_TYPE'START WITH ASSIGNEE=USERCONNECT BY ASSIGNEE=PRIOR ATTRIBUTE_VALUEAND ATTRIBUTE_NAME='ASSIGNED_GROUP';視圖7V_USER_ATTR_APPS這個(gè)視圖返回一列表,列表中是分配給當(dāng)前連接到Oracle用戶的所有屬性,及相應(yīng)的APP_CODE。這個(gè)視圖將把分配給用戶的組(V_USER_GROUP)列表,ATTRIBUTES表,和帶有相應(yīng)APP_CODE變量(V_ATTRIBUTE_APP_CODES)的ATTRIBUTE_GROUPS列表結(jié)合起來。
SQL范例CREATE OR REPLACE VIEW V_USER_ATTR_APPS ASSELECT ATTR.ATTRIBUTE_NAME,ATTR.ATTRIBUTE_VALUE,APPS.APP_CODEFROM V_USER_GROUPS GROUPS,ATTRIBUTES ATTR,V_ATTRIBUTE_APP_CODES APPSWHERE GROUPS.ATTRIBUTE_VALUE=ATTR.ASSIGNEEAND ATTR.ASSIGNEE=APPS.ASSIGNEE
AND ATTR.ATTRIBUTE_NAME NOT IN('ASSIGNED_GROUP','APP_CODE','ASSIGNEE_TYPE');視圖8V_USER_ATTR_HIGHEST_VALUES這個(gè)視圖將返回對(duì)于相應(yīng)的ATTRIBUTE_NAME來說級(jí)別最高的ATTRIBUTE_VALUE列表。這個(gè)視圖可以包含重復(fù)的條目,這樣在后面的討論中,V_USER_ATTRIBUTES視圖可以檢索這些不同值的列表。這個(gè)視圖將會(huì)為每個(gè)分配給當(dāng)前用戶的屬性,把APP_CODE、ATTRIBUTE_NAME和ATTRIBUTE_VALUE傳遞到ATTR_UTILS.HIGHEST_VALUE函數(shù)中。函數(shù)與程序相同,只是它可以作為查詢的一部分執(zhí)行,并返回一個(gè)值。
這里,函數(shù)返回當(dāng)前分配給用戶的最高級(jí)父值。在此視圖SQL范例之后是函數(shù)描述。
SQL范例CREATE OR REPLACE VIEWV_USER_ATTR_HIGHEST_VALUES ASSELECT APP_CODE,ATTRIBUTE_NAME,SUBSTR(ATTR_UTILS.HIGHEST_VALUE(APP_CODE,ARRTIBUTE_NAME,ATTRIBUTE_VALUE),1,30)ATTRIBUTE_VALUEFROM V_USER_ATTR_APPS;ATTR_UTILS.HIGHEST_VALUE函數(shù)要求三個(gè)輸入APP_CODE,ATTRIBUTE_NAME和ATTRIBUTE_VALUE。函數(shù)要先載入內(nèi)部屬性值表,此表由為給定用戶分配的所有屬性值組成,APP_CODE和ATTRIBUTE_NAME。函數(shù)可以利用一現(xiàn)成的視圖(即V_USER_ATTR_VALUE_LEVELS)完成這一工作。然后函數(shù)將使用當(dāng)前的屬性值,并找到這一值的所有父記錄。函數(shù)將使用如下的SQL查詢SELECT PARENT_VALUEFROM ATTRIBUTE_LEVELSWHERE ATTRIBUTE_NAME=P_ATTRIBUTE_NAME
START WITH CHILD_VALUE=P_ATTRIBUTE_VALUECONNECT BY CHILD_VALUE=PRIOR PARENT_VALUEORDER BY LEVEL;然后這個(gè)函數(shù)將每個(gè)父值與屬性值表中的記錄進(jìn)行比較,以確定其它分配了屬性的值中是否有父值,即當(dāng)前屬性值的父級(jí),祖父級(jí),及其它。如此后,最高級(jí)的屬性值被返回。否則當(dāng)前屬性值被返回。
視圖9V_ATTR_VALUE_LEVELS這個(gè)視圖將返回一列表,包括ATTIBUTE_NAME、相關(guān)的ATTRIBUTE_VALUE和變量相應(yīng)的級(jí)別。例如,最高級(jí)ATTIBUTE_VALUE將擁有值為1的ATTRIBUTE_LEVEL,而值的子級(jí)將擁有值2。這個(gè)視圖執(zhí)行使用CONNECT BY子句的系統(tǒng)樹型查詢。
SQL范例CREATE OR REPLACE VIEW V_ATTR_VALUE_LEVELS ASSELECT ATTRIBUTE_NAME,CHILD_VALUE ATTRIBUTE_VALUE,LEVEL VALUE_LEVELFROM ATTRIBUTE_LEVELSSTART WITH PARENT_VALUE IS NULLCONNECT BY PARENT_VALUE=PRIOR CHILD_VALUEAND ATTRIBUTE_NAME=PRIOR ATTRIBUTE_NAME;視圖10V_USER_ATTR_VALUE_LEVELS這個(gè)視圖將返回所有分配給用戶的屬性及其相應(yīng)級(jí)別的列表。這個(gè)視圖將把分配給當(dāng)前連接Oraele的用戶屬性的列表(V_USER_ATTR_APPS)和屬性與其相應(yīng)級(jí)別的列表(V_ATTR_VALUE_LEVELS)結(jié)合起來。
SQL范例CREATE OR REPLACE VIEWV_USER_ATTR_VALUE_LEVELSAS SELECT APP_CODE,ATTR.ATTRIBUTE_NAME,
ATTR.ATTRIBUTE_VALUE,NVL(VALUE_LEVEL,1)VALUE_LEVELFROM V_USER_ATTR_APPS ATTR,V_ATTR_VALUE_LEVELS LVLWHEREATTR.ATTRIBUTE_NAME=LVL.ATTRIBUTE_NAME(+)ANDATTR.ATTRIBUTE_VALUE=LVL.ATTRIBUTE_VALUE(+);視圖1lV_USER_APP_CODES這個(gè)視圖將返回所有各別的分配給當(dāng)前用戶的APP_CODE列表。這個(gè)視圖執(zhí)行使用CONNECT BY子句的系統(tǒng)樹型查詢。
SQL范例CREATE OR REPLACE VIEW V_USER_APP_CODES ASSELECT DISTINCT ATTR.ATTRIBUTE_VALUE APP_CODEFROM(SELECT ATTRIBUTE_NAME,ATTRIBUTE_VALUEFROM ATTRIBUTESSTART WITH ASSIGNEE=USERCONNECT BY ASSIGNEE=PRIOR ATTRIBUTE_VALUEAND ATTRIBUTE_NAME='ASSIGNED_GROUP')GROUPS,ATTRIBUTES ATTRWHERE GROUPS.ATTRIBUTE_VALUE=ATTR.ASSIGNEEAND ATTR.ATTRIBUTE_NAME='APP_CODE';視圖12V_USER_ATTRIBUTES這個(gè)視圖返回一列表,表中為所有分配給用戶的屬性,和只是相應(yīng)ATTRIBUTE_NAME的最高級(jí)ATTRIBUTE_VALUE。這個(gè)視圖在V_USER_ATTR_HIGHEST_VALUES(V_USER_ATTR_VALUE_LEVELS)上執(zhí)行SELECT DISTINCT。
SQL范例CREATE OR REPLACE VIEW V_USER_ATTRIBUTES AS
SELECT DISTINCTAPP_CODE,ATTRIBUTE_NAME,ATTRIBUTE_VALUEFROM V_USER_ATTR_HIGHEST_VALUES;在Oracle環(huán)境中,為了確定將ATTRIBUTES表和ATTRIBUTE_LEVELS表中的數(shù)據(jù)正確存儲(chǔ),最好是只用Oracle程序執(zhí)行所有對(duì)用戶屬性的存儲(chǔ)。這是可以保證的,通過在用戶屬性系統(tǒng)內(nèi)限制訪問不同目標(biāo),如表、視圖、程序和函數(shù)。只讀權(quán)限應(yīng)該給ATTRIBUTES表和ATTRIBUTE_LEVELS表,以及所有的視圖。用于存儲(chǔ)這些表的Oracle程序,其執(zhí)行權(quán)限應(yīng)該只給用戶屬性管理者。這樣可以確定未被授權(quán)的用戶不能操縱屬性或?qū)傩约?jí)別。
本發(fā)明已經(jīng),參考了一些有說明性的范例和實(shí)例描述,但這些不能理解為是限制本發(fā)明的范圍或是思想。在不背離所附權(quán)利要求中表述的發(fā)明范圍的前提下,可以在實(shí)際應(yīng)用中,由本領(lǐng)域的技術(shù)人員進(jìn)行許多修改。
權(quán)利要求
1.在可以運(yùn)行至少一個(gè)應(yīng)用程序和保存有數(shù)據(jù)庫的計(jì)算機(jī)系統(tǒng)中,每個(gè)應(yīng)用程序至少有一個(gè)功能部件,一種定義用戶對(duì)至少一個(gè)功能部件訪問的方法包括以下步驟給所述用戶分配至少一個(gè)屬性;將至少一個(gè)屬性存儲(chǔ)在數(shù)據(jù)庫的第一個(gè)表中;運(yùn)行計(jì)算機(jī)系統(tǒng)中應(yīng)用程序;從第一個(gè)表中檢索一個(gè)或多個(gè)所述至少一個(gè)分配給用戶的屬性;施加檢索到的屬性,由此根據(jù)檢索的屬性定義用戶對(duì)應(yīng)用程序至少一個(gè)功能部件的訪問。
2.權(quán)利要求1中所述的方法,其中一個(gè)或多個(gè)所述至少一個(gè)功能部件與訪問數(shù)據(jù)的能力相關(guān)。
3.權(quán)利要求1中所述的方法,在運(yùn)行步驟之前,包括以下步驟給每個(gè)所述至少一個(gè)屬性的實(shí)際值分配父值,由此一個(gè)或多個(gè)父子關(guān)系被建立;和將一個(gè)或多個(gè)父子值關(guān)系存儲(chǔ)在數(shù)據(jù)庫的第二個(gè)表中;在所述施加步驟之前,該方法還包括以下附加步驟從第二個(gè)表中檢索一個(gè)或多個(gè)父子值關(guān)系;依據(jù)檢索的父子值關(guān)系決定其中一些檢索的屬性是否可以被刪除。
4.在可以運(yùn)行至少一個(gè)應(yīng)用程序和保存有數(shù)據(jù)庫的計(jì)算機(jī)系統(tǒng)中,每個(gè)應(yīng)用程序至少有一個(gè)功能部件,一種定義用戶對(duì)至少一個(gè)功能部件訪問的方法包括以下步驟給所述用戶分配至少一個(gè)屬性;將所述至少一個(gè)屬性存儲(chǔ)在所述數(shù)據(jù)庫的第一個(gè)表中;在計(jì)算機(jī)系統(tǒng)中運(yùn)行應(yīng)用程序;從數(shù)據(jù)庫中第一個(gè)表中檢索一個(gè)或多個(gè)所述至少一個(gè)屬性分配給用戶;提供檢索的屬性用于運(yùn)行應(yīng)用程序;和施加屬性,由此根據(jù)檢索的屬性定義用戶對(duì)應(yīng)用程序所述至少一個(gè)功能部件的訪問。
5.權(quán)利要求4中所述的方法,在運(yùn)行步驟之前,還包括一附加步驟,根據(jù)分配給所述用戶的至少一個(gè)屬性,向用戶提供運(yùn)行一個(gè)或多個(gè)應(yīng)用程序的選擇。
6.權(quán)利要求4中所述的方法,其中一個(gè)或多個(gè)至少一個(gè)功能部件與訪問數(shù)據(jù)的能力相關(guān)。
7.權(quán)利要求4中所述的方法,在運(yùn)行步驟之前,包括以下附加步驟給每個(gè)所述至少一個(gè)屬性的實(shí)際值分配父值;將父子值關(guān)系存儲(chǔ)在數(shù)據(jù)庫的第二個(gè)表中;在施加步驟之前,該方法還包括以下附加步驟從第二個(gè)表中檢索父子值關(guān)系;依據(jù)檢索的父子值關(guān)系決定檢索的屬性是否可以被刪除。
8.在可以運(yùn)行至少一個(gè)應(yīng)用程序和保存有數(shù)據(jù)庫的計(jì)算機(jī)系統(tǒng)中,每個(gè)應(yīng)用程序至少有一個(gè)功能部件,一種定義用戶對(duì)所述至少一個(gè)功能部件訪問的方法包括以下步驟給組分配至少一個(gè)屬性;將所述組分配給至少一個(gè)用戶;將組存儲(chǔ)在數(shù)據(jù)庫的一個(gè)表中;在計(jì)算機(jī)系統(tǒng)中運(yùn)行應(yīng)用程序;從數(shù)據(jù)表中檢索分配給用戶的組;和施加屬性,由此根據(jù)從表中檢索分配給組的至少一個(gè)屬性定義用戶對(duì)應(yīng)用程序至少一個(gè)功能部件的訪問。
9.權(quán)利要求8中所述的方法,其中給所述組分配的至少一個(gè)的屬性定義僅對(duì)所述應(yīng)用程序的訪問。
10.一種計(jì)算機(jī)系統(tǒng)包括運(yùn)行應(yīng)用程序的裝置,該程序至少有一個(gè)功能部件;維護(hù)數(shù)據(jù)庫的裝置;給用戶分配至少一個(gè)屬性的裝置;在數(shù)據(jù)庫的第一個(gè)表中存儲(chǔ)至少一個(gè)屬性的裝置;從所述第一個(gè)表中檢索給用戶分配的所述至少一個(gè)屬性的裝置;和施加屬性的裝置,由此根據(jù)分配給用戶的至少一個(gè)的屬性定義用戶對(duì)應(yīng)用程序至少一個(gè)功能部件的訪問。
11.權(quán)利要求10中所述的系統(tǒng),其中一個(gè)或多個(gè)所述至少一個(gè)功能部件與訪問數(shù)據(jù)的能力相關(guān)。
12.權(quán)利要求10中所述的系統(tǒng)進(jìn)一步包括給每個(gè)所述至少一個(gè)屬性的實(shí)際值分配父值的裝置,由此一個(gè)或多個(gè)父子關(guān)系被建立;在數(shù)據(jù)庫第二個(gè)表中存儲(chǔ)一個(gè)或多個(gè)父子值關(guān)系的裝置;在第二個(gè)表中檢索一個(gè)或多個(gè)父子值關(guān)系的裝置;依據(jù)檢索的父子值關(guān)系決定其中一些檢索的屬性是否可以被刪除的裝置。
13.一種計(jì)算機(jī)系統(tǒng)包括運(yùn)行應(yīng)用程序的裝置,該程序至少有一個(gè)功能部件;保存數(shù)據(jù)庫的裝置;給用戶分配至少一個(gè)屬性的裝置;在數(shù)據(jù)庫的第一個(gè)表中存儲(chǔ)至少一個(gè)屬性的裝置;從第一個(gè)表中檢索給用戶分配了至少一個(gè)屬性的裝置;向應(yīng)用程序提供檢索的屬性的裝置;和施加屬性的裝置,由此根據(jù)分配給用戶的至少一個(gè)屬性定義用戶對(duì)應(yīng)用程序至少一個(gè)功能部件的訪問。
14.權(quán)利要求13中所述的系統(tǒng),進(jìn)一步包括根據(jù)分配給用戶的至少一個(gè)屬性,向用戶提供運(yùn)行一個(gè)或多個(gè)應(yīng)用程序的選擇的裝置。
15.權(quán)利要求13中所述的系統(tǒng),其中一個(gè)或多個(gè)至少一個(gè)功能部件與訪問數(shù)據(jù)的能力相關(guān)。
16.權(quán)利要求13中所述的系統(tǒng)進(jìn)一步包括給每個(gè)至少一個(gè)屬性的實(shí)際值分配父值的裝置;在數(shù)據(jù)庫第二個(gè)表中存儲(chǔ)父子值關(guān)系的裝置;在第二個(gè)表中檢索父子值關(guān)系的裝置;依據(jù)檢索的父子值關(guān)系決定其中一些檢索的屬性是否可以被刪除的裝置。
17.計(jì)算機(jī)系統(tǒng)包括運(yùn)行應(yīng)用程序的裝置,該程序至少有一個(gè)功能部件;保存數(shù)據(jù)庫的裝置;給組至少分配一個(gè)屬性的裝置;給用戶分配組的裝置;在數(shù)據(jù)庫的第一個(gè)表中存儲(chǔ)組的裝置;從數(shù)據(jù)表中檢索給用戶分配的組的裝置;和施加檢索的屬性的方法,由此根據(jù)從數(shù)據(jù)表中檢索的至少分配給組的一個(gè)屬性定義用戶對(duì)應(yīng)用程序至少一個(gè)功能部件的訪問。
18.權(quán)利要求17中所述的系統(tǒng),其中為組分配的所述至少一個(gè)屬性定義僅對(duì)應(yīng)用程序的訪問。
全文摘要
一種方法和系統(tǒng)用于定義用戶對(duì)一個(gè)應(yīng)用程序所具有的一個(gè)或多個(gè)功能部件的訪問。一個(gè)或多個(gè)“屬性”分配給計(jì)算機(jī)系統(tǒng)(5)的用戶,并存儲(chǔ)到數(shù)據(jù)表(11,13,15)中。每一個(gè)屬性擁有一個(gè)名稱標(biāo)明被定義訪問的功能部件(例如,訪問數(shù)據(jù)庫中數(shù)據(jù)的權(quán)力),還有一個(gè)值定義訪問的權(quán)限。屬性可以成組進(jìn)行分配,從而減小為每個(gè)用戶單獨(dú)進(jìn)行屬性分配而準(zhǔn)備的負(fù)擔(dān)。當(dāng)一個(gè)應(yīng)用程序運(yùn)行,屬性被檢索并執(zhí)行,這樣就依照所檢索的屬性,用戶對(duì)應(yīng)用程序功能部件的訪問被定義。
文檔編號(hào)G06F12/14GK1318163SQ99811086
公開日2001年10月17日 申請(qǐng)日期1999年7月15日 優(yōu)先權(quán)日1998年7月17日
發(fā)明者J·N·格什菲爾德, S·G·巴杰 申請(qǐng)人:電子資訊系統(tǒng)有限公司