欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于服務(wù)組合的可定制查詢方法與平臺的制作方法

文檔序號:7696331閱讀:183來源:國知局

專利名稱::一種基于服務(wù)組合的可定制查詢方法與平臺的制作方法
技術(shù)領(lǐng)域
:本發(fā)明屬于計算機(jī)數(shù)據(jù)管理領(lǐng)域,具體涉及一種基于服務(wù)組合的可定制數(shù)據(jù)查詢方法及其平臺。
背景技術(shù)
:傳統(tǒng)基于Web的數(shù)據(jù)查詢由Web應(yīng)用系統(tǒng)針對每項(xiàng)數(shù)據(jù)査詢功能提供一個獨(dú)立的數(shù)據(jù)查詢條件輸入頁面。查詢條件輸入頁面是此項(xiàng)數(shù)據(jù)查詢功能的入口,頁面對應(yīng)的后臺邏輯固定,以系統(tǒng)硬編碼方式實(shí)現(xiàn)。對于存在復(fù)雜査詢條件輸入的功能,系統(tǒng)提供對簡單査詢條件做諸如"與""或""非"等邏輯拼接,構(gòu)成復(fù)雜査詢條件的輸入方式。用戶進(jìn)行數(shù)據(jù)查詢時,首先在系統(tǒng)提供的功能集中選擇需要的功能頁面,然后按照系統(tǒng)指定方式選擇、填寫査詢條件并提交數(shù)據(jù)查詢請求,最后在系統(tǒng)返回的固定格式應(yīng)答中獲得關(guān)心的結(jié)果。系統(tǒng)視從同一數(shù)據(jù)查詢條件輸入頁面進(jìn)入的不同用戶之間無差別,為這類用戶提供同樣的査詢服務(wù)。這類傳統(tǒng)方法存在以下問題第一、固定的數(shù)據(jù)查詢處理方式不能滿足用戶個性化查詢需求。對于同一功能,應(yīng)用系統(tǒng)只可接受頁面提供的待輸入條件,系統(tǒng)輸出則是固定格式的數(shù)據(jù)查詢結(jié)果。若用戶所預(yù)期的査詢條件不是系統(tǒng)提供的條件輸入頁面項(xiàng),則該查詢需求不能被此系統(tǒng)接受;若用戶不關(guān)心系統(tǒng)得到的查詢結(jié)果中的部分?jǐn)?shù)據(jù),且希望其被過濾以利于數(shù)據(jù)分析,或者希望重點(diǎn)突出某部分?jǐn)?shù)據(jù),則這種系統(tǒng)固定輸出結(jié)果格式的查詢處理方式,不能滿足這種具有用戶偏好性質(zhì)的需求。第二、應(yīng)用系統(tǒng)支持的數(shù)據(jù)査詢功能已預(yù)先分類,用戶的一次査詢動作被限制在一個提供的該查詢功能的頁面中。如果用戶需要進(jìn)行的査詢分類與應(yīng)用系統(tǒng)的査詢功能分類不同,則該査詢需求無法在系統(tǒng)提供的一個查詢頁面中完成,用戶需要在其他相關(guān)的系統(tǒng)頁面中進(jìn)行多次查詢,并由用戶在邏輯上比對得到的多個查詢結(jié)果。這種方式導(dǎo)致數(shù)據(jù)查詢效率低下,用戶的工作量增加,系統(tǒng)友好性差。第三、應(yīng)用系統(tǒng)開發(fā)時需要為每種數(shù)據(jù)查詢功能做硬編碼工作,工作量大且重復(fù)勞動多。第四、當(dāng)數(shù)據(jù)査詢應(yīng)用系統(tǒng)開發(fā)完畢投入使用之后,如有新功能需求產(chǎn)生,系統(tǒng)不能自動適應(yīng)需求的變更。若通過系統(tǒng)升級方式解決,耗費(fèi)人力物力的同時也極易破壞系統(tǒng)原有架構(gòu),使系統(tǒng)漸漸失去可維護(hù)性和可擴(kuò)展性。專利號為200610059824.1,"一種性能數(shù)據(jù)的定制査詢方法及系統(tǒng)"中提出一種性能數(shù)據(jù)的定制査詢方法,通過系統(tǒng)定制模板指定查詢對象的一個或多個相關(guān)屬性作為模板屬性并保存模板,用戶通過選擇模板并設(shè)置查詢參數(shù)構(gòu)造查詢請求。服務(wù)器解析出要查詢的模板屬性和查詢參數(shù),構(gòu)造出查詢語句執(zhí)行數(shù)據(jù)庫査詢。這種方法用戶只能在系統(tǒng)提供的模板中選擇需要的查詢模式,模板指定的是一次查詢的結(jié)果是何種屬性數(shù)據(jù),模板定制工作由系統(tǒng)管理員完成,用戶不能直接干預(yù),當(dāng)系統(tǒng)提供的模板不能滿足用戶的查詢需求的時候,用戶仍需要進(jìn)行多次査詢并手工拼接?xùn)嗽兘Y(jié)果甚至無法通過該系統(tǒng)獲得期望數(shù)據(jù)。服務(wù)器端查詢引擎對用戶數(shù)據(jù)查詢請求的處理方式為根據(jù)所述查詢參數(shù)動態(tài)構(gòu)造SQL語句后執(zhí)行數(shù)據(jù)庫查詢。這種處理方式生成的SQL語句在執(zhí)行之前,無法驗(yàn)證其邏輯合理性,而合理的SQL語句不能和對應(yīng)査詢功能關(guān)聯(lián),不具有重用性。
發(fā)明內(nèi)容本發(fā)明提出一種基于服務(wù)組合的可定制査詢方法與平臺,用戶通過指定的客戶端可視組件并通過選擇、填寫組件屬性值的操作,向平臺描述自身需求,數(shù)據(jù)查詢請求的初始狀態(tài)和目標(biāo)狀態(tài)被解析出后,搜索并組合出對應(yīng)的基本服務(wù)調(diào)用序列,然后執(zhí)行序列中的基本服務(wù),進(jìn)而得到包含用戶期望結(jié)果數(shù)據(jù)的結(jié)果集,并經(jīng)過篩選、排序、組裝后生成最終結(jié)果向用戶顯示。本方法中用戶主動向系統(tǒng)描述自身需求,系統(tǒng)通過接收用戶描述并動態(tài)分析處理,可有效適應(yīng)不同用戶的不同個性化需求,降低應(yīng)用系統(tǒng)開發(fā)工作量和后期維護(hù)成本,并提高了數(shù)據(jù)査詢應(yīng)用系統(tǒng)的友好性。使用戶主動地定制數(shù)據(jù)査詢,將査詢進(jìn)行得靈活而方便。一種基于服務(wù)組合的可定制查詢方法,包括以下步驟步驟1:建立可定制查詢客戶端和數(shù)據(jù)査詢服務(wù)器,并對領(lǐng)域內(nèi)數(shù)據(jù)進(jìn)行抽象分類,為所建立的模型構(gòu)建可編輯控件,存入可定制査詢客戶端中的領(lǐng)域數(shù)據(jù)對象^莫型庫,并在數(shù)據(jù)査詢服務(wù)器中構(gòu)建對應(yīng)的基本數(shù)據(jù)查詢服務(wù),存入基本數(shù)據(jù)査詢服務(wù)庫;步驟2:初始化可定制査詢客戶端的領(lǐng)域數(shù)據(jù)對象模型庫和存儲已有的定制功能的模板庫;用戶把自身個性化需求與禾莫板庫中的已有功能相比較,如果存在滿足用戶此次需求的功能的模版,從模板庫中選擇特定的功能的模板,頁面展示為此功能對應(yīng)定制的查詢內(nèi)容、查詢條件、結(jié)果顯示格式,并調(diào)整顯示格式,重新填寫定制的査詢條件屬性值,構(gòu)造相同功能的新請求;否則由領(lǐng)域數(shù)據(jù)對象模型庫和定制結(jié)果封裝子模塊定制數(shù)據(jù)查詢;步驟3:可定制查詢客戶端的定制結(jié)果封裝子模塊封裝用戶定制結(jié)果;如果本次定制來源于模板庫,設(shè)定模板的標(biāo)識位表示來源于已有定制+莫板,否則設(shè)定相應(yīng)的標(biāo)識表示為新定制;發(fā)送至數(shù)據(jù)查詢服務(wù)器的請求隊列管理子模塊;步驟4:請求隊列管理子模塊接收客戶端發(fā)送的數(shù)據(jù)查詢請求,并加入到請求隊列中;步驟5:請求解析子模塊取出請求隊列中的第一個請求,解析該請求后獲得初始狀態(tài),目標(biāo)狀態(tài),約束條件及結(jié)果顯示格式;如果請求隊列不為空,判斷此次數(shù)據(jù)查詢是否模板庫中功能的一種,如果是,則由執(zhí)行子模塊直接獲得其服務(wù)調(diào)用序列,轉(zhuǎn)步驟8;否則調(diào)用服務(wù)組合引擎進(jìn)行服務(wù)組合;如果請求隊列為空,則轉(zhuǎn)步驟10;步驟6:服務(wù)組合引擎根據(jù)初始狀態(tài)和目標(biāo)狀態(tài),調(diào)用服務(wù)代理子模塊獲得的當(dāng)前能夠使用的基本數(shù)據(jù)查詢服務(wù)信息,逐一處理初始狀態(tài)中的查詢過程,在滿足中間過程約束條件的前提下,為每一査詢過程進(jìn)行服務(wù)組合,生成服務(wù)調(diào)用序列;如果服務(wù)組合失敗,則轉(zhuǎn)到步驟10;步驟7:由定制存儲模塊存儲對應(yīng)的功能及服務(wù)調(diào)用序列到模板庫;步驟8:執(zhí)行子模塊按照服務(wù)調(diào)用流程序列的順序調(diào)用基本數(shù)據(jù)査詢服務(wù)庫中的基本數(shù)據(jù)查詢服務(wù),并協(xié)調(diào)服務(wù)間輸入輸出關(guān)系;如果出現(xiàn)異常則轉(zhuǎn)到步驟10;步驟9:由結(jié)果生成子模塊按照請求所描述結(jié)果顯示格式生成最終數(shù)據(jù)查詢分析結(jié)果,向客戶端返回應(yīng)答,進(jìn)行結(jié)果顯示;步驟10:由異常處理子模塊生成失敗信息,并返回給客戶端顯示。所述步驟1中的對數(shù)據(jù)進(jìn)行抽象分類是按照面向?qū)ο蟮乃枷耄瑢?shù)據(jù)進(jìn)行特征提?。粚⒊橄蟪龅念I(lǐng)域數(shù)據(jù)對象模型所包含的屬性作為對象模型的屬性,每個領(lǐng)域數(shù)據(jù)對象模型以客戶端腳本的方式被編寫為可定制査詢客戶端的可編輯控件,向應(yīng)用系統(tǒng)描述自身的數(shù)據(jù)査詢需求。所述步驟1中的領(lǐng)域數(shù)據(jù)對象模型庫包括邏輯控件,用運(yùn)算及邏輯操作對兩個或多個領(lǐng)域數(shù)據(jù)對象屬性之間的關(guān)聯(lián)關(guān)系進(jìn)行描述,每個邏輯控件以腳本方式被編寫。所述步驟1中的基本數(shù)據(jù)查詢服務(wù)庫的基本數(shù)據(jù)査詢服務(wù)與領(lǐng)域數(shù)據(jù)對象模型庫的領(lǐng)域數(shù)據(jù)對象模型一一對應(yīng),提供領(lǐng)域數(shù)據(jù)對象查詢的原子操作,僅通過對應(yīng)的領(lǐng)域數(shù)據(jù)對象模型的一個或幾個屬性,從后臺數(shù)據(jù)庫中獲得具有此屬性的數(shù)據(jù)對象實(shí)例的集合。所述步驟1中的基本數(shù)據(jù)查詢服務(wù)庫的每個基本數(shù)據(jù)查詢服務(wù)包含一個査詢關(guān)聯(lián)屬性的原子操作,獲得對應(yīng)領(lǐng)域數(shù)據(jù)對象的關(guān)聯(lián)數(shù)據(jù)對象及其屬性的原子操作,輸出關(guān)聯(lián)數(shù)據(jù)對象及關(guān)聯(lián)數(shù)據(jù)對象的屬性集合。所述步驟2中的定制數(shù)據(jù)查詢,包括如下步驟步驟a:在可定制查詢客戶端的頁面上從領(lǐng)域數(shù)據(jù)模型庫的控件中選擇各可編輯控件,指定本次查詢的各査詢內(nèi)容數(shù)據(jù)對象;選擇各可編輯控件的屬性作為本次數(shù)據(jù)査詢的結(jié)果數(shù)據(jù)列表的一列;'步驟b:在定制頁面上從領(lǐng)域數(shù)據(jù)模型庫的可視控件中選擇各可編輯控件,指定本次查詢的條件數(shù)據(jù)對象;選擇各可編輯控件的屬性并為該屬性選擇、填寫屬性值,并指定此次選擇的查詢條件用于的查詢內(nèi)容數(shù)據(jù)對象;步驟C:排列選擇的控件屬性的先后順序,填充定制頁面結(jié)果的數(shù)據(jù)列表表頭,并指定結(jié)果列表的排序列;步驟d:命名新定制的數(shù)據(jù)查詢,保存本次定制,并命名本次定制對應(yīng)的模板。所述步驟5中的初始狀態(tài),由査詢過程集合、査詢結(jié)果和服務(wù)調(diào)用序列組成;査詢過程集合包括本次用戶請求需要査詢的數(shù)據(jù)對象的查詢過程,査詢結(jié)果和服務(wù)調(diào)用序列為空。所述步驟5中的目標(biāo)狀態(tài),由査詢過程集合、査詢結(jié)果和服務(wù)調(diào)用序列組成;査詢過程集合為空,查詢結(jié)果為査詢過程集合中每個查詢過程的目標(biāo)數(shù)據(jù)對象,服務(wù)調(diào)用序列為一段空閑的內(nèi)存空間。所述步驟6中的服務(wù)組合,包括如下步驟stepl:服務(wù)組合引擎提取本次服務(wù)組合過程的源狀態(tài),包括查詢過程的目標(biāo)數(shù)據(jù)對象、查詢條件集合和空的服務(wù)調(diào)用序列;添加源狀態(tài)至用于臨時存儲數(shù)據(jù)的可用狀態(tài)隊列;step2:如果可用狀態(tài)隊列為空,則輸出服務(wù)組合失敗信息,服務(wù)組合過程結(jié)束;否則轉(zhuǎn)step3jstep3:從可用狀態(tài)隊列中取出位于隊列頭的可用狀態(tài)作為當(dāng)前狀態(tài);step4:如果當(dāng)前狀態(tài)的查詢條件為空,則輸出當(dāng)前狀態(tài)的服務(wù)調(diào)用序列,服務(wù)組合過程結(jié)束;否則將當(dāng)前狀態(tài)的查詢條件存儲于存儲査詢條件的臨時隊列;step5:如果臨時隊列為空,轉(zhuǎn)st印2;否則轉(zhuǎn)step6;step6:從臨時隊列中取出位于隊列頭的查詢條件作為當(dāng)前條件,搜索能用于當(dāng)前條件的基本數(shù)據(jù)查詢服務(wù)并査找其對應(yīng)的原子操作,如果所有基本數(shù)據(jù)查詢服務(wù)都已調(diào)用過,則轉(zhuǎn)step2;否則轉(zhuǎn)step7;step7:把查找到的原子操作以等價關(guān)系添加到當(dāng)前狀態(tài)的服務(wù)調(diào)用序列;step8:針對當(dāng)前狀態(tài)的當(dāng)前査詢條件,生成當(dāng)前狀態(tài)的后繼狀態(tài),并將后繼狀態(tài)加入可用狀態(tài)隊列,轉(zhuǎn)step5。所述step8生成當(dāng)前狀態(tài)的后繼狀態(tài)時,若當(dāng)前條件對應(yīng)的領(lǐng)域數(shù)據(jù)對象是本查詢過程的目標(biāo)對象,則從當(dāng)前狀態(tài)中刪除當(dāng)前條件,并將刪除當(dāng)前條件后的狀態(tài)作為后繼狀態(tài)加入可用狀態(tài)隊列,生成完畢;否則,調(diào)用當(dāng)前條件對應(yīng)的基本數(shù)據(jù)査詢服務(wù)的關(guān)聯(lián)查詢原子操作,獲得關(guān)聯(lián)屬性集合,分別添加每個關(guān)聯(lián)屬性及屬性值來源,并從當(dāng)前狀態(tài)中刪除當(dāng)前條件并作為后繼狀態(tài)加入可用狀態(tài)隊列;接著處理下一個關(guān)聯(lián)屬性并把所有的后繼狀態(tài)加入可用狀態(tài)隊列,直至關(guān)聯(lián)屬性集合中所有關(guān)聯(lián)屬性都已生成后繼狀態(tài)。一種基于服務(wù)組合的可定制查詢平臺,其特征在于,包括如下模塊建立的可定制查詢客戶端和數(shù)據(jù)査詢服務(wù)器;可定制査詢客戶端,包括領(lǐng)域數(shù)據(jù)對象模型庫,用來對領(lǐng)域內(nèi)數(shù)據(jù)進(jìn)行抽象分類,存入為所建立的模型構(gòu)建的可編輯控件;數(shù)據(jù)査詢服務(wù)器,包括基本數(shù)據(jù)査詢服務(wù)庫,構(gòu)建并存儲可編輯控件對應(yīng)的基本數(shù)據(jù)查詢服務(wù);可定制査詢客戶端還包括模板庫、定制結(jié)果封裝子纟莫塊;模板庫,用來存儲已有的定制功能,初始化模板庫后,用戶把自身個性化需求與模板庫中的已有功能相比較,如果存在滿足用戶此次需求的功能的模版,從模板庫中選擇特定的功能的模板,頁面展示為此功能對應(yīng)定制的査詢內(nèi)容、査詢條件、結(jié)果顯示格式,并調(diào)整顯示格式,重新填寫定制的査詢條件屬性值,構(gòu)造相同功能的新請求;否則由領(lǐng)域數(shù)據(jù)對象模型庫和定制結(jié)果封裝子模塊定制數(shù)據(jù)查詢;定制結(jié)果封裝子模塊,用來封裝用戶定制結(jié)果;如果本次定制來源于模板庫,設(shè)定模板的標(biāo)識位表示來源于已有定制模板,否則設(shè)定相應(yīng)的標(biāo)識位表示為新定制;發(fā)送至數(shù)據(jù)查詢服務(wù)器的請求隊列管理子模塊;數(shù)據(jù)查詢服務(wù)器還包括請求隊列管理子模塊、請求解析子模塊、服務(wù)代理子模塊、服務(wù)組合引擎、定制存儲模塊、執(zhí)行子模塊、結(jié)果生成子模塊和異常處理子模塊;請求隊列管理子模塊,請求隊列管理子模塊接收客戶端發(fā)送的數(shù)據(jù)查詢請求,并加入到請求隊列中;請求解析子模塊,取出請求隊列中的第一個請求,解析該請求后獲得初始狀態(tài),目標(biāo)狀態(tài),約束條件及結(jié)果顯示格式;如果請求隊列不為空,判斷此次數(shù)據(jù)査詢是否+莫板庫中功能的一種,如果是,則由執(zhí)行子模塊直接獲得其服務(wù)調(diào)用序列,否則調(diào)用服務(wù)組合引擎進(jìn)行服務(wù)組合;如果請求隊列為空,則發(fā)送到異常處理子模塊處理;服務(wù)代理子模塊,獲得當(dāng)前能夠使用的基本數(shù)據(jù)查詢服務(wù)信息;服務(wù)組合引擎,根據(jù)初始狀態(tài)和目標(biāo)狀態(tài),調(diào)用當(dāng)前能夠使用的基本數(shù)據(jù)査詢服務(wù)信息,逐一處理初始狀態(tài)中的査詢過程,在滿足中間過程約束條件的前提下,為每一查詢過程進(jìn)行服務(wù)組合,生成服務(wù)調(diào)用序列;如果服務(wù)組合失敗,則發(fā)送到異常處理子模塊處理;定制存儲模塊,存儲對應(yīng)的功能及服務(wù)調(diào)用序列到模板庫;執(zhí)行子模塊,按照服務(wù)調(diào)用流程序列的順序調(diào)用基本數(shù)據(jù)査詢服務(wù)庫中的基本數(shù)據(jù)查詢服務(wù),并協(xié)調(diào)服務(wù)間輸入輸出關(guān)系;如果出現(xiàn)異常,則發(fā)送到異常處理子模塊處理;結(jié)果生成子模塊,按照請求所描述結(jié)果顯示格式生成最終數(shù)據(jù)査詢分析結(jié)果,向客戶端返回應(yīng)答,進(jìn)行結(jié)果顯示;異常處理子模塊,生成失敗信息,并返回給客戶端顯示。所述領(lǐng)域數(shù)據(jù)對象模型庫中,對數(shù)據(jù)進(jìn)行抽象分類是按照面向?qū)ο蟮乃枷?,對?shù)據(jù)進(jìn)行特征提?。粚⒊橄蟪龅念I(lǐng)域數(shù)據(jù)對象模型所包含的屬性作為對象模型的屬性,每個領(lǐng)域數(shù)據(jù)對象模型以客戶端腳本的方式被編寫為可定制查詢客戶端的可編輯控件,向應(yīng)用系統(tǒng)描述自身的數(shù)據(jù)査詢需求。所述領(lǐng)域數(shù)據(jù)對象模型庫包括邏輯控件,用運(yùn)算及邏輯操作對兩個或多個領(lǐng)域數(shù)據(jù)對象屬性之間的關(guān)聯(lián)關(guān)系進(jìn)行描述,每個邏輯控件以腳本方式被編寫。所述基本數(shù)據(jù)查詢服務(wù)庫的基本數(shù)據(jù)查詢服務(wù)與領(lǐng)域數(shù)據(jù)對象模型庫的領(lǐng)域數(shù)據(jù)對象模型一一對應(yīng),提供領(lǐng)域數(shù)據(jù)對象査詢的原子操作,僅通過對應(yīng)的領(lǐng)域數(shù)據(jù)對象模型的一個或幾個屬性,從后臺數(shù)據(jù)庫中獲得具有此屬性的數(shù)據(jù)對象實(shí)例的集合。所述基本數(shù)據(jù)查詢服務(wù)庫的每個基本數(shù)據(jù)查詢服務(wù)包含一個查詢關(guān)聯(lián)屬性的原子操作,獲得對應(yīng)領(lǐng)域數(shù)據(jù)對象的關(guān)聯(lián)數(shù)據(jù)對象及其屬性的原子操作,輸出關(guān)聯(lián)數(shù)據(jù)對象及關(guān)聯(lián)數(shù)據(jù)對象的屬性集合。所述可定制查詢客戶端進(jìn)行的定制數(shù)據(jù)查詢在可定制査詢客戶端的頁面上從領(lǐng)域數(shù)據(jù)模型庫的控件中選擇各可編輯控件,指定本次查詢的各査詢內(nèi)容數(shù)據(jù)對象;選擇各可編輯控件的屬性作為本次數(shù)據(jù)査詢的結(jié)果數(shù)據(jù)列表的一列;在定制頁面上從領(lǐng)域數(shù)據(jù)t莫型庫的可視控件中選擇各可編輯控件,指定本次查詢的條件數(shù)據(jù)對象;選擇各可編輯控件的屬性并為該屬性選擇、填寫屬性值,并指定此次選擇的查詢條件用于的査詢內(nèi)容數(shù)據(jù)對象;排列選擇的控件屬性的先后順序,填充定制頁面結(jié)果的數(shù)據(jù)列表表頭,并指定結(jié)果列表的排序列;命名新定制的數(shù)據(jù)查詢,保存本次定制,并命名本次定制對應(yīng)的模板。所述請求解析子模塊得到的初始狀態(tài),由査詢過程集合、查詢結(jié)果和服務(wù)調(diào)用序列組成;査詢過程集合包括本次用戶請求需要查詢的數(shù)據(jù)對象的查詢過程,查詢結(jié)果和服務(wù)調(diào)用序列為空。所述請求解析子模塊得到的目標(biāo)狀態(tài),由査詢過程集合、査詢結(jié)果和服務(wù)調(diào)用序列組成;查詢過程集合為空,查詢結(jié)果為查詢過程集合中每個査詢過程的目標(biāo)數(shù)據(jù)對象,服務(wù)調(diào)用序列為一段空閑的內(nèi)存空間。所述服務(wù)組合引擎提取本次服務(wù)組合過程的源狀態(tài),包括查詢過程的目標(biāo)數(shù)據(jù)對象、查詢條件集合和空的服務(wù)調(diào)用序列;添加源狀態(tài)至用于臨時存儲數(shù)據(jù)的可用狀態(tài)隊列;如果可用狀態(tài)隊列為空,則輸出服務(wù)組合失敗信息,服務(wù)組合過程結(jié)束;否則從可用狀態(tài)隊列中取出位于隊列頭的可用狀態(tài)作為當(dāng)前狀態(tài);如果當(dāng)前狀態(tài)的査詢條件為空,則輸出當(dāng)前狀態(tài)的服務(wù)調(diào)用序列,服務(wù)組合過程結(jié)束;否則將當(dāng)前狀態(tài)的査詢條件存儲于存儲査詢條件的臨時隊列;如果臨時隊列為空,對可用狀態(tài)隊列是否為空進(jìn)行判斷并處理;否則從臨時隊列中取出位于隊列頭的查詢條件作為當(dāng)前條件,搜索能用于當(dāng)前條件的基本數(shù)據(jù)査詢服務(wù)并査找其對應(yīng)的原子操作,如果所有基本數(shù)據(jù)査詢服務(wù)都已調(diào)用過,則對可用狀態(tài)隊列是否為空進(jìn)行判斷并處理;否則把查找到的原子操作以等價關(guān)系添加到當(dāng)前狀態(tài)的服務(wù)調(diào)用序列;針對當(dāng)前狀態(tài)的當(dāng)前查詢條件,生成當(dāng)前狀態(tài)的后繼狀態(tài),并將后繼狀態(tài)加入可用狀態(tài)隊列,對臨時隊列是否為空進(jìn)行判斷并處理。所述服務(wù)組合引擎的服務(wù)組合過程生成當(dāng)前狀態(tài)的后繼狀態(tài),若當(dāng)前條件對應(yīng)的領(lǐng)域數(shù)據(jù)對象是本查詢過程的目標(biāo)對象,則從當(dāng)前狀態(tài)中刪除當(dāng)前條件,并將刪除當(dāng)前條件后的狀態(tài)作為后繼狀態(tài)加入可用狀態(tài)隊列,生成完畢;否則,調(diào)用當(dāng)前條件對應(yīng)的基本數(shù)據(jù)査詢服務(wù)的關(guān)聯(lián)查詢原子操作,獲得關(guān)聯(lián)屬性集合,分別添加每個關(guān)聯(lián)屬性及屬性值來源,并從當(dāng)前狀態(tài)中刪除當(dāng)前條件并作為后繼狀態(tài)加入可用狀態(tài)隊列;接著處理下一個關(guān)聯(lián)屬性并把所有的后繼狀態(tài)加入可用狀態(tài)隊列,直至關(guān)聯(lián)屬性集合中所有關(guān)聯(lián)屬性都已生成后繼狀態(tài)。本發(fā)明一種基于服務(wù)組合的可定制査詢方法與平臺,優(yōu)點(diǎn)在于(1)本發(fā)明采用由用戶主動制定一次査詢的査詢目的、査詢條件及査詢結(jié)果顯示格式的方式可有效應(yīng)對用戶多樣化的數(shù)據(jù)査詢分析需求,允許用戶隨時根據(jù)自身需求對査詢過程進(jìn)行修改,而無需改變系統(tǒng)結(jié)構(gòu)。(2)本發(fā)明采用數(shù)據(jù)查詢基本服務(wù)建立方式,以領(lǐng)域數(shù)據(jù)抽象建模為基礎(chǔ),運(yùn)用面向?qū)ο蟮乃枷霝槊糠N領(lǐng)域數(shù)據(jù)對象建立一個獨(dú)立的數(shù)據(jù)查詢基本服務(wù),符合大眾思維邏輯;同時在基本服務(wù)范圍內(nèi)提供原子操作,代表不同的輸入-輸出對,使服務(wù)內(nèi)部不同的査詢方式清晰區(qū)分;原子操作建立不僅包括由領(lǐng)域數(shù)據(jù)對象的一種屬性査詢具有該屬性值的所有領(lǐng)域數(shù)據(jù)對象實(shí)例,而且包括由通常作為聯(lián)合屬性的多個屬性査詢具有這些屬性值的所有領(lǐng)域數(shù)據(jù)對象實(shí)例,避免了在僅提供單一屬性查詢時對后臺數(shù)據(jù)庫的多次査詢操作以及對多個數(shù)據(jù)査詢結(jié)果取交集的操作,提高査詢效率。(3)基于服務(wù)組合技術(shù)構(gòu)造數(shù)據(jù)査詢處理邏輯,在給定服務(wù)組合流程的初始狀態(tài)和目標(biāo)狀態(tài)的條件下,可以動態(tài)生成服務(wù)合成調(diào)用序列,自動應(yīng)對定制客戶端的多變數(shù)據(jù)查詢請求。圖1為本發(fā)明一種基于服務(wù)組合的可定制査詢方法的方法流程圖2為本發(fā)明一種基于服務(wù)組合的可定制査詢平臺的平臺結(jié)構(gòu)圖3為本發(fā)明一種基于服務(wù)組合的可定制査詢方法的定制數(shù)據(jù)查詢功能的流程圖4為本發(fā)明一種基于服務(wù)組合的可定制查詢方法的用戶定制結(jié)果xml的形式化描述圖5為本發(fā)明一種基于服務(wù)組合的可定制查詢方法的服務(wù)組合流程圖6為本發(fā)明一種基于服務(wù)組合的可定制査詢方法的生成后繼狀態(tài)的流程圖;圖7為本發(fā)明一種基于服務(wù)組合的可定制査詢方法的實(shí)施例中的xml形式的用戶定制結(jié)果;圖8為本發(fā)明一種基于服務(wù)組合的可定制查詢方法的實(shí)施例中的服務(wù)調(diào)用序列生成過程的狀態(tài)轉(zhuǎn)換圖。具體實(shí)施例方式本發(fā)明提出一種基于服務(wù)組合的可定制査詢方法與平臺,支持用戶向系統(tǒng)描述自身需求,系統(tǒng)根據(jù)用戶需求動態(tài)組裝基本數(shù)據(jù)査詢服務(wù),生成能夠滿足用戶需求的基本數(shù)據(jù)查詢服務(wù)調(diào)用序列構(gòu)成的組合服務(wù),執(zhí)行組合服務(wù)并按照用戶期望展示數(shù)據(jù)査詢分析結(jié)果。一種基于服務(wù)組合的可定制査詢平臺,如圖2所示,包括可定制查詢客戶端和數(shù)據(jù)查詢服務(wù)器兩部分??啥ㄖ茢?shù)據(jù)查詢客戶端包括模板庫、領(lǐng)域數(shù)據(jù)對象模型庫、定制結(jié)果封裝子模塊。模板庫用于向用戶提供該系統(tǒng)存儲的典型數(shù)據(jù)査詢功能。禾莫板庫是平臺中已有的數(shù)據(jù)查詢功能的集合,來源于用戶定制存儲子模塊讀取的存儲于后臺數(shù)據(jù)庫的系統(tǒng)前期成功處理過的用戶定制。用戶選擇模板庫中一項(xiàng)功能,使頁面顯示為此項(xiàng)功能對應(yīng)的査詢內(nèi)容、査詢條件、查詢結(jié)果格式的展示。領(lǐng)域數(shù)據(jù)對象模型庫提供領(lǐng)域數(shù)據(jù)對象模型可視化控件及邏輯控件。定制結(jié)果封裝子模塊把用戶在客戶端上以可視方式定制的個性化查詢需求轉(zhuǎn)換為形式化描述。模板庫提供平臺中已有的數(shù)據(jù)査詢功能,用戶查詢時先査詢模板庫中是否有符合自身需求的數(shù)據(jù)査詢功能模板,有滿足需求的模板則選取此模板,修改模板中相應(yīng)內(nèi)容,輸出用戶定制結(jié)果至定制結(jié)果封裝子,莫塊,定制結(jié)果封裝子模塊把用戶定制的可視化結(jié)果封裝為xml描述,并作為HTTP請求的參數(shù)發(fā)送給數(shù)據(jù)査詢服務(wù)器;若沒有滿足需求的模板,則轉(zhuǎn)向領(lǐng)域數(shù)據(jù)對象模型庫,用戶從領(lǐng)域數(shù)據(jù)對象模型庫分別選擇查詢內(nèi)容、査詢條件對應(yīng)的領(lǐng)域數(shù)據(jù)對象控件及其屬性,并在需要時填寫屬性值,指定數(shù)據(jù)查詢分析結(jié)果的顯示格式,輸出到定制結(jié)果封裝子模塊,并仍由定制結(jié)果封裝子模塊把用戶定制的可視化結(jié)果封裝為xml描述,并作為HTTP請求的參數(shù)發(fā)送給數(shù)據(jù)查詢服務(wù)器。數(shù)據(jù)查詢服務(wù)器包括服務(wù)代理子模塊、請求隊列管理子模塊、請求解析子模塊、服務(wù)組合引擎、執(zhí)行子模塊、結(jié)果生成子模塊、定制存儲子模塊、異常處理子模塊和基本數(shù)據(jù)査詢服務(wù)庫。其中服務(wù)代理子模塊用于管理領(lǐng)域數(shù)據(jù)査詢基本服務(wù)?;緮?shù)據(jù)查詢服務(wù)庫的每個基本數(shù)據(jù)査詢服務(wù)需要向服務(wù)代理子模塊注冊,提供自身對特定的領(lǐng)域?qū)ο竽P瓦M(jìn)行查詢的信息,并以可接受參數(shù)的方式,描述本服務(wù)提供的對該類領(lǐng)域數(shù)據(jù)對象模型的全部基本査詢操作。基本數(shù)據(jù)査詢服務(wù)可以在必要時添加,需保證新的基本數(shù)據(jù)査詢服務(wù)與原有基本數(shù)據(jù)査詢服務(wù)不存在沖突,且與前述基本數(shù)據(jù)査詢服務(wù)的發(fā)布規(guī)范一致的方式發(fā)布到服務(wù)代理子模塊。請求隊列管理子模塊用于接收數(shù)據(jù)查詢客戶端發(fā)送的數(shù)據(jù)査詢分析請求,并緩存這些請求。請求解析子模塊用于解析數(shù)據(jù)查詢分析請求,將可定制査詢客戶端發(fā)送的請求所攜帶的用戶定制結(jié)果轉(zhuǎn)換為服務(wù)組合引擎可理解數(shù)據(jù)查詢請求。服務(wù)組合引擎用于結(jié)合服務(wù)代理子模塊提供的可用服務(wù)的細(xì)節(jié),根據(jù)請求解析模塊傳遞的解析結(jié)果,針對結(jié)果中包含的查詢過程逐一生成可滿足需求的服務(wù)調(diào)用序列。執(zhí)行子模塊用于按照服務(wù)組合引擎生成的服務(wù)調(diào)用序列,依次執(zhí)行序列中的服務(wù)。結(jié)果生成子模塊用于把執(zhí)行子模塊輸出的結(jié)果根據(jù)用戶定制的結(jié)果格式生成HTTP應(yīng)答。定制存儲子模塊用于存儲本次用戶定制的功能,及用戶定制功能的處理方式。異常處理子模塊用于在請求解析模塊無法解析數(shù)據(jù)查詢請求、服務(wù)組合引擎無法生成滿足用戶需求的服務(wù)序列、執(zhí)行模塊執(zhí)行服務(wù)失敗時,向數(shù)據(jù)査詢客戶端返回出錯信息。基本數(shù)據(jù)查詢服務(wù)庫中的每個基本數(shù)據(jù)查詢服務(wù)向服務(wù)代理子模塊提供自身信息,包括對應(yīng)的領(lǐng)域數(shù)據(jù)對象類型和可提供的原子操作。服務(wù)代理子模塊將其獲得的所有基本數(shù)據(jù)查詢服務(wù)信息維護(hù)成當(dāng)前可用的基本數(shù)據(jù)査詢服務(wù)列表,供服務(wù)組合引擎査詢。數(shù)據(jù)査詢處理服務(wù)器的請求隊列管理子模塊接收到定制結(jié)果封裝子模塊發(fā)送的數(shù)據(jù)査詢請求,并緩存入請求隊列。請求解析子模塊取出位于請求隊列頭的請求,并從中解析出本次請求的初始狀態(tài)和目標(biāo)狀態(tài),把解析結(jié)果發(fā)送給服務(wù)組合引擎。服務(wù)組合引擎獲得服務(wù)代理子模塊提供的當(dāng)前可用的基本數(shù)據(jù)査詢服務(wù)的信息,根據(jù)請求的初始狀態(tài)和目標(biāo)狀態(tài),生成能夠處理本次數(shù)據(jù)查詢請求的服務(wù)調(diào)用序列,并將生成結(jié)果交由執(zhí)行子模塊執(zhí)行。執(zhí)行子模塊按照服務(wù)組合引擎生成的服務(wù)調(diào)用序列順序執(zhí)行各基本數(shù)據(jù)査詢服務(wù),向結(jié)果生成子模塊輸出包含用戶期望結(jié)果的數(shù)據(jù)對象實(shí)例集合。結(jié)果生成子模塊從執(zhí)行模塊輸出的結(jié)果中提取用戶定制結(jié)果中指定的待顯示內(nèi)容,并將待顯示內(nèi)容按照用戶定制時指定的排序方式排序,生成應(yīng)答HTML頁面,并向可定制數(shù)據(jù)查詢客戶端返回HTTP應(yīng)答。在請求解析模塊無法解析數(shù)據(jù)査詢請求、服務(wù)組合引擎無法生成滿足用戶需求的服務(wù)序列、執(zhí)行模塊執(zhí)行服務(wù)失敗時,異常處理子模塊將捕獲這些失敗信息,數(shù)據(jù)査詢客戶端返回出錯信息。一種基于服務(wù)組合的可定制査詢方法,如圖l所示,包括如下步驟步驟一領(lǐng)域分析,對領(lǐng)域內(nèi)數(shù)據(jù)進(jìn)行抽象分類,為所建立的模型構(gòu)建可定制查詢客戶端的可編輯控件,存入領(lǐng)域數(shù)據(jù)對象模型庫,并構(gòu)建對應(yīng)的基本數(shù)據(jù)査詢服務(wù)庫?;緮?shù)據(jù)査詢服務(wù)庫中的每一個基本數(shù)據(jù)査詢服務(wù)對應(yīng)一個領(lǐng)域數(shù)據(jù)對象纟莫型庫中對象控件?;緮?shù)據(jù)查詢服務(wù)是多個原子操作的集合。原子操作代表一個輸入-輸出對,輸入是領(lǐng)域數(shù)據(jù)對象模型的一個或者幾個屬性,輸出是具有指定輸入屬性值的領(lǐng)域數(shù)據(jù)對象模型的實(shí)例的集合。原子操作包括為對象控件的每一個屬性提供根據(jù)該屬性查詢領(lǐng)域數(shù)據(jù)對象實(shí)例,和同時根據(jù)幾個屬性聯(lián)合獲得數(shù)據(jù)對象實(shí)例兩種方式。其中后者所述的聯(lián)合的屬性是在進(jìn)行需求分析時考慮到的、經(jīng)常被聯(lián)合起來作為一次查詢條件的屬性。步驟二初始化可定制查詢客戶端,即初始化可定制查詢客戶端的領(lǐng)域數(shù)據(jù)對象模型庫和存儲已有定制功能的模板庫。領(lǐng)域數(shù)據(jù)對象模型庫中的控件以腳本形式實(shí)現(xiàn)。已有定制功能模板庫中的模板來源于歷史成功處理過的數(shù)據(jù)查詢分析請求;模板的信息存儲于后臺數(shù)據(jù)庫,每個模板對應(yīng)數(shù)據(jù)庫中的一條記錄,該記錄包括模板ID、*莫板名稱、模板對應(yīng)的配置信息(即此模板對應(yīng)的查詢內(nèi)容、査詢條件)、模板功能對應(yīng)的服務(wù)調(diào)用序列四部分。當(dāng)用戶打開定制的頁面時,領(lǐng)域?qū)ο竽P蛶斓恼宫F(xiàn)形式為可編輯控件的集合,已有定制功能模板庫的展現(xiàn)形式為已有定制功能模板名稱的集合。用戶把自身個性化需求與模板庫中的已有功能相比較,如果存在滿足用戶此次需求的功能,則從模板庫中選擇特定模板名稱,讀取模板名稱對應(yīng)的模板ID以及模板配置信息中該模板對應(yīng)定制的査詢內(nèi)容、查詢條件、結(jié)果顯示格式,并生成查詢內(nèi)容對應(yīng)的可編輯控件及屬性,查詢條件對應(yīng)的可編輯控件及屬性,結(jié)果顯示列表的表頭。用戶通過調(diào)整結(jié)果顯示格式,重新填寫定制的查詢條件屬性的值,構(gòu)造出相同功能的新查詢請求。如果不存在滿足用戶此次需求的功能,則由可定制査詢客戶端定制數(shù)據(jù)査詢,定制一個全新的數(shù)據(jù)查詢功能,如圖3所示,包括如下步驟A)定制查詢內(nèi)容。在可定制查詢客戶端的頁面上從領(lǐng)域數(shù)據(jù)模型庫控件中選擇各可編輯控件,拖拽入査詢內(nèi)容定制框從而指定本次査詢的各查詢內(nèi)容數(shù)據(jù)對象,査詢結(jié)果數(shù)據(jù)來源于查詢內(nèi)容數(shù)據(jù)對象的部分屬性,勾選各可編輯控件的屬性作為本次數(shù)據(jù)查詢的結(jié)果數(shù)據(jù)列表的一列,即指明查詢結(jié)果數(shù)據(jù)是查詢內(nèi)容數(shù)據(jù)對象的哪些屬性。B)定制査詢條件。在定制頁面上從領(lǐng)域數(shù)據(jù)模型庫可視控件中選擇各可編輯控件,拖拽入査詢條件定制框從而指定本次查詢的條件數(shù)據(jù)對象,勾選這些可編輯控件的屬性并為該屬性選擇、填寫屬性值,即指定作為查詢條件的參數(shù)來源于何種數(shù)據(jù)對象的何種屬性,且確定這種屬性的屬性值。指定此次選擇的查詢條件用于哪個查詢內(nèi)容數(shù)據(jù)對象,用箭頭從査詢條件數(shù)據(jù)對象控件指向查詢內(nèi)容數(shù)據(jù)對象控件以表示關(guān)聯(lián)。C)定制結(jié)果顯示格式。按用戶偏好排列A)中勾選的控件屬性的先后順序,填充定制頁面結(jié)果的數(shù)據(jù)列表表頭,并指定結(jié)果列表的排序列,把排序列放在第一列。D)為新定制的數(shù)據(jù)查詢功能命名。用戶勾選保存本次定制按鈕,并在模板名稱文本框中輸入本次定制的功能對應(yīng)的模板的名稱。步驟三用戶定制過程完畢,由可定制查詢客戶端的定制結(jié)果封裝子模塊封裝用戶定制結(jié)果。如果本次定制來源于模板庫,設(shè)定相應(yīng)標(biāo)識位表示來源于已有定制模板,若否,則本次定制為一個全新的定制,設(shè)定相應(yīng)的標(biāo)識為表示為新定制。用戶定制結(jié)果封裝為一個xml文件,如附圖4所示。以request為根節(jié)點(diǎn),由若干process和一個resultForm豐勾成。process代表一個查詢過程,由一個goal節(jié)點(diǎn)(即査詢內(nèi)容)和一個parameter(即查詢條件)節(jié)點(diǎn)構(gòu)成。goal節(jié)點(diǎn)由一個數(shù)據(jù)對象節(jié)點(diǎn)model構(gòu)成,model節(jié)點(diǎn)包括一個model的名稱name節(jié)點(diǎn),和多個model的屬性property節(jié)點(diǎn)。property節(jié)點(diǎn)包含property的名稱name和property的值value(此處為空)。parameter節(jié)點(diǎn)由多個model節(jié)點(diǎn)組成。每個model節(jié)點(diǎn)包括一個model的名稱name節(jié)點(diǎn),和多個model的屬性property節(jié)點(diǎn),property節(jié)點(diǎn)包含property的名稱name和property的值value,且此value不為空。resultForm表示結(jié)果格式,其中包含若干個列column節(jié)點(diǎn)。每個column節(jié)點(diǎn)包含列名稱(即數(shù)據(jù)查詢結(jié)果列表表頭名)name,和列的值(即此列數(shù)據(jù)的數(shù)據(jù)來源)value。把封裝結(jié)果作為參數(shù),發(fā)送數(shù)據(jù)查詢http請求至數(shù)據(jù)查詢處理服務(wù)器。步驟四數(shù)據(jù)査詢服務(wù)器的請求隊列管理子模塊接收客戶端發(fā)送的數(shù)據(jù)査詢請求,并加入到請求隊列中。步驟五請求解析子模塊取出請求隊列中的第一個請求,解析該請求后獲得初始狀態(tài),目標(biāo)狀態(tài),約束條件及結(jié)果顯示格式。初始狀態(tài),由當(dāng)前待執(zhí)行的査詢過程集合、査詢結(jié)果和服務(wù)調(diào)用序列三部分組成。待執(zhí)行査詢過程集合來源于本次數(shù)據(jù)查詢請求攜帶的參數(shù)xml文件中,request節(jié)點(diǎn)下的process節(jié)點(diǎn)內(nèi)容。由于生成組合服務(wù)的過程尚未執(zhí)行,査詢結(jié)果為空,服務(wù)調(diào)用序列為空。目標(biāo)狀態(tài)為由當(dāng)前待執(zhí)行的查詢過程集合、査詢結(jié)果和服務(wù)調(diào)用序列三部分組成。在目標(biāo)狀態(tài)下,所有査詢過程已經(jīng)處理完畢,待執(zhí)行査詢過程集合為空。査詢結(jié)果表示每一個查詢過程均被成功執(zhí)行,每個査詢過程的目標(biāo)數(shù)據(jù)對象均可以成功査詢獲得,因此査詢結(jié)果是每個查詢過程的目標(biāo)數(shù)據(jù)對象構(gòu)成的集合。服務(wù)調(diào)用序列因?yàn)樯煞?wù)調(diào)用序列的服務(wù)組合過程尚未執(zhí)行,待服務(wù)組合過程執(zhí)行完畢后被填充,目前為一段空閑的內(nèi)存空間。如果請求隊列不為空,判斷此次數(shù)據(jù)査詢是來源于定制功能l莫板庫中功能的一種,如果是,則直接根據(jù)來源的模板名稱査詢后臺數(shù)據(jù)庫,獲得處理此模板對應(yīng)的數(shù)據(jù)查詢功能時需要的服務(wù)調(diào)用序列,轉(zhuǎn)步驟八;否則調(diào)用服務(wù)組合引擎進(jìn)行服務(wù)組合,如步驟六所示。若發(fā)現(xiàn)隊列為空即請求解析失敗,則轉(zhuǎn)步驟十。步驟六服務(wù)組合引擎子模塊根據(jù)初始狀態(tài)和目標(biāo)狀態(tài),調(diào)用服務(wù)代理子模塊獲得當(dāng)前可用的基本數(shù)據(jù)查詢服務(wù)信息,逐一處理初始狀態(tài)中的査詢過程,在滿足中間過程約束條件的前提下,為每一查詢過程進(jìn)行服務(wù)組合,生成服務(wù)調(diào)用序列。生成服務(wù)調(diào)用序列,如圖5所示,包括以下步驟Stepl:從查詢過程中提取本次服務(wù)組合過程的源狀態(tài)S。,S。包括此査詢過程的目標(biāo)數(shù)據(jù)對象,查詢條件集合,空的服務(wù)調(diào)用序列。目標(biāo)數(shù)據(jù)對象指明本査詢過程需要獲得的數(shù)據(jù)的領(lǐng)域數(shù)據(jù)對象類型;査詢條件集合是用戶在定制頁面選擇并填寫的查詢條件,且是關(guān)聯(lián)于本査詢過程目標(biāo)數(shù)據(jù)對象的條件;初始狀態(tài)下服務(wù)調(diào)用序列為空。添加S。至用于臨時存儲數(shù)據(jù)的可用狀態(tài)隊列TmpS。step2:判斷TmpS是否為空,若為空說明當(dāng)前已經(jīng)沒有可供處理的狀態(tài),則輸出服務(wù)組合失敗信息,服務(wù)組合過程結(jié)束;若不為空,則轉(zhuǎn)step3。step3:從于TmpS中取出位于隊列頭的可用狀態(tài)作為當(dāng)前狀態(tài)S,TmpS中的下一可用狀態(tài)被放置在隊列頭。step4:判斷當(dāng)前狀態(tài)S的查詢條件是否為空,為空則輸出當(dāng)前狀態(tài)S的服務(wù)調(diào)用序列,服務(wù)組合過程結(jié)束;不為空則將S的查詢條件存儲于臨時存儲查詢條件的隊列A。step5:若A為空則說明當(dāng)前狀態(tài)下,所有査詢條件均以分別被使用且生成了對應(yīng)的后繼狀態(tài),轉(zhuǎn)step2;否則仍有未被使用的查詢條件轉(zhuǎn)step6。step6:從A取出位于隊列頭的查詢條件作為當(dāng)前條件,A中的下一査詢條件被放置在隊列頭。搜索可用于當(dāng)前條件的基本數(shù)據(jù)査詢服務(wù)并查找其對應(yīng)的原子操作,如果所有基本數(shù)據(jù)查詢服務(wù)都已調(diào)用過,表明此狀態(tài)下有不能被處理的査詢條件,由此狀態(tài)不能到達(dá)目標(biāo)狀態(tài),則放棄當(dāng)前狀態(tài)轉(zhuǎn)st印2;否則轉(zhuǎn)step7。step7:把査找到的原子操作添加入S的服務(wù)調(diào)用序列,若根據(jù)當(dāng)前條件可搜索到一個基本數(shù)據(jù)査詢服務(wù)的多個原子操作,在具有相同輸入的原子操作之間優(yōu)先選擇具有多個條件輸入的原子操作,輸入不同的原子操作都是必須調(diào)用的。這些原子操作以等價關(guān)系加入當(dāng)前狀態(tài)的服務(wù)調(diào)用序列,每個原子操作單獨(dú)執(zhí)行,'然后對執(zhí)行結(jié)果取交集作為本基本數(shù)據(jù)査詢服務(wù)調(diào)用的輸出。step8:針對當(dāng)前狀態(tài)的當(dāng)前查詢條件,生成當(dāng)前狀態(tài)的后繼狀態(tài),并將后繼狀態(tài)加入可用狀態(tài)隊列。如圖6所示,后繼狀態(tài)的生成包括兩種情況第一種是當(dāng)前條件對應(yīng)的領(lǐng)域數(shù)據(jù)對象是本查詢過程的目標(biāo)對象,則從當(dāng)前狀態(tài)中刪除當(dāng)前條件,表明當(dāng)前條件已經(jīng)作為基本數(shù)據(jù)查詢服務(wù)的原子操作的輸入條件使用,不能被以后的基本數(shù)據(jù)査詢服務(wù)使用。將刪除當(dāng)前條件后的狀態(tài)作為后繼狀態(tài),加入TmpS,表示生成了一個新的可用狀態(tài),生成完畢;第二種當(dāng)前條件對應(yīng)的領(lǐng)域數(shù)據(jù)對象不是本査詢過程的目標(biāo)對象,這種情況生成后繼狀態(tài)方法為,調(diào)用當(dāng)前條件對應(yīng)的基本數(shù)據(jù)查詢服務(wù)的關(guān)聯(lián)查詢原子操作,獲得關(guān)聯(lián)屬性集合。關(guān)聯(lián)屬性的屬性值來源為當(dāng)前條件的基本數(shù)據(jù)査詢服務(wù)對應(yīng)的原子操作的輸出。從當(dāng)前狀態(tài)中刪除當(dāng)前條件并分別添加每個關(guān)聯(lián)屬性及屬性值來源,表示當(dāng)前條件不能直接用來篩選本查詢過程的目標(biāo)數(shù)據(jù)對象,但當(dāng)前條件可以通過關(guān)聯(lián)關(guān)系生成其他條件,這些生成的條件是可以用來篩選本査詢過程的目標(biāo)數(shù)據(jù)對象的。把新生成的狀態(tài)作為后繼狀態(tài)加入TmpS,表示生成了一個新的可用狀態(tài)。處理下一個關(guān)聯(lián)屬性直至關(guān)聯(lián)屬性集合中所有關(guān)聯(lián)屬性都已生成后繼狀態(tài),所有的后繼狀態(tài)加入TmpS后,生成完畢。后繼狀態(tài)生成完畢后,繼續(xù)處理下一條件,轉(zhuǎn)step5。多個査詢過程生成的服務(wù)調(diào)用序列可以被并行處理,即査詢過程之間是彼此獨(dú)立,可以同時執(zhí)行兩個或者多個查詢過程生成的服務(wù)調(diào)用序列。如果服務(wù)組合失敗,無法生成服務(wù)調(diào)用序列,則轉(zhuǎn)步驟十。步驟七由定制存儲模塊存儲對應(yīng)的功能及服務(wù)調(diào)用序列到模板庫,成為一條模板信息記錄,該記錄的模板ID為后臺數(shù)據(jù)庫自動生成;模板名稱為用戶定制結(jié)果xml中的模板名稱;模板對應(yīng)的配置信息中査詢內(nèi)容為用戶定制結(jié)果xml中的查詢內(nèi)容,查詢條件為用戶定制結(jié)果xml中的查詢條件,查詢條件僅包括査詢條件所屬數(shù)據(jù)對象及屬性,不包括屬性值;模板對應(yīng)的服務(wù)調(diào)用序列為上述步驟六生成的服務(wù)調(diào)用序列,其中每個基本數(shù)據(jù)查詢服務(wù)原子操作的輸入為空。步驟八執(zhí)行子模塊按照服務(wù)調(diào)用流程序列的順序調(diào)用基本數(shù)據(jù)査詢服務(wù)庫中的基本數(shù)據(jù)査詢服務(wù),生成中間結(jié)果及最終結(jié)果。執(zhí)行子模塊協(xié)調(diào)服務(wù)間輸入輸出關(guān)系,在讀取到服務(wù)調(diào)用序列中,如果某一個基本數(shù)據(jù)査詢服務(wù)的原子操作輸入不是用戶在定制時直接輸入的參數(shù),而是服務(wù)調(diào)用序列已被執(zhí)行過的基本數(shù)據(jù)査詢服務(wù)的原子操作,則將執(zhí)行過的基本數(shù)據(jù)查詢服務(wù)的原子操作生成的中間結(jié)果作為此次基本數(shù)據(jù)査詢服務(wù)的輸入。反之,則直接將用戶定制時輸入的參數(shù)作為基本數(shù)據(jù)査詢服務(wù)原子操作的輸入,執(zhí)行原子操作。待整個服務(wù)調(diào)用序列執(zhí)行完畢,輸出最終結(jié)果。若出現(xiàn)異常導(dǎo)致執(zhí)行失敗,則轉(zhuǎn)步驟十。步驟九結(jié)果生成子模塊按照請求所描述結(jié)果顯示格式生成最終數(shù)據(jù)査詢分析結(jié)果,以瀏覽器頁面的形式向客戶端返回應(yīng)答;進(jìn)行結(jié)果顯示。步驟十由異常處理子模塊生成失敗信息,并返回給客戶端顯示。本發(fā)明一種基于服務(wù)組合的可定制查詢方法的實(shí)現(xiàn)前提為領(lǐng)域數(shù)據(jù)的抽象建模,并對領(lǐng)域內(nèi)數(shù)據(jù)進(jìn)行分類,構(gòu)建領(lǐng)域數(shù)據(jù)對象模型庫。然后針對每種領(lǐng)域數(shù)據(jù)對象的基本査詢需求構(gòu)建數(shù)據(jù)査詢服務(wù),作為基本服務(wù)發(fā)布到數(shù)據(jù)查詢服務(wù)器的服務(wù)代理模塊。下面將結(jié)合附圖和一個在線商店系統(tǒng)的商品査詢作為實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)說明本實(shí)施例中,有用戶初始查詢請求,査詢產(chǎn)品為HP品牌、2007年之后上市,且當(dāng)前有庫存的computer數(shù)據(jù),要求顯示電腦的型號、報價、配置信息,按報價由低到高的順序排序。假設(shè)本實(shí)施例中,模板庫中沒有類似功能的模板可供直接調(diào)用。處理步驟如下步驟一領(lǐng)域分析,電腦即computer數(shù)據(jù)對象具有屬性為商品編號、型號、品牌、廠商、上市時間、報價、配置信息;庫存商品即storage數(shù)據(jù)對象具有屬性為商品編號、庫存量、成本價格、售價、管理員信息。computer數(shù)據(jù)對象與storage數(shù)據(jù)對象關(guān)聯(lián)關(guān)系為computer數(shù)據(jù)對象的商品編號屬性等于storage數(shù)據(jù)對象的商品編號屬性。對應(yīng)的數(shù)據(jù)査詢基本月艮務(wù)為computerQservice和storageQService。computerQService提f共豐艮據(jù)電腦品牌和獲得電腦對象實(shí)例的原子操作computerOperByBrand,根據(jù)電腦上市時間獲得電腦對象實(shí)例的原子操作computerOperByTTM,根據(jù)電腦品牌和價格聯(lián)合獲得電腦對象實(shí)例的原子操作computerOperByBrandAndPrice,根據(jù)電腦的商品編號獲得電腦對象實(shí)例的原子操作computerOperByID,關(guān)聯(lián)查詢原子操作computerOperRela;storageQService提供根據(jù)庫存量獲得庫存商品對象實(shí)例的原子操作storageOperByStock,關(guān)聯(lián)查詢原子操作storageOperRela。步驟二用戶進(jìn)入可定制數(shù)據(jù)查詢客戶端頁面,此時數(shù)據(jù)査詢客戶端初始化獲得領(lǐng)域數(shù)據(jù)對象模型庫,其中包含兩個領(lǐng)域數(shù)據(jù)對象控件computer和storage,本實(shí)施例中以JavaScript實(shí)現(xiàn)。模板庫內(nèi)容為空;模板庫中沒有與査詢computer相對應(yīng)的數(shù)據(jù)查詢功能,用戶需要開始一個新的功能定制過程。A)定制查詢內(nèi)容。用戶從定制頁面中拖拽computer控件到査詢內(nèi)容定制框,并勾選型號、報價、配置信息作為結(jié)果屬性;B)定制查詢條件。用戶從定制頁面中拖拽computer控件到査詢條件定制框,勾選品牌屬性,填寫屬性值為"HP",勾選上市時間屬性,填寫屬性值為">2007";從定制頁面中拖拽庫存產(chǎn)品控件添加到查詢條件定制框,勾選庫存量屬性,填寫屬性值為">0"。用箭頭建立査詢條件與査詢內(nèi)容之間的關(guān)聯(lián)關(guān)系computer:brand=HP;TTM=>2007和storage:stock>0,兩者都關(guān)聯(lián)于查詢內(nèi)容computer;C)定制結(jié)果顯示格式。對該請求定制結(jié)果顯示數(shù)據(jù)列表表頭如下表1定制結(jié)果顯示數(shù)據(jù)列表表頭<table>tableseeoriginaldocumentpage21</column></row><table>computer:model表示電腦型號,computer:price表示電腦f介格,computer:configure表示電腦的配置信息,該結(jié)果按照第一列屬性即price—列排序。D)勾選保存本次定制按鈕,并輸入本次定制對應(yīng)的模板名稱為"可購買電腦產(chǎn)品査詢"。本實(shí)施例中模板庫中無用戶定制功能,若有模板名稱為"査詢電腦產(chǎn)品"具有用戶定制的功能,則處理過程如下選擇此模板,頁面査詢內(nèi)容部分展現(xiàn)為computer數(shù)據(jù)對象,已勾選的屬性為型號、報價、配置信息。頁面查珣條件部分展現(xiàn)為computer數(shù)據(jù)對象和storage數(shù)據(jù)對象,computer數(shù)據(jù)對象已勾選的屬性為上市時間、品牌,屬'性值為空,storage數(shù)據(jù)對象已勾選的屬性為庫存量,屬性值為空。查詢結(jié)果格式為空,由用戶自行填充。用戶為作為查詢條件的computer數(shù)據(jù)對象的上市時間屬性填寫屬性值為">2007",品牌屬性屬性值為"HP",為作為査詢條件的storage數(shù)據(jù)對象的庫存量屬性填寫屬性值為">0";填寫結(jié)果格式如上述表1所示。步驟三客戶端定制結(jié)果封裝子模塊封裝用戶定制結(jié)果,如圖7所示,以xml形式表示用戶定制結(jié)果。以request為根節(jié)點(diǎn),由一個process和一個resultForm構(gòu)成。process由一個goal節(jié)點(diǎn)和一個parameter節(jié)點(diǎn)構(gòu)成。goal節(jié)點(diǎn)由一個數(shù)據(jù)對象節(jié)點(diǎn)model構(gòu)成,model節(jié)點(diǎn)的name為computer表示此封裝的數(shù)據(jù)對象為電腦,model有三個屬性property節(jié)點(diǎn)。property節(jié)點(diǎn)的name分別是model,price,configure,分別表示電腦的型號、價格、配置信息。parameter節(jié)點(diǎn)由多個model節(jié)點(diǎn)組成。第一個model節(jié)點(diǎn)名稱name為computer,屬性property節(jié)點(diǎn),property節(jié)點(diǎn)name為brand,值value為HP。其余model與此model類似。resultForm表示結(jié)果格式,其中包含若干個列column節(jié)點(diǎn)。第一個column節(jié)點(diǎn)包含列名稱name為價格,和列的值value為computer:price。其余column與此column類似。把這個xml作為參數(shù),發(fā)送數(shù)據(jù)査詢http請求至數(shù)據(jù)査詢處理服務(wù)器。步驟四數(shù)據(jù)査詢處理服務(wù)器的請求隊列管理子模塊接收客戶端發(fā)送的數(shù)據(jù)査詢請求,并將請求存儲到請求隊列中。步驟五請求解析模塊采用DOM方式解析請求隊列中的第一個數(shù)據(jù)查詢分析請求,初始狀態(tài)中,用PROCESS表示查詢過程集合,target-(computer)表示本査詢過程的目標(biāo)數(shù)據(jù)對象是computer,parameter-((computer:brand=HP;TTM=>2007)(storage:stock>0))表示本査詢過程的査詢條件是computer的品牌為HP,上市時間TTM為2007年之后,庫存商品對象庫存量為大于零,即有庫存;RESULT表示查詢結(jié)果,PLAN表示服務(wù)調(diào)用序列。對前述請求解析結(jié)果為表2請求解析結(jié)果初始狀態(tài)<table>tableseeoriginaldocumentpage22</column></row><table>PLAN()目標(biāo)狀態(tài)RESULT(computer)PLAN(planForPROCESS)約束條件無目標(biāo)狀態(tài)中,查詢過程PROCESS已經(jīng)處理完畢為空,査詢結(jié)果RESULT為處理成功的PROCESS中的目標(biāo)對象的集合,即computer,服務(wù)調(diào)用序列PLAN為planForPROCESS,是指對初始狀態(tài)中的PROCESS生成的服務(wù)調(diào)用序列。該請求隊列不為空,則判斷此次査詢不是模板庫中功能的一種,則需要由服務(wù)組合引擎子模塊生成服務(wù)調(diào)用序列。如果是模板庫中功能的一種,則根據(jù)模板名稱査詢后臺數(shù)據(jù)庫,由執(zhí)行子模塊獲得此模板對應(yīng)的査詢請求處理服務(wù)調(diào)用序列,并初始狀態(tài)中的parameter作為參數(shù)值,匹配基本數(shù)據(jù)査詢服務(wù)原子操作,作為原子操作的輸入,轉(zhuǎn)步驟八。如果請求隊列為空,則轉(zhuǎn)步驟十。步驟六服務(wù)組合引擎為本次數(shù)據(jù)査詢請求生成服務(wù)調(diào)用序列。本次數(shù)據(jù)査詢請求包含一個PROCESS,如圖8所示,生成服務(wù)調(diào)用序列過程詳述如下PROCESS:査詢內(nèi)容為computer,參數(shù)為(computer:brand=HP;TTM=>2007)和(storage:stock>0),本査詢過程初始狀態(tài)(target-(computer)parameter-((computer:brand=HP;TTM=>2007)(storage:stock>0))plan=()),本査詢過程目標(biāo)狀態(tài)(target=(computer)parameter-()plan=(*)),*表示預(yù)先分配的空閑空間。stepl:從査詢過程中提取本次服務(wù)組合過程的源狀態(tài)S。,S。=(target-(computer)parameter-((computer:brand=HP;TTM=>2007)(storage:stock>0))plan=());添加S。至用于臨時存儲數(shù)據(jù)的可用狀態(tài)隊列TmpS,TmpS={So}。step2:判斷TmpS不為空,轉(zhuǎn)step3。step3:從TmpS中取出位于隊列頭的S。作為當(dāng)前狀態(tài)S。step4:S的査詢條件為parameter=((computer:brand=HP;TTM=>2007)(storage:stock>0))不為空,把該條件于臨時存儲査詢條件的隊列A,即A={(computer:brand=HP;TTM=>2007),(storage:stock>0)}。step5:A不空,轉(zhuǎn)step6。step6:從A取出位于隊列頭的査詢條件(computer:brand-HP;TTM=>2007)作為當(dāng)前條件,搜索可用于當(dāng)前條件的基本數(shù)據(jù)査詢服務(wù)為computerQService,其對應(yīng)的原子操作為computerOperByBrand和computerOperByTTM,原子操作computerOperByBrandAndPrice有brand作為一個輸入?yún)?shù),但是另外一個輸入?yún)?shù)為價格,當(dāng)前多件不包含price,因此這個原子操作對于當(dāng)前條件不可用。轉(zhuǎn)step7。step7:矛巴(computerQService:computerOperByBrand(HP))(computerQService:computerOperByTTM(>2007))添加入S的服務(wù)調(diào)用序列plan中,此時plan=(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))。step8:生成親斤狀態(tài)S,=(target-(computer)parameter=((storage:stock>0))plan=((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)))),當(dāng)前條件對應(yīng)的領(lǐng)域數(shù)據(jù)對象為computer,目標(biāo)對象亦為computer,直接把S,加入可用TmpS,此時TmpS={(target=(computer)parameter-((storage:stock>0))plan-((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))))};轉(zhuǎn)step5a。step5a:A={(storage:stock>0)}不為空,轉(zhuǎn)step6a。step6a:從A取出位于隊列頭的查詢條件(storage:stock>0)作為當(dāng)前條件,搜索到可用于當(dāng)前條件的基本數(shù)據(jù)査詢服務(wù)為storageQService,其對應(yīng)的原子操作為storageOperByStock,轉(zhuǎn)step7a。step7a:把storageQService:storageOperByStock(>0)添加入S的服務(wù)調(diào)用序列plan中,此時plan-(storageQService:storageOperByStock(>0))。step8a:生成新狀態(tài)S,=(target-(computer)parameter-((computer:brand=HP;TTM=>2007))plan=(storageQService:storageOperByStock(>0))),當(dāng)前條件對應(yīng)的領(lǐng)域數(shù)據(jù)對象為storage與目標(biāo)領(lǐng)域數(shù)據(jù)對象computer不一致,調(diào)用storageQService的關(guān)聯(lián)查詢基本操作storageOperRela,得到結(jié)果storage:ID等價computer:ID,添加關(guān)聯(lián)屬性至S,的查詢條件生成后繼狀態(tài)(target=(computer)parameter-((computer:brand=HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))plan=(storageQService:storageOperByStock(>0))),并添加后繼狀態(tài)到TmpS,此時TmpS爿(target=(computer)parameter-((storage:stock>0))plan=((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)))),(target-(computer)parameter-((computer:brand-HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))plan=(storageQService:storageOperByStock(>0)))};轉(zhuǎn)step5b。step5b:A為空,轉(zhuǎn)step2c。step2c:TmpS不為空,轉(zhuǎn)step3c。step3c:從TmpS中取出位于隊列頭的狀態(tài)作為當(dāng)前狀態(tài)S,S={(target=(computer)parameter-((storage:stock>0))plan=((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))))}。step4c:當(dāng)前狀態(tài)S的査詢條件不為空,將S的査詢條件存儲至A,則AH(storage:stock>0)}。step5c:A不空,轉(zhuǎn)step6c。step6c:從A取出位于隊列頭的查詢條件(storage:stock>0)作為當(dāng)前條件,搜索到可用于當(dāng)前條件的基本數(shù)據(jù)查詢服務(wù)為storageQService,其對應(yīng)的原子操作為storageOperByStock,轉(zhuǎn)step7c。step7c:把storageQService:storageOperByStock(>0)添加入S的服務(wù)調(diào)用序列plan中,此時plan-(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0)。step8c:生成親斤狀態(tài)S,=(target-(computer)parameter-()plan-((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)),(storageQService:storageOperByStock(>0))),當(dāng)前條件對應(yīng)的領(lǐng)域數(shù)據(jù)對象為storage與目標(biāo)領(lǐng)域數(shù)據(jù)對象computer不一致,調(diào)用storageQService的關(guān)聯(lián)查詢基本操作storageOperRela,得到結(jié)果storage:ID等價computer:ID,添加關(guān)聯(lián)屬性至S,的查詢條件生成后繼狀態(tài)(target=(computer)parameter-((computer:ID=(storageQService:storageOperByStock(>0))))plan-((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0))),并添加后繼狀態(tài)到TmpS,此時TmpS={(target-(computer)parameter-((computer:brand-HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))plan-(storageQService:storageOperByStock(>0))),(targets(computer)parameter-((computer:ID=(storageQService:storageOperByStock(>0))))plan-((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0)))},轉(zhuǎn)step5d。step5d:A為空,轉(zhuǎn)step2e。step2e:TmpS不為空,轉(zhuǎn)step3e。step3e:從TmpS中取出位于隊列頭的狀態(tài)作為當(dāng)前狀態(tài)S,S={(target=(computer)parameter-((computer:brand-HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))plan=(storageQService:storageOperByStock(>0)))}。step4e:當(dāng)前狀態(tài)S的査詢條件不為空,將S的査詢條件存儲至A,A={(computer:brand-HP;TTM=>2007;ID=(storageQService:StorageOperByStock(>0)))};step5e:A不為空,轉(zhuǎn)step6e。step6e:從A取出位于隊列頭的查詢條件(computer:brand-HP;TTM=>2007;ID=(storageQService:storageOperByStock(>0))))作為當(dāng)前條件,搜索可用于當(dāng)前條件的基本數(shù)據(jù)查詢服務(wù)為computerQService,其對應(yīng)的原子操作為computerOperByBrand,computerOperByTTM和computerOperByID,轉(zhuǎn)step7e。step7e:矛巴(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))AcomputerQService:computerOperByID(storageQService:storageOperByStock(>0))添力D入S的月艮務(wù)調(diào)用序歹ijplan中,此時plan-(storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))A(computerQService:computerOperByID(storageQService:storageOperByStock(>0)))。step8e:生成親斥狀態(tài)S,=(target-(computer)parameter-()plan=(storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))A(computerQService:computerOperByID(storageQService:storageOperByStock(>0)))),當(dāng)前條件對應(yīng)的領(lǐng)域數(shù)據(jù)對象為computer,目標(biāo)對象亦為computer,直接把S,加入可用TmpS,此時TmpS-((target-(computer)parameter-((computer:ID=(storageQService:StorageOperByStock(>0))))plan-((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0))),(target=(computer)parameter-()plan=((storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))AcomputerQService:computerOperByID(storageQService:storageOperByStock(>0)))},轉(zhuǎn)step5f。step5f:A為空,轉(zhuǎn)step2g。step2g:TmpS不為空,轉(zhuǎn)step3g。step3g:從TmpS中取出位于隊列頭的狀態(tài)作為當(dāng)前狀態(tài)S,S={(target=(computer)parameter-((computer:ID=(storageQService:storageOperByStock(>0))))plan=((computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007)),storageQService:storageOperByStock(>0)))}。step4g:判斷當(dāng)前狀態(tài)S的査詢條件不為空,把S的查詢條件存儲至臨時存儲查詢條件的隊歹JA,A={(computer:ID=(storageQService:storageOperByStock(>0)))}。step5g:A不為空轉(zhuǎn)step6g。step6g:從A取出位于隊列頭的Slt^^4computer^IEt=^storageQService;storageOperByStock(>0)))作為當(dāng)前條件,搜索可用于當(dāng)前條件的基本數(shù)據(jù)査詢服務(wù)為computerQService該服務(wù)已經(jīng)被當(dāng)前狀態(tài)S調(diào)用過,放棄當(dāng)前狀態(tài)S,轉(zhuǎn)step2h。step2h:TmpS不為空,轉(zhuǎn)step3h。step3h:從TmpS中取出位于隊列頭的狀態(tài)作為當(dāng)前狀態(tài)S,S=(target-(computer)parameter-()plan=((storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))AcomputerQService:computerOperByID(storageQService:storageOperByStock(>0))。step4h:當(dāng)前狀態(tài)查詢條件為空,輸出服務(wù)調(diào)用序列(storageQService:storageOperByStock(>0)),(computerQService:computerOperByBrand(HP))A(computerQService:computerOperByTTM(>2007))A(computerQService:computerOperByID(storageQService:storageOperByStock(>0)))),該查詢過程的服務(wù)組合過程完畢。由于本次査詢請求只包含這一個査詢過程,故本次査詢請求的服務(wù)組合過程完畢。如果服務(wù)組合失敗,則轉(zhuǎn)到步驟十。步驟七定制存儲模塊存儲成功生成的服務(wù)調(diào)用序列及此次數(shù)據(jù)査詢請求功能對應(yīng)的模板到模板庫。存儲的模板記錄中,模板ID為后臺數(shù)據(jù)庫自動生成,模板名稱為用戶定制封裝結(jié)果xml中的模板名稱即"可購買電腦產(chǎn)品查詢",模板對應(yīng)配置信息為從用戶定制封裝結(jié)果xml中解析出的本次數(shù)據(jù)査詢對應(yīng)的査詢內(nèi)容為computer、查詢條件為((computer:brand=,,;TTM=',)(storage:stock=,,)),表示査詢條件為電腦對象的品牌屬性、上市時間屬性,庫存商品對象的庫存量屬性。模板對應(yīng)的服務(wù)調(diào)用序列為前述服務(wù)組合過程生成的服務(wù)調(diào)用序列,伹不包括參數(shù)值,即(storageQService:storageOperByStock()),(computerQService:computerOperByBrand())A(computerQService:computerOperByTTM())A(computerQService:computerOperByID(storageQService:storageOperByStock()))),表示首先調(diào)用storageQService基本數(shù)據(jù)查詢服務(wù)的storageOperByStock原子操作,此操作表示根據(jù)庫存量査詢庫存商品對象的所有實(shí)例。然后分別調(diào)用computerQService基本數(shù)據(jù)査詢服務(wù)的computerOperByBrand原子操作(表示按照品牌查詢電腦商品)、computerOperByTTM原子操作(表示按照上市時間查詢電腦商品)、computerOperByID原子操作(表示按照商品編號查詢電腦商品),并對以上三個原子操作的輸出結(jié)果取交集得到此服務(wù)調(diào)用序列的最終結(jié)果。步驟八執(zhí)行子模塊按照生成的服務(wù)調(diào)用序列順序調(diào)用基本服務(wù),按照序列中指定的輸入作為基本數(shù)據(jù)査詢服務(wù)原子操作的輸入,最終輸出computer數(shù)據(jù)對象實(shí)例的集合。computerQService:computerOperByID()此原子操作的輸入為前步執(zhí)行storageQService:StorageOperByStock(>0)的輸出結(jié)果storage對象的ID屬性,在執(zhí)行到computerQService:computerOperByID()原子操作時,取出storageQService:storageOperByStock(>0)結(jié)果storage實(shí)例集合中每一個storage實(shí)例的ID屬性,構(gòu)成一個list,作為computerQService:computerOperByID()的輸入。如果執(zhí)行過程中出現(xiàn)服務(wù)調(diào)用失敗、參數(shù)類型錯誤等導(dǎo)致執(zhí)行失敗,則轉(zhuǎn)步驟十。步驟九按照步驟二描述的結(jié)果格式,以步驟八輸出的結(jié)果數(shù)據(jù)對象實(shí)例為數(shù)據(jù)來源,從數(shù)據(jù)來源的computer數(shù)據(jù)對象中提取價格、型號、配置數(shù)據(jù),生成此次數(shù)據(jù)查詢結(jié)果,將獲得的所有行數(shù)據(jù)依據(jù)computer:price列進(jìn)行排序,以排序后的數(shù)據(jù)列表為數(shù)據(jù)來源生成服務(wù)器端應(yīng)答HTML頁面,并返回應(yīng)答。步驟十異常處理子模塊向客戶端返回失敗信息,指明失敗類型及詳細(xì)信息。權(quán)利要求1、一種基于服務(wù)組合的可定制查詢方法,其特征在于,由如下步驟組成步驟一建立可定制查詢客戶端和數(shù)據(jù)查詢服務(wù)器,并對領(lǐng)域內(nèi)數(shù)據(jù)進(jìn)行抽象分類,為所建立的模型構(gòu)建可編輯控件,存入可定制查詢客戶端中的領(lǐng)域數(shù)據(jù)對象模型庫,并在數(shù)據(jù)查詢服務(wù)器中構(gòu)建對應(yīng)的基本數(shù)據(jù)查詢服務(wù),存入基本數(shù)據(jù)查詢服務(wù)庫;步驟二初始化可定制查詢客戶端的領(lǐng)域數(shù)據(jù)對象模型庫和存儲已有的定制功能的模板庫;用戶把自身個性化需求與模板庫中的已有功能相比較,如果存在滿足用戶此次需求的功能的模版,從模板庫中選擇特定的功能的模板,頁面展示為此功能對應(yīng)定制的查詢內(nèi)容、查詢條件、結(jié)果顯示格式,并調(diào)整顯示格式,重新填寫定制的查詢條件屬性值,構(gòu)造相同功能的新請求;否則由領(lǐng)域數(shù)據(jù)對象模型庫和定制結(jié)果封裝子模塊定制數(shù)據(jù)查詢;步驟三可定制查詢客戶端的定制結(jié)果封裝子模塊封裝用戶定制結(jié)果;如果本次定制來源于模板庫,設(shè)定模板的標(biāo)識位表示來源于已有定制模板,否則設(shè)定相應(yīng)的標(biāo)識表示為新定制;發(fā)送至數(shù)據(jù)查詢服務(wù)器的請求隊列管理子模塊;步驟四請求隊列管理子模塊接收客戶端發(fā)送的數(shù)據(jù)查詢請求,并加入到請求隊列中;步驟五請求解析子模塊取出請求隊列中的第一個請求,解析該請求后獲得初始狀態(tài),目標(biāo)狀態(tài),約束條件及結(jié)果顯示格式;如果請求隊列不為空,判斷此次數(shù)據(jù)查詢是否模板庫中功能的一種,如果是,則由執(zhí)行子模塊直接獲得其服務(wù)調(diào)用序列,轉(zhuǎn)步驟八;否則調(diào)用服務(wù)組合引擎進(jìn)行服務(wù)組合;如果請求隊列為空,則轉(zhuǎn)步驟十;步驟六服務(wù)組合引擎根據(jù)初始狀態(tài)和目標(biāo)狀態(tài),調(diào)用服務(wù)代理子模塊獲得的當(dāng)前能夠使用的基本數(shù)據(jù)查詢服務(wù)信息,逐一處理初始狀態(tài)中的查詢過程,在滿足中間過程約束條件的前提下,為每一查詢過程進(jìn)行服務(wù)組合,生成服務(wù)調(diào)用序列;如果服務(wù)組合失敗,則轉(zhuǎn)到步驟十;步驟七由定制存儲模塊存儲對應(yīng)的功能及服務(wù)調(diào)用序列到模板庫;步驟八執(zhí)行子模塊按照服務(wù)調(diào)用流程序列的順序調(diào)用基本數(shù)據(jù)查詢服務(wù)庫中的基本數(shù)據(jù)查詢服務(wù),并協(xié)調(diào)服務(wù)間輸入輸出關(guān)系;如果出現(xiàn)異常則轉(zhuǎn)到步驟十;步驟九由結(jié)果生成子模塊按照請求所描述結(jié)果顯示格式生成最終數(shù)據(jù)查詢分析結(jié)果,向客戶端返回應(yīng)答,進(jìn)行結(jié)果顯示;步驟十由異常處理子模塊生成失敗信息,并返回給客戶端顯示。2、根據(jù)權(quán)利要求1所述一種基于服務(wù)組合的可定制查詢方法,其特征在于所述步驟一中的對數(shù)據(jù)進(jìn)行抽象分類是按照面向?qū)ο蟮乃枷耄瑢?shù)據(jù)進(jìn)行特征提??;將抽象出的領(lǐng)域數(shù)據(jù)對象模型所包含的屬性作為對象模型的屬性,每個領(lǐng)域數(shù)據(jù)對象模型以客戶端腳本的方式被編寫為可定制査詢客戶端的可編輯控件,向應(yīng)用系統(tǒng)描述自身的數(shù)據(jù)查詢需求。3、根據(jù)權(quán)利要求2所述一種基于服務(wù)組合的可定制査詢方法,其特征在于所述步驟一中的領(lǐng)域數(shù)據(jù)對象模型庫包括邏輯控件,用運(yùn)算及邏輯操作對兩個或多個領(lǐng)域數(shù)據(jù)對象屬性之間的關(guān)聯(lián)關(guān)系進(jìn)行描述,每個邏輯控件以腳本方式被編寫。4、根據(jù)權(quán)利要求1所述一種基于服務(wù)組合的可定制査詢方法,其特征在于所述步驟一中的基本數(shù)據(jù)査詢服務(wù)庫的基本數(shù)據(jù)查詢服務(wù)與領(lǐng)域數(shù)據(jù)對象模型庫的領(lǐng)域數(shù)據(jù)對象模型一一對應(yīng),提供領(lǐng)域數(shù)據(jù)對象查詢的原子操作,僅通過對應(yīng)的領(lǐng)域數(shù)據(jù)對象模型的一個或幾個屬性,從后臺數(shù)據(jù)庫中獲得具有此屬性的數(shù)據(jù)對象實(shí)例的集合。5、根據(jù)權(quán)利要求4所述一種基于服務(wù)組合的可定制査詢方法,其特征在于所述步驟一中的基本數(shù)據(jù)査詢服務(wù)庫的每個基本數(shù)據(jù)査詢服務(wù)包含一個査詢關(guān)聯(lián)屬性的原子操作,獲得對應(yīng)領(lǐng)域數(shù)據(jù)對象的關(guān)聯(lián)數(shù)據(jù)對象及其屬性的原子操作,輸出關(guān)聯(lián)數(shù)據(jù)對象及關(guān)聯(lián)數(shù)據(jù)對象的屬性集合。6、根據(jù)權(quán)利要求1所述一種基于服務(wù)組合的可定制査詢方法,其特征在于所述步驟二中的定制數(shù)據(jù)査詢,包括如下步驟步驟a:在可定制查詢客戶端的頁面上從領(lǐng)域數(shù)據(jù)+莫型庫的控件中選擇各可編輯控件,指定本次查詢的各查詢內(nèi)容數(shù)據(jù)對象;選擇各可編輯控件的屬性作為本次數(shù)據(jù)査詢的結(jié)果數(shù)據(jù)列表的一列;步驟b:在定制頁面上從領(lǐng)域數(shù)據(jù)模型庫的可視控件中選擇各可編輯控件,指定本次查詢的條件數(shù)據(jù)對象;選擇各可編輯控件的屬性并為該屬性選擇、填寫屬性值,并指定此次選擇的查詢條件用于的査詢內(nèi)容數(shù)據(jù)對象;步驟c:排列選擇的控件屬性的先后順序,填充定制頁面結(jié)果的數(shù)據(jù)列表表頭,并指定結(jié)果列表的排序列;步驟d:命名新定制的數(shù)據(jù)查詢,保存本次定制,并命名本次定制對應(yīng)的模板。7、根據(jù)權(quán)利要求1所述一種基于服務(wù)組合的可定制査詢方法,其特征在于所述步驟五中的初始狀態(tài),由査詢過程集合、査詢結(jié)果和服務(wù)調(diào)用序列組成;查詢過程集合包括本次用戶請求需要査詢的數(shù)據(jù)對象的查詢過程,查詢結(jié)果和服務(wù)調(diào)用序列為空。8、根據(jù)權(quán)利要求1所述一種基于服務(wù)組合的可定制査詢方法,其特征在于所述步驟五中的目標(biāo)狀態(tài),由査詢過程集合、查詢結(jié)果和服務(wù)調(diào)用序列組成;查詢過程集合為空,査詢結(jié)果為査詢過程集合中每個査詢過程的目標(biāo)數(shù)據(jù)對象,服務(wù)調(diào)用序列為一段空閑的內(nèi)存空間。9、根據(jù)權(quán)利要求1所述一種基于服務(wù)組合的可定制査詢方法,其特征在于所述步驟六中的服務(wù)組合,包括如下步驟stepl:服務(wù)組合引擎提取本次服務(wù)組合過程的源狀態(tài),包括查詢過程的目標(biāo)數(shù)據(jù)對象、查詢條件集合和空的服務(wù)調(diào)用序列;添加源狀態(tài)至用于臨時存儲數(shù)據(jù)的可用狀態(tài)隊列;step2:如果可用狀態(tài)隊列為空,則輸出服務(wù)組合失敗信息,服務(wù)組合過程結(jié)束;否則轉(zhuǎn)step3;step3:從可用狀態(tài)隊列中取出位于隊列頭的可用狀態(tài)作為當(dāng)前狀態(tài);step4:如果當(dāng)前狀態(tài)的査詢條件為空,則輸出當(dāng)前狀態(tài)的服務(wù)調(diào)用序列,服務(wù)組合過程結(jié)束;否則將當(dāng)前狀態(tài)的查詢條件存儲于存儲査詢條件的臨時隊列;step5:如果臨時隊列為空,轉(zhuǎn)step2;否則轉(zhuǎn)step6;step6:從臨時隊列中取出位于隊列頭的査詢條件作為當(dāng)前條件,搜索能用于當(dāng)前條件的基本數(shù)據(jù)査詢服務(wù)并査找其對應(yīng)的原子操作,如果所有基本數(shù)據(jù)査詢服務(wù)都已調(diào)用過,則轉(zhuǎn)step2;否則轉(zhuǎn)step7;step7:把査找到的原子操作以等價關(guān)系添加到當(dāng)前狀態(tài)的服務(wù)調(diào)用序列;step8:針對當(dāng)前狀態(tài)的當(dāng)前査詢條件,生成當(dāng)前狀態(tài)的后繼狀態(tài),并將后繼狀態(tài)加入可用狀態(tài)隊列,轉(zhuǎn)step5。10、根據(jù)權(quán)利要求9所述一種基于服務(wù)組合的可定制查詢方法,其特征在于所述step8生成當(dāng)前狀態(tài)的后繼狀態(tài)時,若當(dāng)前條件對應(yīng)的領(lǐng)域數(shù)據(jù)對象是本查詢過程的目標(biāo)對象,則從當(dāng)前狀態(tài)中刪除當(dāng)前條件,并將刪除當(dāng)前條件后的狀態(tài)作為后繼狀態(tài)加入可用狀態(tài)隊列,生成完畢;否則,調(diào)用當(dāng)前條件對應(yīng)的基本數(shù)據(jù)查詢服務(wù)的關(guān)聯(lián)査詢原子操作,獲得關(guān)聯(lián)屬性集合,分別添加每個關(guān)聯(lián)屬性及屬性值來源,并從當(dāng)前狀態(tài)中刪除當(dāng)前條件并作為后繼狀態(tài)加入可用狀態(tài)隊列;接著處理下一個關(guān)聯(lián)屬性并把所有的后繼狀態(tài)加入可用狀態(tài)隊列,直至關(guān)聯(lián)屬性集合中所有關(guān)聯(lián)屬性都已生成后繼狀態(tài)。11、一種基于服務(wù)組合的可定制査詢平臺,其特征在于,包括可定制査詢客戶端和數(shù)據(jù)查詢服務(wù)器;可定制査詢客戶端,包括領(lǐng)域數(shù)據(jù)對象^莫型庫,用來對領(lǐng)域內(nèi)數(shù)據(jù)進(jìn)行抽象分類,存入為所建立的模型構(gòu)建的可編輯控件;數(shù)據(jù)查詢服務(wù)器,包括基本數(shù)據(jù)査詢服務(wù)庫,構(gòu)建并存儲可編輯控件對應(yīng)的基本數(shù)據(jù)査詢服務(wù);可定制査詢客戶端還包括模板庫、定制結(jié)果封裝子模塊;模板庫,用來存儲已有的定制功能,初始化模板庫后,用戶把自身個性化需求與模板庫中的已有功能相比較,如果存在滿足用戶此次需求的功能的模版,從模板庫中選擇特定的功能的模板,頁面展示為此功能對應(yīng)定制的査詢內(nèi)容、査詢條件、結(jié)果顯示格式,并調(diào)整顯示格式,重新填寫定制的查詢條件屬性值,構(gòu)造相同功能的新請求;否則由領(lǐng)域數(shù)據(jù)對象模型庫和定制結(jié)果封裝子模塊定制數(shù)據(jù)查詢;定制結(jié)果封裝子纟莫塊,用來封裝用戶定制結(jié)果;如果本次定制來源于纟莫板庫,設(shè)定模板的標(biāo)識位表示來源于已有定制t莫板,否則設(shè)定相應(yīng)的標(biāo)識為表示為新定制;發(fā)送至數(shù)據(jù)査詢服務(wù)器的請求隊列管理子模塊;數(shù)據(jù)査詢服務(wù)器還包括請求隊列管理子模塊、請求解析子模塊、服務(wù)代理子模塊、服務(wù)組合引擎、定制存儲模塊、執(zhí)行子模塊、結(jié)果生成子模塊和異常處理子模塊;請求隊列管理子模塊,請求隊列管理子模塊接收客戶端發(fā)送的數(shù)據(jù)查詢請求,并加入到請求隊列中;請求解析子模塊,取出請求隊列中的第一個請求,解析該請求后獲得初始狀態(tài),目標(biāo)狀態(tài),約束條件及結(jié)果顯示格式;如果請求隊列不為空,判斷此次數(shù)據(jù)査詢是否模板庫中功能的一種,如果是,則由執(zhí)行子+莫塊直接獲得其服務(wù)調(diào)用序列,否則調(diào)用服務(wù)組合引擎進(jìn)行服務(wù)組合;如果請求隊列為空,則發(fā)送到異常處理子t莫塊處理;服務(wù)代理子模塊,獲得當(dāng)前能夠使用的基本數(shù)據(jù)査詢服務(wù)信息;服務(wù)組合引擎,根據(jù)初始狀態(tài)和目標(biāo)狀態(tài),調(diào)用當(dāng)前能夠使用的基本數(shù)據(jù)查詢服務(wù)信息,逐一處理初始狀態(tài)中的査詢過程,在滿足中間過程約束條件的前提下,為每一査詢過程進(jìn)行服務(wù)組合,生成服務(wù)調(diào)用序列;如果服務(wù)組合失敗,則發(fā)送到異常處理子模塊處理;定制存儲t莫塊,存儲對應(yīng)的功能及服務(wù)調(diào)用序列到t莫板庫;執(zhí)行子模塊,按照服務(wù)調(diào)用流程序列的順序調(diào)用基本數(shù)據(jù)查詢服務(wù)庫中的基本數(shù)據(jù)査詢服務(wù),并協(xié)調(diào)服務(wù)間輸入輸出關(guān)系;如果出現(xiàn)異常,則發(fā)送到異常處理子模塊處理;結(jié)果生成子^莫塊,按照請求所描述結(jié)果顯示格式生成最終數(shù)據(jù)査詢分析結(jié)果,向客戶端返回應(yīng)答,進(jìn)行結(jié)果顯示;異常處理子模塊,生成失敗信息,并返回給客戶端顯示。12、根據(jù)權(quán)利要求11所述一種基于服務(wù)組合的可定制查詢平臺,其特征在于所述領(lǐng)域數(shù)據(jù)對象模型庫中,對數(shù)據(jù)進(jìn)行抽象分類是按照面向?qū)ο蟮乃枷?,對?shù)據(jù)進(jìn)行特征提??;將抽象出的領(lǐng)域數(shù)據(jù)對象模型所包含的屬性作為對象模型的屬性,每個領(lǐng)域數(shù)據(jù)對象模型以客戶端腳本的方式被編寫為可定制査詢客戶端的可編輯控件,向應(yīng)用系統(tǒng)描述自身的數(shù)據(jù)查詢需求。13、根據(jù)權(quán)利要求12所述一種基于服務(wù)組合的可定制査詢平臺,其特征在于所述領(lǐng)域數(shù)據(jù)對象模型庫包括邏輯控件,用運(yùn)算及邏輯操作對兩個或多個領(lǐng)域數(shù)據(jù)對象屬性之間的關(guān)聯(lián)關(guān)系進(jìn)行描述,每個邏輯控件以腳本方式被編寫。14、根據(jù)權(quán)利要求11所述一種基于服務(wù)組合的可定制查詢平臺,其特征在于所述基本數(shù)據(jù)查詢服務(wù)庫的基本數(shù)據(jù)査詢服務(wù)與領(lǐng)域數(shù)據(jù)對象f莫型庫的領(lǐng)域數(shù)據(jù)對象模型一一對應(yīng),提供領(lǐng)域數(shù)據(jù)對象査詢的原子操作,僅通過對應(yīng)的領(lǐng)域數(shù)據(jù)對象模型的一個或幾個屬性,從后臺數(shù)據(jù)庫中獲得具有此屬性的數(shù)據(jù)對象實(shí)例的集合。15、根據(jù)權(quán)利要求14所述一種基于服務(wù)組合的可定制査詢平臺,其特征在于所述基本數(shù)據(jù)査詢服務(wù)庫的每個基本數(shù)據(jù)査詢服務(wù)包含一個査詢關(guān)聯(lián)屬性的原子操作,獲得對應(yīng)領(lǐng)域數(shù)據(jù)對象的關(guān)聯(lián)數(shù)據(jù)對象及其屬性的原子操作,輸出關(guān)聯(lián)數(shù)據(jù)對象及關(guān)聯(lián)數(shù)據(jù)對象的屬性集合。16、根據(jù)禾又利要求11所述一種基于服務(wù)組合的可定制査詢平臺,其特征在于所述可定制査詢客戶端進(jìn)行的定制數(shù)據(jù)査詢在可定制査詢客戶端的頁面上從領(lǐng)域數(shù)據(jù)模型庫的控件中選擇各可編輯控件,指定本次査詢的各查詢內(nèi)容數(shù)據(jù)對象;選擇各可編輯控件的屬性作為本次數(shù)據(jù)査詢的結(jié)果數(shù)據(jù)列表的一列;在定制頁面上從領(lǐng)域數(shù)據(jù)模型庫的可視控件中選擇各可編輯控件,指定本次査詢的條件數(shù)據(jù)對象;選擇各可編輯控件的屬性并為該屬性選擇、填寫屬性值,并指定此次選擇的査詢條件用于的査詢內(nèi)容數(shù)據(jù)對象;排列選擇的控件屬性的先后順序,填充定制頁面結(jié)果的數(shù)據(jù)列表表頭,并指定結(jié)果列表的排序列;命名新定制的數(shù)據(jù)查詢,保存本次定制,并命名本次定制對應(yīng)的模板。17、根據(jù)權(quán)利要求11所述一種基于服務(wù)組合的可定制査詢平臺,其特征在于所述請求解析子模塊得到的初始狀態(tài),由査詢過程集合、査詢結(jié)果和服務(wù)調(diào)用序列組成;查詢過程集合包括本次用戶請求需要査詢的數(shù)據(jù)對象的査詢過程,査詢結(jié)果和服務(wù)調(diào)用序列為空。18、根據(jù)權(quán)利要求ll所述一種基于服務(wù)組合的可定制查詢平臺,其特征在于所述請求解析子模塊得到的目標(biāo)狀態(tài),由查詢過程集合、查詢結(jié)果和服務(wù)調(diào)用序列組成;査詢過程集合為空,査詢結(jié)果為査詢過程集合中每個査詢過程的目標(biāo)數(shù)據(jù)對象,服務(wù)調(diào)用序列為一段空閑的內(nèi)存空間。19、根據(jù)權(quán)利要求11所述一種基于服務(wù)組合的可定制査詢平臺,其特征在于所述服務(wù)組合引擎提取本次服務(wù)組合過程的源狀態(tài),包括査詢過程的目標(biāo)數(shù)據(jù)對象、査詢條件集合和空的服務(wù)調(diào)用序列;添加源狀態(tài)至用于臨時存儲數(shù)據(jù)的可用狀態(tài)隊列;如果可用狀態(tài)隊列為空,則輸出服務(wù)組合失敗信息,服務(wù)組合過程結(jié)束;否則從可用狀態(tài)隊列中取出位于隊列頭的可用狀態(tài)作為當(dāng)前狀態(tài);如果當(dāng)前狀態(tài)的査詢條件為空,則輸出當(dāng)前狀態(tài)的服務(wù)調(diào)用序列,服務(wù)組合過程結(jié)束;否則將當(dāng)前狀態(tài)的査詢條件存儲于存儲查詢條件的臨時隊列;如果臨時隊列為空,對可用狀態(tài)隊列是否為空進(jìn)行判斷并處理;否則從臨時隊列中取出位于隊列頭的査詢條件作為當(dāng)前條件,搜索能用于當(dāng)前條件的基本數(shù)據(jù)查詢服務(wù)并查找其對應(yīng)的原子操作,如果所有基本數(shù)據(jù)査詢服務(wù)都已調(diào)用過,則對可用狀態(tài)隊列是否為空進(jìn)行判斷并處理;否則把査找到的原子操作以等價關(guān)系添加到當(dāng)前狀態(tài)的服務(wù)調(diào)用序列;針對當(dāng)前狀態(tài)的當(dāng)前査詢條件,生成當(dāng)前狀態(tài)的后繼狀態(tài),并將后繼狀態(tài)加入可用狀態(tài)隊列,對臨時隊列是否為空進(jìn)行判斷并處理。20、根據(jù)權(quán)利要求19所述一種基于服務(wù)組合的可定制查詢平臺,其特征在于所述服務(wù)組合引擎的服務(wù)組合過程生成當(dāng)前狀態(tài)的后繼狀態(tài),若當(dāng)前條件對應(yīng)的領(lǐng)域數(shù)據(jù)對象是本査詢過程的目標(biāo)對象,則從當(dāng)前狀態(tài)中刪除當(dāng)前條件,并將刪除當(dāng)前條件后的狀態(tài)作為后繼狀態(tài)加入可用狀態(tài)隊列,生成完畢;否則,調(diào)用當(dāng)前條件對應(yīng)的基本數(shù)據(jù)査詢服務(wù)的關(guān)聯(lián)查詢原子操作,獲得關(guān)聯(lián)屬性集合,分別添加每個關(guān)聯(lián)屬性及屬性值來源,并從當(dāng)前狀態(tài)中刪除當(dāng)前條件并作為后繼狀態(tài)加入可用狀態(tài)隊列;接著處理下一個關(guān)聯(lián)屬性并把所有的后繼狀態(tài)加入可用狀態(tài)隊列,直至關(guān)聯(lián)屬性集合中所有關(guān)聯(lián)屬性都已生成后繼狀態(tài)。全文摘要本發(fā)明提出一種基于服務(wù)組合的可定制查詢方法與平臺,用戶通過指定的客戶端可視組件并通過選擇、填寫組件屬性值的操作,向平臺描述自身需求,數(shù)據(jù)查詢請求的初始狀態(tài)和目標(biāo)狀態(tài)被解析出后,搜索并組合出對應(yīng)的基本服務(wù)調(diào)用序列,然后執(zhí)行序列中的基本服務(wù),進(jìn)而得到包含用戶期望結(jié)果數(shù)據(jù)的結(jié)果集,并經(jīng)過篩選、排序、組裝后生成最終結(jié)果向用戶顯示。本方法中用戶主動向系統(tǒng)描述自身需求,系統(tǒng)通過接收用戶描述并動態(tài)分析處理,可有效適應(yīng)不同用戶的不同個性化需求,降低應(yīng)用系統(tǒng)開發(fā)工作量和后期維護(hù)成本,并提高了數(shù)據(jù)查詢應(yīng)用系統(tǒng)的友好性。使用戶主動地定制數(shù)據(jù)查詢,將查詢進(jìn)行得靈活而方便。文檔編號H04L29/06GK101350023SQ20081011924公開日2009年1月21日申請日期2008年8月29日優(yōu)先權(quán)日2008年8月29日發(fā)明者丹余,鋼葉,曾婧娜,李先軍,葉王,馬世龍申請人:北京航空航天大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
石景山区| 九龙城区| 梁平县| 柳林县| 铜梁县| 迁安市| 策勒县| 长宁区| 重庆市| 会理县| 岢岚县| 云和县| 凤山县| 樟树市| 开远市| 灵台县| 苗栗县| 南江县| 乌拉特中旗| 扬州市| 吉水县| 大洼县| 舞钢市| 慈溪市| 黎城县| 和平区| 金堂县| 宝鸡市| 太湖县| 鸡东县| 安新县| 伊金霍洛旗| 青冈县| 化德县| 绥中县| 太仆寺旗| 武强县| 松桃| 泾阳县| 乌什县| 县级市|