專利名稱:信息搜索和存取授權方法
技術領域:
本發明涉及計算機軟件、信息處理、數據庫管理應用和信息安全技術領域。
技術背景信息搜索是計算機信息處理,尤其是數據庫管理應用的相關軟件系統中普遍具備的基本功能。搜索的 實質含義,是給定適當條件并找出符合條件的信息,其同義詞包括諸如檢索、查詢、査找等類似的詞語。 一個實用的軟件系統通常涉及多種信息類別,而不同信息類別之間的基本差異就在于它們具有不同的數據 記錄結構。信息搜索的處理過程一般都要呈現相應的軟件操作界面,即搜索界面,讓用戶指定搜索條件; 而為了搜索不同類別的信息,通常的做法是相應呈現與信息的數據記錄結構相關的不同搜索界面。有的軟 件為了增強搜索功能,達到能夠按照信息記錄結構的任意字段進行搜索之功效,甚至將信息記錄的錄入界 面直接用作搜索界面。搜索界面因信息類別不同而呈現多樣化的方法存在明顯的缺陷, 一是加重用戶適從 負擔,二是增加軟件開發時間成本,三是導致軟件的設計界面和編程代碼不易移植和復用。本發明人在"信 息處理方法"發明(中國專利申請號95118084. 3,公開號CN1131767)中,曾提出針對抽象信息結構獨立 編程而實行量化查詢的思路,但還未給出完整通用的搜索方法。存取授權也是計算機信息處理,尤其是數據庫管理應用的相關軟件系統中事關信息安全的重要功能。 用戶對信息的存取(包括搜索)必須經過授權,才能保障信息被合法、安全、有序地使用。微軟公司在其 IIS和ASP.NET服務軟件中,在安全性方面采取對文件、IP地址/URL及角色的授權措施;在其SQL Server 數據庫管理系統軟件中,可以為登錄用戶指定許可訪問的數據庫和所在數據庫中的角色,也可對數據庫中 的表和列指定存取權限。許多數據庫管理應用軟件實施存取授權的主要辦法,也僅限于為用戶就許可存取 的信息類別,在增加、刪除、查詢、修改諸操作權限意義上加以區別授權。現有的存取授權方法,仍局限 于在文件、數據庫、數據表級別對象上的授權,尚未深入到信息內部的細分內容范圍,而這在實際應用中 往往又是十分必要的。發明內容本發明提出一種信息搜索方法,旨在為簡化與規范軟件的信息搜索功能實現,提供一種新的思路。信息搜索的實質抽象,是先構造篩選器(或稱過濾器),然后用之于搜索,從而獲得所需信息。 一個 篩選器基本上包含兩個部分 一個條件集和一種條件組合邏輯。條件集由一組條件構成,每項條件可表達 為數據記錄字段名、運算符、條件值的三段式連貫表示形態,例如"年齡《28"。 一種信息類別通常對 應一種數據記錄結構,在數據庫中則對應一個表結構,字段名即表中的列名或列的別名。記錄字段(即數 據表的列)除了具有名稱之外,還具有諸如數據類型、數據長度和精度等屬性,其中,數據類型至為關鍵。 在數據庫管理系統中,所有字段都有確定的數據類型。運算符亦稱操作符,是在條件中表達比較關系的符 號,可以是數學意義上的數值比較符號,比如從這樣一組符號(逗號分隔){<,《,=,#,》,>,Max, Min, G, }中取其一,其中,"Max"和"Min"分別定義表示"最大值"和"最小值"的運算符,統稱 為"極值"運算符,和"◎"分別定義表示"介于…范圍之內"和"介于…范圍之外"的運算符, 統稱為"區間"運算符;還可以是語言謂詞意義上的符號,比如從這樣一組詞匯(逗號分隔){是,非,包 含,不含,左含,右含,空白}中取其一。所述運算符,包括極值運算符和區間運算符,并不局限于如上 所示符號,而是可以自由定義的。運算符的選用與字段的數據類型有密切關系,例如,數值數據類型的字 段適用數值比較符號,文字數據類型的字段適用語言謂詞符號。條件值的取值與字段的數據類型有關,對 數值數據類型取值為數值,對文字數據類型取值為文本字符串。有的文字數據類型字段的數據有預知的有 限選項,比如,性別只有"男"、"女"、"不詳"三個選項,則在將其編碼字典化處理之后,字段的數據 類型可改成整數型,條件值即為選項編碼或其外在字典項名。條件值的數目不但與字段名(即其數據類型) 有關,而且與運算符有關。例如,在關于人的身份信息的記錄結構中,字段名"年齡"的數據類型屬于數 值類型,"年齡《28"表示"年齡小于或等于28",條件值只有一個即"28";特別地,"年齡Max"和"年齡Min"分別表示"年齡最大"和"年齡最小",條件值即為空,而"年齡E 28 38"和"年齡◎ 28~ 38"則分別表示"年齡介于28至38范圍之內"和"年齡介于28 38范圍之外",條件值即為一數值界偶 (即由一個基值和一個上限構成用于表示范圍的一對數值)。條件集一般包含一項以上條件,但其特例可 以為空集,即意味著無條件。當條件集包含兩項以上的多項條件時,則需明確其中所有條件共同作用的邏 輯組合關系。條件組合邏輯一般是"與"、"或"、"非"等,在構造篩選器時明確指定,或者,若不指定則 隱含確定之。為了控制搜索結果的輸出顯示順序,可以選擇性地,將篩選器的構成擴展到包含用來排序和 /或分組的字段標識,以及排序方式(即升/降,亦即遞增/遞減)的指示。
設計一種軟件操作界面,即搜索界面,來構造篩選器。搜索界面布置的核心,是一個用于構造條件的 組件,該組件的構成對應于條件的三段式表達形態,包括三部分構件 一個包容和顯示字段名的列表,一 個包容和顯示運算符的列表,和一個或多個用于輸入條件值的列表或編輯框或其他類型控件。本發明所說 的列表,是指可包容、顯示多項數據和提供選取操作的窗體控件,有多種形態的可以選用,如下拉列表框、 平展的列表框、多列的列表框、數據表格(即數據網格),等。在搜索界面打開期間,軟件程序的基本處 理流程是,先將對應信息類別記錄結構的部分字段乃至全部字段的名稱或別名填充第一列表,并裝載對應 字段的屬性,進而根據用戶選擇的字段,査知所選字段屬性中的數據類型,據此填充相應一組運算符到第 二列表,然后,根據用戶選擇的運算符,呈現條件值構件(即控件)供用戶輸入條件值。對于數值數據類 型的字段,若所選運算符(比如"=")使得條件值應為單值時則呈現一個編輯框,若所選運算符(比如 區間運算符)使得條件值應為界偶時則呈現一至兩個編輯框,若所選運算符(比如極值運算符)使得條件 值應為空時則可禁用(即禁止輸入)或不呈現(即隱藏)條件值控件;對于文字數據類型的字段,只需呈 現一個編輯框作為條件值控件;對于編碼字典化的字段,則呈現第三列表作為條件值控件,其中填充對應 字典選項供用戶選擇;對于日期、時間數據類型的字段,既可視為數值類型的字段同樣對待,也可呈現相 應的專用控件。核心組件的界面構成和運作處理,其三構件之間是密切相關和敏感聯動的因第一列表字 段名的選定而關聯地決定第二列表運算符的裝入,又因第二列表運算符的選定而關聯地決定條件值構件的 呈現類型和數目。特別地,在關聯填充到第二列表的運算符中,至少有一組運算符包含極值運算符和/或 區間運算符,以增進條件作用于篩選的功能、效率和靈活性。當極值運算符被選中時無須輸入條件值,而 當區間運算符被選中時則可輸入一界偶為條件值。界面布置的構造條件組件的三部分構件,即第一列表、 第二列表和供輸入條件值的第三列表或編輯框或其他類型控件,按照閱讀的習慣順序自左向右連接,基本 上橫向排列,方便用戶觀察理解和選擇輸入,而每當用戶在此三構件上選擇確定了選項和數據, 一項條件 的構造即告完成,反映在界面上的直觀視覺效果即表現為等同或近似于(即等效于)條件的三段式表達形 態。對于習慣上自右向左閱讀的語言文字,則可考慮將上述三部分構件的順序逆轉排列。上述三部分構件 雖然也可以順序縱向排列,但是,采取基本上橫向順序排列的布置方式是本設計的特征,更能體現構件之 間的關聯性和構造條件過程的直觀性。搜索界面布置另外一個列表,稱為第四列表,用來收集如上所述所 構造的條件,結果形成條件集。搜索界面布置有一個或一組選擇控件,羅列了條件的可選組合邏輯關系, 有默認選項并可任意改變選擇。 一個明確的條件集及其條件組合邏輯,即構成了一個基本上完整的篩選器。 進而,還可以對這樣構成的篩選器加以擴展,以便控制搜索結果的輸出顯示順序,采取的辦法是對前面所 設計的搜索界面做兩點改進 一是在構造條件的組件之內添加選擇性輸入控件(如復選框、下拉列表框等), 供選擇指明具體字段是否用于排序和/或分組,而用戶輸入的選擇則作為條件的附加標識記入條件集;二 是在構造條件的組件之外添加選擇性輸入控件(如單選框、下拉列表框等),供選擇指明排序方式,而用 戶輸入的選擇則與條件集、組合邏輯并列記入篩選器。將篩選器保存到數據庫中作為備案,便可供隨時檢 索和重復使用。為此,搜索界面還可以專門設置一個列表和一個文本編輯框,前者用來包容和顯示既有篩 選器備案,從中可方便檢索、瀏覽和選取,后者用來輸入新的篩選器備案名稱以便保存篩選器。搜索界面 還包括一些輔助的按鈕控件,定義功能包括將在構造條件的組件中完成構造的條件送入第四列表的條件 集,或反之從第四列表的條件集中提取和移出現有條件送入構造條件的組件,清空條件集列表,確認篩選 器,命名、保存和刪除篩選器備案,等等。
上述的搜索界面有兩種典型設計模式 一種是分離布置模式,將構造條件的組件與收集條件的第四列 表分離布置,概念和層次分明;另一種是集成布置模式,將構造條件的組件與收集條件的第四列表集成布置,使構造條件組件的構件分別布置在第四列表的對應列位置,并隨外部操作的指向而適時、動態地呈現 或隱蔽在所處列表的行位置,操作直觀簡潔。集成布置模式是對分離布置模式的精簡,還可采用一個巧妙 的辦法,是在第一列表除字段名選項之外,或在第二列表除運算符選項之外,附加一個表示消除或刪除含 義的選項,比如"<消除>",而當選中該附加選項時,則刪除第四列表中的當前行位置上的條件,如此可 省去一個于第四列表外部刪除條件的按鈕。集成布置模式的一種變通設計方法,是以收集條件的第四列表 的字段名列,取代構造條件組件的字段名列表(即第一列表),而將原本要填充到后者的字段名改而直接 填充到前者,構造條件組件的字段名列表即可省略不用。本發明的搜索界面還可應用于移動終端(如手機、 PDA等)上實施的搜索,而鑒于移動終端的顯示屏幕往往尺寸受限,集成布置設計模式顯得更為適用。
如此設計的搜索界面,可以適用于不同的信息類別,亦即具有通用性。實際上,這樣的搜索界面應用 于不同的信息類別,唯一的差別僅在于第一列表(即字段名列表)所填充內容,即信息類別對應字段集的 不同;至于搜索界面的結構特征、軟件程序基本處理流程,以及用戶操作基本步驟,則都可以是相同或近 似的,本發明稱之為是同構的。為了能夠將同構的搜索界面應用于不同信息類別,只需著重解決對應信息 類別字段集裝入字段列表的問題。解決的一種辦法是,將同一個軟件所涉及的信息類別分類編碼,創建專 門的字段數據表,用于登記各類信息需在搜索時引用作條件的部分字段乃至全部字段的信息,其中包括信 息類別編碼、字段名、字段別名,以及字段屬性(數據類型、數據長度、數據精度等)。于是,在為具體 信息類別打開搜索界面時,只需針對該信息類別,關聯地從該字段數據表中檢索裝入屬于同一信息類別的 字段集到第一列表即可。
在字段屬性中,數據長度和數據精度是基本屬性,可以用來驗證條件值輸入的有效性。為了更嚴格、 更有效地驗證條件值,還可以將驗證規則的正則表達式登記為字段的附加屬性而用于驗證。為了使搜索界 面更加友好方便,還可以將字段數據的關聯幫助信息登記為字段的附加屬性,用于即時提示條件值的輸入 方法和樣例。
搜索界面的實現形式,在一般應用軟件中可以是窗體,在WEB應用軟件中可以是頁面,而在各種應用 軟件模式下都可以作為定制控件。為了便于移植和復用,可以作為中間件實現為動態鏈接庫(DLL)文件。 對于篩選器,可以附加一些說明信息,如篩選器的編碼、名稱、信息類別、屬主的用戶名稱或用戶代碼、 構造修改時間等,以便備案保存。將篩選器作為備案保存到數據庫中,可以作為數據記錄保存到數據庫內 部表,也可以作為數據文件存儲于數據庫之外,或者,還可以結合這兩種方式,將篩選器的說明信息、組 合邏輯和排序方式存儲于數據庫表,而將篩選器的條件集存為外部數據文件。由于篩選器備案記錄中包含 了信息類別,即能夠按信息類別進行分類檢索,從而實現篩選器備案按照信息類別分類存儲和使用。又由 于篩選器備案記錄中包含了用戶名稱或用戶代碼,即能夠按用戶名稱或用戶代碼進行分類檢索,從而實現 篩選器備案按照用戶名稱或用戶代碼分類存儲和使用。
篩選器用之于搜索過程,系由軟件提取篩選器并解釋執行。為了提高執行效率,可以針對篩選器中各 種可能的條件組合,預先設計一組參數化的數據庫存儲過程,以供調用執行。 一種更為靈活、簡潔的方式, 是將篩選器中的條件集及其組合邏輯和排序方式,轉換生成相應的SQL査詢條件字符串,然后用之于SQL 査詢語句中的WHERE子句。篩選器之條件集中的每項條件,其中的運算符在SQL語言中都有對應的關鍵字 表示,對數值類型有比較操作符或函數(如"<"、"< ="、"<〉"、"〉="、">"、"MAX O"、 "MIN O",等),對文字類型有字符操作符(如"LIKE"、通配符"%",等),對其他類型亦可借用前兩種 操作符,因而條件的表達式都容易生成;對標識排序的字段,收集之以逗號分隔排列,導之以"SORTBY", 再附加篩選器之排序方式在SQL語言中對應的關鍵字("ASC"或"DESC"),構成排序子句;對標識分組的 字段,收集之以逗號分隔排列,導之以"GROUP BY "構成分組子句;篩選器之條件組合邏輯,在SQL語 言中也有簡單對應的邏輯操作符關鍵字(如"AND"、 "0R"、 "N0T",等)。于是,將條件集中的各項條件先 分別轉化成SQL條件表達式子字符串,將這些子字符串用條件組合邏輯所對應的SQL語言中的邏輯操作符 關鍵字相連接,再連接排序子句和分組子句,即可生成篩選器相應的SQL查詢條件字符串。這樣的轉換功 能,在軟件程序代碼中,可實現為過程、子程序或功能函數。
本發明通過對篩選器的歸納抽象和搜索界面的設計,以及軟件程序相關處理,實現了一種可以通用的同構信息搜索方法。由于基于信息記錄結構字段,尤其對數值類型字段注重數量化意義上的比較,使得這 樣的搜索相對于純文本意義上的搜索,體現了量化搜索的效率優勢。又由于引入了排序和分組選項,以及 排序方式選項,使得這樣的同構搜索的結果,其輸出顯示還可以是有序的。
本發明還提出一種存取授權方法,是上述信息搜索方法的延伸應用,其基本思路是將篩選器用于存取 授權目的。
在計算機軟件系統,尤其是數據庫管理應用系統中,用戶(包括組) 一般分為兩類角色 一類是經常 實際搜索、存取信息的普通用戶,在此稱之為搜索用戶; 一類是承擔系統管理,包括信息管理和用戶管理 職責的特權用戶,稱之為管理員。雖然管理員也可以如同搜索用戶那樣使用系統,但其主要職責之一是為 管制用戶存取信息的權力而進行存取授權。存取授權的方法,是為用戶制訂授權方案,類似于為用戶定義 角色或級別。授權方案中,包括對各種信息類別(即信息對象)規定存取操作權限,如禁止、只讀、只寫、 讀寫、刪除,等。特別地,在授權方案中,還為涉及的信息類別引入相應的篩選器,以便將對具體類別信 息的存取操作進一步深入細化到該類信息的特定內容范圍。如此用于授權的篩選器,稱之為授權篩選器。 授權篩選器由管理員預先獨立構造和指定,搜索用戶既不能改變,也不能屏蔽其作用。相對于授權篩選器, 由搜索用戶構造和使用的篩選器則稱之為搜索篩選器。每當用戶搜索具體類別的信息時,邏輯上,信息數 據記錄首先經過該類別信息的授權篩選器的篩選,然后再經過該類別信息的搜索篩選器的篩選,最終才獲 得搜索結果。管理員所確定的授權篩選器在搜索過程中所起的作用是強制性的,而搜索用戶所確定的搜索 篩選器并不能排除其作用。
考慮實際應用情形,尤其是在大型管理應用軟件中,管理員可以有多個,他們相互之間可以是平行對 等關系或分級從屬關系。于是,允許多個管理員各自構造和指定自己的授權篩選器,總的授權篩選器即是 這樣的多重(即多個)授權篩選器疊加合成而得。邏輯上,信息數據記錄經過總的授權篩選器的篩選過程, 實質上是逐個地經過多重授權篩選器的層層篩選的過程。多重授權篩選器的排列或作用順序無關緊要,最 終的篩選效果實際上是相同的。多重授權篩選器,展現了多個管理員協同授權的體制安排。
授權篩選器可以向搜索用戶公開,以便搜索用戶能夠確切知道其所獲得的實際存取授權之詳情,當然, 搜索用戶除非是管理員,否則不能夠修改授權篩選器;也可以選擇不向搜索用戶公開,而使得授權篩選器 對搜索用戶是透明的,即讓用戶直觀感覺不到也無須意識到授權篩選器的存在,但授權篩選器確實在搜索 過程中隱含地起作用。
管理員構造授權篩選器, 一種辦法是采用某種適當的語言如SQL,將存取授權規則直接編輯成文本字 符串;另一種簡明便捷的辦法,是如同搜索用戶構造搜索篩選器那樣,使用與搜索界面相同或近似的操作 界面,來構造授權篩選器。由于授權篩選器只關注信息的內容范圍,而不理會信息的記錄順序,故授權篩 選器中無須標識排序/分組字段,也無須考慮排序方式。若借用搜索界面構造授權篩選器,則可禁用或隱 藏界面上的排序、分組和排序方式的選項控件及其在條件集列表中對應的排序、分組標志列。如果使用相 同或近似的操作界面構造,并且采用相同或相似的方式存儲,則稱授權篩選器與搜索篩選器是同構的。
為實施授權篩選器強制性地作用于搜索過程的機制,可以在搜索用戶確定搜索篩選器之后,由軟件程 序代碼將授權篩選器和搜索篩選器,先各自分別轉換生成相應的SQL查詢條件字符串,然后將兩者的SQL 査詢條件字符串,再進行邏輯"與"而合成為最終的SQL査詢條件字符串。將如此合成所得的SQL査詢條 件字符串,用之于搜索過程,即能保障授權篩選器和搜索篩選器的共同作用。至于將授權篩選器轉換生成 相應的SQL査詢條件字符串,當授權篩選器有多重時,簡單的辦法是先將各個授權篩選器分別轉換生成相 應的SQL査詢條件子字符串,然后再將各個子字符串進行邏輯"與"而合成為新的SQL査詢條件字符串。 當然,還可以在此轉換過程中,剔除重復條件的冗余,優化合成的SQL査詢條件字符串。
本發明通過引入篩選器應用于存取授權,實現了可以通用的精確存取授權方法。在軟件應用層面,這 種精確授權方法還可以用來安排工作、分配任務,以及在信息處理流程中發揮制約和協調作用。由于授權 篩選器可多重疊加,使得協同精確授權成為可能。
圖1是本發明的圖示。條件構造(10)組件,包括四個構件字段名(11)列表(即第一列表)、運算符(12)列表(即第二列表)、條件值(13)構件、序組標識(15),其中,前三個構件是基本的。另有 取值提示(14)是輔助性的,用于顯示輸入條件值的關聯幫助信息。字段名(11)列表裝入的是具體信息 類別的字段集,數據來源于數據庫(30)。運算符(12)列表,隨字段名(11)選項的確定,關聯地裝入 相應一組運算符,特別地,對數值類型字段,裝入的一組運算符可包括極值運算符和區間運算符。條件值(13)構件,隨運算符(12)選項的確定,關聯地呈現0至2個編輯框,或呈現一個列表(即第三列表) 或其他類型控件,以供輸入條件值。圖中的虛線箭頭表明了這些聯動的關系和方向。序組標識(15)可以 或缺,用于指明所選定的字段名(11)是否用于對搜索結果記錄集進行排序和/或分組。篩選器(20)包 括三個構件條件集(21)列表(即第四列表)、組合邏輯(22)選項控件、排序方式(23)選項控件, 其中,前兩個是基本的,后一個是擴展的、可或缺的。條件構成(10)組件構造的條件可以加入條件集(21) 列表,反之也可以從后者提取條件送入前者。組合邏輯(22)選項控件記錄選定的條件組合邏輯。排序方 式(23)選項控件記錄選定的排序方式。篩選器(20)可以被保存為備案到數據庫(30),也可以從數據 庫(30)檢索和提取備案到篩選器(20)。搜索過程(40)包括兩個邏輯過程授權篩選(41)、搜索篩選(42)。授權篩選(41)又由授權篩選(410)至(41n)共n (》1)個多重疊加而成。篩選器(20)既可 以作為授權篩選器用于授權篩選(41)過程,也可以作為搜索篩選器用于搜索篩選(42)過程。搜索過程(40)表明,從邏輯上看,數據庫(30)中的信息(即數據記錄),先經過授權篩選(41),再經過搜索篩 選(42),最終才獲得搜索結果(43)。其中,經過授權篩選(41)的過程,實質上是逐個地經過授權篩選(410)至(41n)的過程。圖中的實線箭頭表明了這些信息流動與處理流程的環節和方向。圖2是本發明之搜索界面的一個設計實例的窗體截屏圖示,按照前述的分離布置模式設計實現。界面 的標題是"搜索條件"。[條件備案]即篩選器備案,"原案"右側下拉列表框列出既有篩選器備案,"新案" 右側文本框供輸入新備案名稱之用;"刪除"按鈕針對"原案","保存"按鈕針對"新案"。[條件構造]組 件包括"字段名"下拉列表框、"運算符"下拉列表框、"條件值"屬下的一對文本編輯框分別表示取值范 圍的基值和上限,以及一個隱藏的下拉列表框僅當字段數據類型為字典時顯現(同時將隱藏文本編輯框 對)。[條件構造]組件的"字段名"下拉列表框下邊,還有"口排序口分組"復選項,用于標識選定字段 是否用于排序和/或分組,默認為未選標識。[條件列表]即條件集,"r'按鈕將上面[條件構造]中形成的 條件加進下面[條件列表]中,"t "則提取下面[條件列表]中的當前條件送入上面[條件構造]中以便修改。 排序方式單選項"〇升(Asc)〇降(Desc)"默認選擇"〇升(Asc)",組合邏輯單選項"〇與(And) O 或(Or)"默認選擇"與(And)",均可隨意改變選擇。[條件列表]之條件集,連同排序方式和組合邏輯之 選項則組成篩選器,保存之則為備案,選定備案則將填充顯示篩選器。"清空"按鈕清除[條件列表],"確 認"按鈕確定采用當前篩選器,"返回"則放棄并直接返回。圖3是本發明之搜索界面的另一個設計實例的窗體截屏圖示,按照前述的集成布置模式設計實現。該 設計是在圖2設計的基礎上的一種精簡實現,主要差別在于,取消了[條件構造]組件的固定分離布置,而 將其隱含布置于[條件列表]中,僅當輸入指向需要時才臨時地、動態地顯現組件的相應構件。當點擊[條 件列表]中的某行既有條件時,根據獲得焦點的具體列位置而在同一行上引發下列響應中的其中一種在 "字段名"列顯現"字段名"下拉列表框,在"運算符"列顯現"運算符"下拉列表框,在"條件值"列 顯現"條件值"適用控件,在"排序"列顯現"排序"復選框,在"分組"列顯現"分組"復選框。若按 照前述的變通方法,則可省略"字段名"下拉列表框不用,可在[條件列表]中的"字段名"列預先填充所 需字段名。新增的"添加"按鈕在[條件列表]中增加一個新行,顯現[條件構造]組件的構件,整齊排布在 新行上的對應列,以供輸入新條件;新增的"刪減"按鈕刪除[條件列表]中當前焦點所在行的條件。其余 部分與圖2相同。
具體實施方式
以下是實施本發明的實例,按WEB應用程序方式實施,且基于SQL Server數據庫管理系統。 實施信息搜索方法。第一步,分類登記信息字段。為軟件管理涉及的所有信息類別統一編碼,定義一個整型基的枚舉常量 表示之。在數據庫中創建一個數據表,命名為CndFields,表結構的列包括《DataSort (tinyint, 1), Serial(tinyint, 1), DataType (tinyint,l), FieldName (varchar, 40), FieldAlias (varchar, 40), LimitLen (tinyint,l), ToolTip (varchar, 100) },列名后的小括號內注明了列的數據類型和數據長度。在該表 中,登記每一種信息類別的相關字段集(即那些需要在搜索時用于篩選的部分或全部字段),對于每一個 信息字段的行記錄,其中,DataSort為所屬信息類別的編碼,Serial為該字段在同類別信息內部的序號, DataType為該字段的數據類型之編碼,FieldName為該字段的名稱,FieldAlias為該字段的別名,Limi比en 為該字段的輸入值限制長度(對字典類型則為對應字典表的代碼),ToolTip為關于該字段取值的提示信息。 將數據類型歸納編碼為{0-未用,l-文本,2-數值,3-日期,4-時間,5-日期時間,6-字典,7-復合}。第二步,設計搜索界面。如同圖2所示,設計成自定義控件頁面。第三步,編制程序代碼。每次打開搜索界面,都只涉及具體一種信息類別,而且己知是為某個用戶所 操作使用。在搜索界面的頁面裝入之初,先檢索屬于該用戶且限于該信息類別的所有篩選器備案,裝入"原 案"右側下拉列表框;然后,從CndFields表中檢索該信息類別的所有字段記錄行并按Serial列升序排 序,裝入"字段名"下拉列表框(FieldAlias列數據作為表項的Text屬性,FieldName、 DataType、 LimitLen 和ToolTip列變換成以逗號分隔的字符串作為表項的Value屬性)。用戶選擇"原案"右側下拉列表框, 選項改變引發的事件驅動,將裝入和顯示選中的篩選器(條件集列于[條件列表],按排序方式編碼設置排 序方式單選項,按條件組合邏輯編碼設置組合邏輯單選項)。用戶選擇"字段名"下拉列表框,選項改變 引發的事件驅動,將裝入和顯示選中字段的數據類型所對應的一組運算符到"運算符"下拉列表框,并決 定"條件值"屬下構件,對字典類型隱藏文本編輯框而顯現下拉列表框且裝入對應字典項,對非字典類型 則顯現文本編輯框而隱藏下拉列表框;此外,還用ToolTip列設置"條件值"屬下的一對文本編輯框的 ToolTip屬性。數據類型適用的運算符,對文本類型是{" = ", "包含","不含","左含","右含","空白"},對數值、日期、時間、日期時間類型是{"<","《","=",,"》",">","Max" , "Min","介于","介外"},對字典、復合類型是{ " = " , }。用戶選擇"運算符"下拉列表框,選項改變引發的事件驅動,將根據選中運算符確定條件值控件呈現的數目對"Max"和"Min" 不呈現(即隱藏),對"介于"和"介外"呈現一對文本編輯框,其他情形都只呈現一個下拉列表框(對 字典類型)或文本編輯框(對非字典類型)。當光標停留在"條件值"屬下文本編輯框輸入條件值時,控 件ToolTip屬性將自動作為提示信息顯現出來。還需為界面中的各個按鈕,按照上述圖2說明中的定義, 分別編制單擊事件驅動響應程序代碼。篩選器保存為備案,采取在數據庫中保存描述記錄而在庫外保存條 件集的方式。在數據庫中創建一個數據表,命名為FilterDoc,表結構的列包括{ DocName (varchar, 40), UserID (varchar, 30), DataSort (tinyint, 1), DocNum (smallint, 1), SortBy (tinyint, 1), Logic(tinyint,l) },其中,DocName為篩選器名稱,UserID為用戶標識,DataSort為信息類別編碼,DocNum 為篩選器在相同用戶標識、相同信息類別范圍內的編號,SortBy為排序方式選項編碼,Logic為條件組合 邏輯選項編碼。條件集保存為特定目錄〈FilterDir〉之下的文本文件,其中,每項條件按"字段名,數據 類型,運算符,條件值(基值),條件值(上限),排序標識,分組標識"的格式存為一行文本,文件命名 規則是"UserID. DataSort (2位數)DocNum (4位數)",以此建立篩選器從FilterDoc表記錄到條件集文 件的映射。為將篩選器轉換生成相應的SQL査詢條件字符串,特別編制專門的功能函數SQLbyFilter(), 其傳入參數包括篩選器記錄的UserID、 DataSort、 DocNum,返回所生成的SQL査詢條件字符串。該函數從 FilterDoc表中讀取由參數指定的記錄,并從〈FilterDir〉目錄下讀入對應條件集文件所有文本行,逐行對 條件進行轉換組合。再編賴「一個同名的重載功能函數SQLbyFilter(),其傳入參數空缺,直接從搜索界面 中,提取條件列表框中全部條件,按照既定組合邏輯選項,逐個對條件進行轉換組合,返回所生成的SQL 査詢條件字符串。第四步,使用搜索。在軟件中,于每個需要搜索信息的頁面,布置搜索界面自定義控件。每當搜索具 體類別信息時,激活打開搜索界面,而在搜索界面因"確認"返回后,調用SQLbyFiIter ()函數獲得SQL 査詢條件字符串,用之于實施信息搜索,所獲得的搜索結果信息(記錄集)即可交付后續處理(如顯示、 統計、打印,等)。實施存取授權方法。第一步,設計數據結構。在數據庫中創建一個數據表,命名為Accredit,用于存儲授權方案的記錄, 表結構的列包括UD (int, 1), DocName (varchar, 40), RoleGrade (tinyint, 1), RegIP (varchar'15), AccreditAccess (tinyint, 1), AccreditFilter (smallint, 1), UserAccess (tinyint, 1), UserFilter(smallint, 1),},其中,ID為記錄主鍵標識,DocName為授權方案名稱,RoleGrade為角色級別編碼, RegIP為限制登錄IP地址,AccreditAccess為本表信息的操作權限代碼,AccreditFilter為本表信息的 授權篩選器編號,UserAccess為用戶信息的操作權限代碼,UserFilter為用戶信息的授權篩選器編號, 省略的是為其他需要管制存取的信息類別的操作權限代碼和授權篩選器編號。角色級別編碼定義為{0-未 定,l-普通,2-監管,3-維護}。操作權限代碼定義為{0-禁止,1-瀏覽(列表),3-瀏覽/閱讀,7-瀏覽/ 閱讀/改寫,15-瀏覽/閱讀/改寫/刪除},是由2進制測試位集{1-瀏覽,2-閱讀,4-改寫,8-刪除}的有效 組合。授權篩選器編號對應的篩選器記錄,也與搜索篩選器一道存儲在前述的FilterDoc表中和 〈FilterDir〉目錄下,區別僅在于,授權篩選器記錄的UserID列值為空串,而且其條件集文件命名規則是"_ DataSort(2位數)DocNum (4位數)"。又在用戶信息表中,明確包括一列AccreditID (int, 1),對 應存放指定授權方案的ID值。第二步,設計操作界面。在用戶信息記錄管理頁面上,設置一個只讀的授權方案文本編輯框,用于顯 示授權方案記錄的標識和名稱,旁邊設置一個"授權"按鈕。另外設計一個授權方案頁面,用于管理授權 方案記錄。在授權方案頁面上,為Accredit表結構的所有列都配置對應的窗體控件,其中,分別對所有 涉及的各種信息類別,為其操作權限配置一個下拉列表框,為其授權篩選器配置一個只讀的條件集列表、 一個只讀的組合邏輯文本編輯框和一個"篩選器"按鈕。還設置"保存"、"確認"和"返回"按鈕。授權 篩選器的管理頁面就采用前述的搜索界面設計,即直接放置該自定義控件,但禁用(隱藏)"口排序口分 組"復選項和排序方式"〇升(Asc) O降(Desc)"單選項。第三步,編制程序代碼。在用戶信息記錄管理頁面,為"授權"按鈕編制單擊事件驅動響應程序代碼, 激活打開授權方案頁面,確認的返回將在授權方案文本編輯框顯示授權方案的標識和名稱。在授權方案頁 面,于該頁面裝入之初,讀取給定ID的授權方案記錄(如果存在的話)設置顯示于頁面各控件。為各個 信息類別的"篩選器"按鈕分別編制單擊事件驅動響應程序代碼,以各自的信息類別編碼為整型參數調用 一個共用的功能函數,該函數以傳入的信息類別編碼激活打開授權篩選器的管理頁面(即搜索界面),確 認的返回將在對應的控件位置顯示該信息類別的授權篩選器信息。為"保存"按鈕編制單擊事件驅動響應 程序代碼,將授權方案記錄保存到Accredit表中。第四步,使用授權。在軟件中,于每個要檢驗控制信息存取之處,先讀取當前用戶的授權方案記錄, 從中判斷是否具有對所涉及信息類別的必需操作權限,有則允許存取,無則阻止存取。對于獲得存取授權 的信息搜索,則在用戶確定搜索篩選器之后,進而循此授權方案記錄提取相同信息類別的授權篩選器,將 授權篩選器和搜索篩選器分別轉換成相應的SQL查詢條件字符串,分別放在各自一對小括號內,再按組合 邏輯以關鍵字"AND"居間連接,然后與由排序/分組字段標識和排序方式決定的排序子句和/或分組子句 相連接,形成新的SQL查詢條件字符串,最終用作條件進行搜索操作。
權利要求
1. 一種信息搜索方法,是通過搜索界面構造篩選器,使之用于信息搜索過程,所述篩選器包含由一組條件構成的條件集并有確定的條件組合邏輯,還可包含排序方式,條件集中的每個條件均表達為包含字段名、運算符和條件值的三段式形態,條件值之特例可以為空或為界偶,所述搜索界面對不同記錄結構的信息是同構的,關聯地以具體信息記錄結構的部分乃至全部字段的名稱或別名填充第一列表,按用戶對第一列表的選擇,依選中字段的數據類型關聯地填充相應的一組運算符到第二列表,又按用戶從第一列表所選的字段名和從第二列表所選的運算符,關聯地呈現第三列表或編輯框或其他類型控件供輸入條件值,還可標識所選的字段名是否用于排序和/或分組,由此構造的條件收集到第四列表而形成條件集,其特征在于,所述第一列表、第二列表和供輸入條件值的第三列表或編輯框的關聯布置是基本上橫向順序排列的,使得它們的選項輸入數據所連貫表達的條件含義在直觀視覺上等效于條件的三段式形態。
2、 根據權利要求1所述的方法,其特征在于,所述第一列表、第二列表和供輸入條件值的第三列表 或編輯框,在第四列表的行上集成布置并隨構造條件的選項輸入操作的需要而動態地移動、呈現和隱藏。
3、 根據權利要求1和2所述的方法,其特征在于,所述搜索界面以軟件的窗體或頁面或控件的形式 實現。
4、 根據權利要求1所述的方法,其特征在于,所述篩選器以數據記錄或數據文件的方式存儲作為備 案,可供檢索和重復使用。
5、 根據權利要求4所述的方法,其特征在于,所述備案按信息類別分類存儲和使用。
6、 根據權利要求4所述的方法,其特征在于,所述備案按用戶名稱或用戶代碼區分存儲和使用。
7、 一種存取授權方法,是為用戶制訂授權方案,其中包括對信息類別和存取權的限制,其特征在于, 通過定義與信息類別對應的授權篩選器,來精確限定同類信息相關內容的可存取范圍,所述授權篩選器由 管理員在先獨立構造和指定,并強制性地作用于搜索過程,而搜索用戶所確定的搜索篩選器不排除其作用。
8、 根據權利要求7所述的方法,其特征在于,所述授權篩選器可有多重,分別由不同管理員獨立構 造和指定,然后疊加而起作用。
9、 根據權利要求7和8所述的方法,其特征在于,所述授權篩選器與搜索篩選器是同構的。
10、 根據權利要求7和8所述的方法,其特征在于,所述強制性地作用于搜索過程的機制,是將授權 篩選器和搜索篩選器各自對應轉換生成的SQL查詢條件字符串,再進行邏輯"與"而合成為新的SQL査 詢條件字符串。
全文摘要
信息搜索和存取授權方法,涉及計算機軟件、信息處理、數據庫管理應用和信息安全技術領域。由搜索界面構造篩選器用于搜索過程,記錄結構不同而搜索界面同構,橫向可集成布置,以記錄字段名關聯填充第一列表,依選中字段數據類型關聯填充運算符到第二列表,再依選中運算符關聯呈現第三列表或編輯框等供輸入條件值,還可標識排序分組字段,所構造條件收集到第四列表形成條件集;于授權方案定義對應信息類別的授權篩選器,來精確限定同類信息相關內容的可存取范圍,授權篩選器由管理員在先獨立構造指定,并強制作用于搜索過程,搜索用戶確定的搜索篩選器不排除其作用,授權篩選器可重疊并與搜索篩選器同構。本發明實現了同構量化搜索和協同精確授權。
文檔編號G06F17/30GK101221566SQ20071013897
公開日2008年7月16日 申請日期2007年7月15日 優先權日2007年7月15日
發明者周躍平, 霄 楊, 楊筑平 申請人:楊筑平