204)的用戶可定義用戶定義的過(guò)濾器(218),用于進(jìn)一步過(guò)濾數(shù)據(jù)庫(kù)中的數(shù)據(jù)。在這個(gè)示例中,管理員定義的過(guò)濾器(206)以及用戶定義的過(guò)濾器(218)均可稱為用戶過(guò)濾器。
[0029]如圖2中所示出的,系統(tǒng)(200)包括API (210)。在一個(gè)示例中,API (210)可以是公共AP1、專用API或服務(wù)API。在這個(gè)示例中,API (210)規(guī)定多個(gè)部件(例如,用戶設(shè)備(202)、應(yīng)用Π (204)、數(shù)據(jù)庫(kù)(212)以及過(guò)濾表(214))如何彼此交互。此外,API (210)包括多個(gè)系統(tǒng)過(guò)濾器(208)。在這個(gè)示例中,系統(tǒng)過(guò)濾器(208)包括客戶過(guò)濾器(208-1)、運(yùn)營(yíng)商過(guò)濾器(208-2)、供應(yīng)商過(guò)濾器(208-3)、SLA過(guò)濾器(208-4)、服務(wù)提供過(guò)濾器(208-5)、服務(wù)過(guò)濾器(208-6)以及服務(wù)定義過(guò)濾器(208-7)。
[0030]在一個(gè)示例中,客戶過(guò)濾器(208-1)基于客戶過(guò)濾數(shù)據(jù)庫(kù)(212)中的數(shù)據(jù)。例如,可基于客戶名字(例如,客戶X)過(guò)濾數(shù)據(jù)。運(yùn)營(yíng)商過(guò)濾器(208-2)基于運(yùn)營(yíng)商過(guò)濾數(shù)據(jù)庫(kù)(212)中的數(shù)據(jù)。供應(yīng)商過(guò)濾器(208-3)基于供應(yīng)商過(guò)濾數(shù)據(jù)庫(kù)(212)中的數(shù)據(jù)。SLA過(guò)濾器(208-4)基于SLA過(guò)濾數(shù)據(jù)庫(kù)(212)中的數(shù)據(jù)。服務(wù)提供過(guò)濾器(208-5)基于服務(wù)提供過(guò)濾數(shù)據(jù)庫(kù)(212)中的數(shù)據(jù)。服務(wù)過(guò)濾器(208-6)基于服務(wù)過(guò)濾數(shù)據(jù)庫(kù)(212)中的數(shù)據(jù)。服務(wù)定義過(guò)濾器(208-7)基于服務(wù)定義過(guò)濾數(shù)據(jù)庫(kù)(212)中的數(shù)據(jù)。
[0031]與給出的示例一致,如果用戶經(jīng)由API(210)執(zhí)行公共服務(wù)API,以獲取數(shù)據(jù)庫(kù)(212)中所有有效的SLA,則系統(tǒng)(200)基于請(qǐng)求和管理員定義的過(guò)濾器(206),通過(guò)API (210)過(guò)濾數(shù)據(jù)庫(kù)(212)中的數(shù)據(jù),以創(chuàng)建過(guò)濾的數(shù)據(jù)。例如,用戶可能正在從事客戶X的SLA。在這個(gè)示例中,使管理員定義的過(guò)濾器(206)以及客戶過(guò)濾器(208-1)能夠強(qiáng)制用戶的所有請(qǐng)求具有為客戶X設(shè)置的標(biāo)準(zhǔn),例如客戶名字。
[0032]如所示出的,圖2包括過(guò)濾表(214)。在一個(gè)示例中,過(guò)濾表(214)定義應(yīng)用的用戶,并將用戶與管理員定義的過(guò)濾器(206)關(guān)聯(lián),以允許用戶訪問(wèn)數(shù)據(jù)庫(kù)(212)中的數(shù)據(jù)或限定訪問(wèn)數(shù)據(jù)庫(kù)(212)中的數(shù)據(jù)。
[0033]此外,API (210)可包括安全引擎(216)。如將在本說(shuō)明書(shū)的其他部分中描述的,所有API必須遵守源自基本類的規(guī)則(例如,API基本管理器),以促使安全引擎(216)能夠應(yīng)用系統(tǒng)過(guò)濾器(208)。
[0034]雖然已參照包括七個(gè)過(guò)濾器的API描述了這個(gè)示例,但是API可包括多于七個(gè)過(guò)濾器。例如,API可包括數(shù)百個(gè)過(guò)濾器。此外,雖然已參照定義一個(gè)管理員定義的過(guò)濾器描述了這個(gè)示例,但是應(yīng)用UI可允許管理員定義數(shù)個(gè)用戶過(guò)濾器。
[0035]圖3是根據(jù)本文描述的原理的一個(gè)示例的過(guò)濾表的示例圖。如上所述,過(guò)濾表定義了應(yīng)用的用戶,并將用戶與管理員定義的過(guò)濾器關(guān)聯(lián),以允許用戶訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)或限定訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
[0036]如圖3中所示出的,過(guò)濾表(300)包括標(biāo)準(zhǔn)類型(302)、可用運(yùn)算符(304)以及值(306) ο在一個(gè)示例中,標(biāo)準(zhǔn)類型(302)可與可用運(yùn)算符(304)和值(306)關(guān)聯(lián)。例如,如果標(biāo)準(zhǔn)類型(302)是文本(302-1),則文本(302-1)與可用運(yùn)算符(304-1)(例如,定義、未定義、等于、不同于、包含、始于、結(jié)束于或其組合)關(guān)聯(lián)。此外,文本(302-1)與值(306)(例如,文本(306-1))關(guān)聯(lián)。在這個(gè)示例中,文本(306-1)可以是詞、術(shù)語(yǔ)、短語(yǔ)、字符、其他文本或其組合。
[0037]在另一個(gè)示例中,如果標(biāo)準(zhǔn)類型(302)是數(shù)值(302-2),則數(shù)值(302_2)與可用運(yùn)算符(304-2)(例如,定義、未定義、等于、不同于、包含、始于、結(jié)束于或其組合)關(guān)聯(lián)。此外,數(shù)值(302-2)與值(306)(例如,數(shù)值(306-2))關(guān)聯(lián)。在這個(gè)示例中,數(shù)值(306-2)可以是數(shù)字。
[0038]在又一個(gè)示例中,如果標(biāo)準(zhǔn)類型(302)是日期(302-3),則日期(302_3)與可用運(yùn)算符(304-3)(例如,定義、未定義、等于、不同于、之前、之后、之間、之外或其組合)關(guān)聯(lián)。此夕卜,日期(302-3)與值(306)(例如,根據(jù)運(yùn)算符的一個(gè)或兩個(gè)日期(306-3))關(guān)聯(lián)。例如,2014年I月15日與2014年I月15日關(guān)聯(lián)。
[0039]在再一個(gè)示例中,如果標(biāo)準(zhǔn)類型(302)是計(jì)數(shù)(302-4),則計(jì)數(shù)(302_4)與可用運(yùn)算符(304-4)(例如,定義、未定義、等于、不同于、任一或其組合)關(guān)聯(lián)。此外,計(jì)數(shù)(302-4)與值(306)(例如,計(jì)數(shù)(306-4))關(guān)聯(lián)。例如,計(jì)數(shù)(306-4)可以是數(shù)據(jù)集中的元素。
[0040]在再一個(gè)示例中,如果標(biāo)準(zhǔn)類型(302)是布爾值(302-5),則布爾值(302-5)與可用運(yùn)算符(304-5)(例如,定義、未定義、等于、不同于或其組合)關(guān)聯(lián)。此外,布爾值(302-5)與值(306)(例如,真/假(306-5))關(guān)聯(lián)。
[0041]圖4是根據(jù)本文描述的原理的一個(gè)示例,過(guò)濾數(shù)據(jù)庫(kù)中的數(shù)據(jù)的方法的示例流程圖。在一個(gè)示例中,方法(400)包括:基于用戶的標(biāo)準(zhǔn),在持久層獲取(401)管理員定義的過(guò)濾器,接收(402)來(lái)自用戶的從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)的請(qǐng)求,以及基于該請(qǐng)求和管理員定義的過(guò)濾器,通過(guò)API過(guò)濾(403)數(shù)據(jù)庫(kù)中的數(shù)據(jù),以創(chuàng)建過(guò)濾的數(shù)據(jù)。
[0042]如上所述,方法(400)包括:基于用戶的標(biāo)準(zhǔn),在持久層獲取(401)管理員定義的過(guò)濾器。在一個(gè)示例中,向管理員提供應(yīng)用Π來(lái)為用戶定義管理員定義的過(guò)濾器。在這個(gè)示例中,管理員輸入用戶的標(biāo)準(zhǔn),以確保用戶訪問(wèn)允許用戶訪問(wèn)的數(shù)據(jù)。管理員可輸入過(guò)濾器名字、作者、描述、描述管理員定義的過(guò)濾器的XML內(nèi)容或其組合。在一個(gè)示例中,用于描述管理員定義的過(guò)濾器的XML內(nèi)容驅(qū)動(dòng)API的行為。此外,管理員定義的過(guò)濾器可以是基于用戶的角色的??伸o態(tài)地定義角色,并且允許用戶訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)或限定用戶訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
[0043]此外,管理員定義的過(guò)濾器可接近于經(jīng)典過(guò)濾器模型,并且包括標(biāo)準(zhǔn)(例如圖3中描述的標(biāo)準(zhǔn)類型、可用運(yùn)算符、值或其組合)。此外,標(biāo)準(zhǔn)可通過(guò)布爾表達(dá)式(例如,AND/OR)鏈接至其他標(biāo)準(zhǔn)、過(guò)濾器、用戶或其組合。通過(guò)使用應(yīng)用UI來(lái)定義用戶過(guò)濾器,用戶過(guò)濾器的XML定義對(duì)用戶完全隱藏。
[0044]在一個(gè)示例中,可在任意時(shí)間改變標(biāo)準(zhǔn)而不用重啟過(guò)程。例如,在執(zhí)行應(yīng)用期間。
[0045]此外,管理員定義的過(guò)濾器可重用同樣的機(jī)制,以為用戶提供圖形過(guò)濾器。在這個(gè)示例中,用戶可在管理員定義的過(guò)濾器上進(jìn)一步定義用戶定義的過(guò)濾器,管理員定義的過(guò)濾器是管理員定義的。如上所述的,用戶定義的過(guò)濾器是由用戶定義的、用于進(jìn)一步過(guò)濾從數(shù)據(jù)庫(kù)返回的數(shù)據(jù)的過(guò)濾器。在一個(gè)示例中,用戶定義的過(guò)濾器可規(guī)定將向用戶返回?cái)?shù)據(jù)庫(kù)的前五個(gè)結(jié)果。結(jié)果,用戶過(guò)濾器可包括用戶定義的過(guò)濾器以及管理員定義的過(guò)濾器。如上所述,設(shè)置在持久層上的同樣的標(biāo)注重用于擴(kuò)展用戶過(guò)濾器到應(yīng)用U1
[0046]此外,持久層允許API和數(shù)據(jù)庫(kù)之間的數(shù)據(jù)交換。此外,持久層用于定義系統(tǒng)過(guò)濾器和用戶過(guò)濾器(例如,管理員定義的過(guò)濾器和用戶定義的過(guò)濾器)的所有可能的標(biāo)準(zhǔn),及其對(duì)數(shù)據(jù)庫(kù)的請(qǐng)求的影響。此外,在定義用戶過(guò)濾器時(shí)可支持及擴(kuò)展所有數(shù)據(jù)類型。
[0047]如上面在圖4中所述,方法(400)包括:接收(402)來(lái)自用戶的從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)的請(qǐng)求。如上所述,請(qǐng)求可以是SQL請(qǐng)求、OQL請(qǐng)求、.QL請(qǐng)求、其他請(qǐng)求或其組合。在一個(gè)示例中,圖2的過(guò)濾系統(tǒng)(200)不必理解數(shù)據(jù)訪問(wèn)對(duì)象層(DAO)將執(zhí)行哪個(gè)請(qǐng)求,以從數(shù)據(jù)庫(kù)返回過(guò)濾的數(shù)據(jù)。此外,過(guò)濾系統(tǒng)(200)不限定以特定的方式格式化的請(qǐng)求,以增加系統(tǒng)過(guò)濾器、用戶過(guò)濾器或其組合的任意安全標(biāo)準(zhǔn)。
[0048]在一個(gè)示例中,請(qǐng)求可規(guī)定用戶正