東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)_第2頁
東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)_第3頁
東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)_第4頁
東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

大連理工大學(xué)碩士學(xué)位論文東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)姓名:苗海申請學(xué)位級別:碩士專業(yè):軟件工程指導(dǎo)教師:司偉生20060604大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文摘要隨著社會信息化的日益加強(qiáng),傳統(tǒng)的數(shù)據(jù)處理系統(tǒng)存在專用性太強(qiáng)、安全性不高、數(shù)據(jù)共享性差等缺陷,不利于企業(yè)應(yīng)用。為了充分利用企業(yè)信息資產(chǎn)所帶來的優(yōu)勢,企業(yè)迫切需要一個可擴(kuò)展的、可靠的、可維護(hù)的通用數(shù)據(jù)處理系統(tǒng),用于向相關(guān)的人員提供關(guān)鍵任務(wù)信息,以保證業(yè)務(wù)的成功。本文的主要目的在于研究如何開發(fā)這樣一個系統(tǒng),從而幫助企業(yè)簡單、快捷地組織、處理數(shù)據(jù)信息并將其直觀表現(xiàn)。本文結(jié)合實際項目,重點論述了通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)過程。文章首先對通用數(shù)據(jù)處理系統(tǒng)的總體結(jié)構(gòu)進(jìn)行描述與分析,分解系統(tǒng)功能模塊并明確各模塊間的相互調(diào)用關(guān)系。接著,文章詳細(xì)論述了通用數(shù)據(jù)處理系統(tǒng)實現(xiàn)的具體過程,包括數(shù)據(jù)模板的定義,數(shù)據(jù)模板的解析,數(shù)據(jù)結(jié)果集生成以及基于數(shù)據(jù)結(jié)果集的數(shù)據(jù)展現(xiàn)與分析。同時文章對系統(tǒng)的配置管理以及安全控制的實現(xiàn)也進(jìn)行了詳細(xì)描述。為了增強(qiáng)數(shù)據(jù)模板的可擴(kuò)展性和通用性,系統(tǒng)采用XML作為數(shù)據(jù)模板描述文件。在數(shù)據(jù)結(jié)果集展現(xiàn)分析方面,系統(tǒng)基于數(shù)據(jù)結(jié)果集對象實現(xiàn)多層次的結(jié)果集展現(xiàn)方案以及結(jié)果分析,同時系統(tǒng)提供了完善的能夠有效的保證系統(tǒng)資源安全性的配置及管理功能。系統(tǒng)基于J2EE架構(gòu),體現(xiàn)了系統(tǒng)的高質(zhì)、高效及可移植性。通用數(shù)據(jù)處理系統(tǒng)的實現(xiàn)為企業(yè)提供了一個標(biāo)準(zhǔn)的數(shù)據(jù)處理分析平臺。系統(tǒng)獨立于企業(yè)業(yè)務(wù)邏輯及數(shù)據(jù)庫平臺,可應(yīng)用于多種行業(yè)的業(yè)務(wù)處理。同時系統(tǒng)既能夠獨立部署在J2EE服務(wù)器上與企業(yè)應(yīng)用系統(tǒng)并行運行,也可以JAR包的形式提供API,與企業(yè)應(yīng)用無縫集成。關(guān)鍵字:數(shù)據(jù)模板;結(jié)果羹展現(xiàn);結(jié)粟集分析;可擴(kuò)展標(biāo)記語言東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)DesignandImplementationofGeneralizedDataProcessingSystemofNeusoftAbstractWiththeeverincreasingsocialinformationexplosion,thetraditionaldataprocessingsystemwithspecificsingleusage,inefficientsecurityandlackofdatasharing,Callnolongermeetthedemandofenterprises.Tofullytakeadvantageofinformationassets,everyapplicationexigentneedsageneralizeddataprocessingsystem,whichisextendable,reliableandmaintainable.TheseapplicationscansupplyindispensableinformationtopeoplewhoareconcernedtoensurebusinessSuCCeSS.Thispapermainlyaimsatresearchinghowtodevelopasystemwhichcanindicateandanalyzethestatisticsandinformationsimplyandquicklyforenterprises.Basedontheprojectofenterprise,thispaperexplainsthedesignandimplementationofgeneralizeddataprocessingsystem.Thepaperfirstdescribesandanalyzestheoverallstructureofthegeneralizeddataprocessingsystem,andthendemonstratestheneedandrelationamongmodule.Then,thepaperexpoundstheimplementationofgeneralizeddataprocessingsystem,includingthedefmidonofdatastencil,theparsingofdatastencil,thedetailedimplementationprocessofbuildingofdataresult,thedisplayandtheanalysisofdataresult.Thispaperalsoanalyzesimplementationofsystemconfigurationandsystemsecurity.Tostrengthenthesystem’sexpansibility,theXMLisusedasdatastencil.Asforthedemonstrationofthisdisplayandofdataresult,systemprovidesdifferentschemeofdatadisplayandanalysisbasedontheobjectofdataresult.What’smore,thesystemincludesconfigurationandefficientdistributingandmanagingfunctiontoensurethesecurityofresources.TheJ2EEframeworkcontributestothesystem’shighquality,highefficiencyandtransplantation.Theimplementationofgeneralizeddataprocessingsystemprovidesenterpriseswithastandardscheme.Thesystemisindependentofenterprise’sbusinesslogicanddatabaseplatform,andcanapplytothebusinesstreatmentofmanykindsoftrades.ThesystemcanoperatesindependentlyoiltheJ2EEserverworkingparallelwiththeapplications,andbeingprovidedwithAPIbyaJAR,itcanalsointegratedseamlesslywiththeenterpriseapplication.KeyWords:DataStencil;ResultDisplay;ResultAnalysis;eXtensibleMarkupLanguage獨創(chuàng)性說明作者鄭重聲明:本碩士學(xué)位論文是我個人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得研究成果。盡我所知,除了文中特別加以標(biāo)注和致謝的地方外,論文中不包含其他人已經(jīng)發(fā)表或撰寫的研究成果,也不包含為獲得大連理工大學(xué)或者其他單位的學(xué)位或證書所使用過的材料。與我一同工作的同志對本研究所做的貢獻(xiàn)均已在論文中做了明確的說明并表示了謝意。作者簽名:!氫五日期:絲堡壘』壁畫大連理工大學(xué)碩士研究生學(xué)位論文大連理工大學(xué)學(xué)位論文版權(quán)使用授權(quán)書本學(xué)位論文作者及指導(dǎo)教師完全了解“大連理工大學(xué)碩士、博士學(xué)位論文版權(quán)使用規(guī)定”,同意大連理工大學(xué)保留并向國家有關(guān)部門或機(jī)構(gòu)送交學(xué)位論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)大連理工大學(xué)可以將本學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫進(jìn)行檢索,也可采用影印、縮印或掃描等復(fù)制手段保存和匯編學(xué)位論文。作者簽名:藍(lán)盜訇帛生導(dǎo)師簽名:到!翌蘭蘭叢年』月蓋日大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文1緒論1.1市場前景及國內(nèi)外研究狀況在計算機(jī)出現(xiàn)之前,數(shù)據(jù)需要以紙質(zhì)文件等形式進(jìn)行存儲,數(shù)據(jù)的組織與處理都是需要手工進(jìn)行的。在計算機(jī)系統(tǒng)得到廣泛應(yīng)用之后,人們開始使用計算機(jī)及計算機(jī)應(yīng)用軟件進(jìn)行數(shù)據(jù)的分析處理,使用數(shù)據(jù)庫管理系統(tǒng)來管理數(shù)據(jù),使用應(yīng)用程序來完成企業(yè)具體業(yè)務(wù)邏輯的處理。目前,隨著數(shù)據(jù)庫系統(tǒng)使用的越來越廣泛,企業(yè)數(shù)據(jù)信息變得越來越巨大,同時這些信息也為每一個企業(yè)提供了制定和實施成功的商業(yè)戰(zhàn)略所需的原始素材。所以企業(yè)往往會在獲取關(guān)鍵任務(wù)信息資產(chǎn)上投入數(shù)以百萬的投資,建立如ERP(企業(yè)資源規(guī)劃)、CRM(客戶關(guān)系管理)和SCM(供應(yīng)鏈管理)等系統(tǒng),以捕捉、處理和存儲與市場、客戶、競爭對手和業(yè)務(wù)流程相關(guān)的有價值的數(shù)據(jù)。雖然這些系統(tǒng)能夠高效的收集企業(yè)的運營信息,但是卻通常并不針對不同信息消費者,如雇員、客戶和供應(yīng)商等提供分析、瀏覽和處理這些信息,并使其做出正確決策的功能。為了充分利用企業(yè)信息資產(chǎn)所帶來的優(yōu)勢,每一個企業(yè)級應(yīng)用都需要一個可擴(kuò)展的、可靠的通用數(shù)據(jù)處理解決方案,用于向企業(yè)關(guān)鍵人員提供關(guān)鍵任務(wù)信息,以保證業(yè)務(wù)的成功。在應(yīng)用系統(tǒng)的開發(fā)過程中,數(shù)據(jù)分析處理對于任何一個企事業(yè)單位來說都是必不可少的。使用了多個系統(tǒng)的企業(yè)怎樣從不同的系統(tǒng)中組合數(shù)據(jù)?,F(xiàn)有的大多數(shù)管理信息系統(tǒng)具有很大的局限性,不能滿足靈活多變的應(yīng)用需求。一方面,由于服務(wù)器端數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性、SQL查詢語言的技術(shù)性,最終用戶不能隨意訪問數(shù)據(jù)庫,大多數(shù)情況下,需要專業(yè)開發(fā)人員進(jìn)行繁雜的開發(fā),而開發(fā)出來的系統(tǒng)中,其數(shù)據(jù)展現(xiàn)樣式往往是固定的,缺少適應(yīng)變化的靈活性,需求發(fā)生變化時,必須求助于開發(fā)人員重新編寫程序,進(jìn)行二次開發(fā)、三次開發(fā)等,增加系統(tǒng)開支。另一方面,信息系統(tǒng)開發(fā)部門整天忙于滿足這些不斷變化的查詢和數(shù)據(jù)處理的需求,這對開發(fā)部門來說既枯燥又繁瑣,同時還要忙于沉重的技術(shù)支持和后期維護(hù),這些都極大地加重了開發(fā)人員的負(fù)擔(dān)。目前企業(yè)信息的來源比較分散,信息不能高度的集成和共享,不能將關(guān)鍵的準(zhǔn)確的數(shù)據(jù)及時的傳輸?shù)南鄳?yīng)的決策人的手中,為企業(yè)的運作決策提供數(shù)據(jù)。當(dāng)前建立的信息系統(tǒng)各自獨立,一般都是面向基層作業(yè)者和中低層管理者,不能為高層管理者提供完整的企業(yè)信息,且系統(tǒng)問無法進(jìn)行數(shù)據(jù)交流。有很多的企業(yè)已經(jīng)花費了大筆的資金來構(gòu)造企業(yè)內(nèi)部的管理信息系統(tǒng),比如有的企業(yè)已經(jīng)實施了企業(yè)管理系統(tǒng),或其他業(yè)務(wù)管理系統(tǒng),甚至有的企業(yè)已經(jīng)實施了ERP等大型軟件系統(tǒng),用戶在使用這些系統(tǒng)的過程中已經(jīng)輸入了大量的、寶貴的信息資料。但是,由于系統(tǒng)沒有很好的數(shù)據(jù)處理工具,沒有辦東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)法對數(shù)據(jù)進(jìn)行有效地整合處理,因此不能很好地把系統(tǒng)中豐富的數(shù)據(jù)資源表現(xiàn)出來,為用戶提供全面的、詳細(xì)的信息。在關(guān)系型數(shù)據(jù)庫曰漸普及的今天,市場需求的是如何使得數(shù)據(jù)庫中的大量信息滿足人們不斷變化的業(yè)務(wù)需求,并能夠及時為管理決策支持提供服務(wù)。數(shù)據(jù)處理是企業(yè)級應(yīng)用開發(fā)最重要的部分,絕大多數(shù)企業(yè)采用報表方式進(jìn)行數(shù)據(jù)信息組織與處理,這類系統(tǒng)的開發(fā)也屬于商業(yè)智能應(yīng)用的最廣泛領(lǐng)域。同時這類通用數(shù)據(jù)處理系統(tǒng)的開發(fā)也屬于商業(yè)智能應(yīng)用最廣泛的領(lǐng)域。商業(yè)智能的概念最早是GartnerGroup于1996年提出來的。商業(yè)智能的應(yīng)用一般可以分為四個階段:首先是企業(yè)報表的產(chǎn)生,特別是財務(wù)報表,在上市公司或規(guī)模較大的企業(yè)需求非常普遍;第二就是“例外分析”,所謂例外分析就是找出報表中所顯示的問題,層層深入的找出其出現(xiàn)的原因;第三進(jìn)行分類,通過數(shù)據(jù)挖掘,進(jìn)一步了解客戶的特點、習(xí)慣等;最后就是通過商業(yè)智能,分析所得到的數(shù)據(jù)信息,進(jìn)而制定出相關(guān)規(guī)劃、策略。企業(yè)可以根據(jù)自身信息化水平按部就班的實施商業(yè)智能,這樣可以大大降低實施風(fēng)險,也更容易有針對性做出決策。商業(yè)智能技術(shù)并不是基礎(chǔ)技術(shù)或者產(chǎn)品技術(shù),是一種基于大量信息基礎(chǔ)上的提煉和重新合的過程,這個過程與知識共享和知識創(chuàng)造緊密結(jié)合,完成了從信息到知識的轉(zhuǎn)變,最終為商家提供的是因特網(wǎng)時代的競爭優(yōu)勢和實實在在的利潤【1?!?。商業(yè)智能是從大量的數(shù)據(jù)和信息中發(fā)掘有用的知識,并用于決策以增加商業(yè)利潤,是一個從數(shù)據(jù)到信息到知識的處理過程。商業(yè)智能用來輔助商業(yè)活動做出快速反應(yīng),加快知識的獲取速度,減少企業(yè)不確定性因素的影響。因此滿足管理層和決策層對信息知識的時間性和準(zhǔn)確性的要求[圳。這些要求推廣來看,說明企業(yè)正逐漸擺脫單純依賴于軟件來處理日常事務(wù),而是明確要利用軟件來幫助自己,依據(jù)企業(yè)數(shù)據(jù)做出更好、更快的決策。對數(shù)據(jù)進(jìn)行統(tǒng)計、分析和挖掘是任何一個業(yè)務(wù)系統(tǒng)都必須有的功能,雖然不影響業(yè)務(wù)系統(tǒng)各項業(yè)務(wù)的流程處理,卻是業(yè)務(wù)系統(tǒng)中一個非常重要的部分,因為任何一個系統(tǒng)的輸入目的都是為了更好地輸出,系統(tǒng)的輸出是否符合用戶的需求是評判一個系統(tǒng)優(yōu)劣的主要標(biāo)準(zhǔn),一個設(shè)計優(yōu)秀的系統(tǒng)必然有良好輸出方式。通常來講,企業(yè)用戶會首先通過報表的形式來組織存儲在業(yè)務(wù)系統(tǒng)中的各項數(shù)據(jù),對這些數(shù)據(jù)進(jìn)行排列組合和統(tǒng)計,展現(xiàn)給相關(guān)人員并向決策者提供決策的依據(jù),達(dá)到對業(yè)務(wù)狀況的深度分析和透視的目的。目前國內(nèi)數(shù)據(jù)分析處理系統(tǒng)主要分為專業(yè)通用數(shù)據(jù)處理系統(tǒng)、其他產(chǎn)品內(nèi)嵌系統(tǒng)兩大部分。例如Oracle、Sybage等提供的數(shù)據(jù)處理系統(tǒng)都應(yīng)算為其他產(chǎn)品內(nèi)嵌范圍。對于數(shù)據(jù)處理分析系統(tǒng),由于要面對大數(shù)據(jù)量和大用戶量的并發(fā)訪問,并可能需要訪問不同數(shù)據(jù)庫的數(shù)據(jù),非專業(yè)數(shù)據(jù)處理系統(tǒng)越來越不能適應(yīng)當(dāng)前要求,專業(yè)通用數(shù)據(jù)處理系統(tǒng)已逐漸發(fā)展為市場主流。大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文國外產(chǎn)品主要有BO、Brio等,其特點是用戶范圍比較廣,產(chǎn)品比較完善,技術(shù)比較成熟等,但其缺點同樣突出,因為單純就數(shù)據(jù)處理展現(xiàn)功能來說,無法滿足國內(nèi)各種格式的要求,而且價格較高,限制了國內(nèi)客戶的選擇,這也是國外的數(shù)據(jù)處理系統(tǒng)遲遲無法打開中國市場的原因。國內(nèi)產(chǎn)品主要有藍(lán)葵、潤乾等,其特點是使用符合國內(nèi)用戶使用習(xí)慣,簡單方便,能夠完成符合國內(nèi)要求的復(fù)雜數(shù)據(jù)結(jié)果集展現(xiàn);其缺點是對OLAP等高端功能的支持不夠完善,此外,BO、Bdo等這些國外產(chǎn)品所積累的行業(yè)經(jīng)驗與分析模型是國內(nèi)產(chǎn)品所不具備的。綜上,目前國內(nèi)通用數(shù)據(jù)處理產(chǎn)品市場潛力巨大,沒有任何一家廠商可以形成壓倒性的市場占有率。在產(chǎn)品的選擇上,只有少數(shù)的大型企業(yè)才有能力去購買國外產(chǎn)品,但卻沒有能力購買這些產(chǎn)品相應(yīng)的行業(yè)分析模型。同時目前國內(nèi)的中小型企業(yè)對通用數(shù)據(jù)處理系統(tǒng)的需求又十分強(qiáng)烈,在這種情況下,一款通用數(shù)據(jù)處理系統(tǒng)的開發(fā)就顯得極其重要。1.2選題來源及應(yīng)用背景課題來源于東軟股份有限公司基礎(chǔ)軟件事業(yè)部通用數(shù)據(jù)處理系統(tǒng)開發(fā)項目,該項目主要用于解決東軟內(nèi)部各行業(yè)事業(yè)部實施企業(yè)項目過程中的大量業(yè)務(wù)數(shù)據(jù)處理問題,系統(tǒng)本身不局限于特定業(yè)務(wù)領(lǐng)域,不依賴與特定數(shù)據(jù)來源,獨立于企業(yè)業(yè)務(wù)數(shù)據(jù)庫平臺,通用于多種業(yè)務(wù)類型的數(shù)據(jù)分析處理。目前,該系統(tǒng)已經(jīng)被東軟教育,醫(yī)療,稅務(wù),國土資源等事業(yè)部廣泛使用。東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)2相關(guān)技術(shù)介紹2.1J2EE技術(shù)2.1.1J2EE體系結(jié)構(gòu)J2EE是Java2EnterpriseEdition的縮寫,意為Java2平臺企業(yè)版。J2EE技術(shù)作為新一代分布對象的標(biāo)準(zhǔn)之一,具有結(jié)構(gòu)規(guī)范、實現(xiàn)靈活、跨語言能力、跨平臺實現(xiàn)、面向?qū)ο笠约鞍踩院玫确矫娴奶攸c,將J2EE技術(shù)應(yīng)用于企業(yè)信息發(fā)布系統(tǒng),可以很好地解決傳統(tǒng)信息發(fā)布系統(tǒng)存在的不足。J2EE技術(shù)作為分布式對象技術(shù),描述的是系統(tǒng)整體設(shè)計格局,成為組件組裝的基礎(chǔ)15J。盡管J2EE應(yīng)用程序可以由三層或四層構(gòu)成,但在通常情況下,J2EE應(yīng)用程序由三層構(gòu)成,并且分布于三個不同的位置:客戶端,服務(wù)器,后臺數(shù)據(jù)庫服務(wù)器。通過這種方式運行的三層應(yīng)用模式拓展了基于客戶/服務(wù)的兩層模式。J2EE應(yīng)用可以是基于Web的,也可以是不基于Web的。在一個基于Web的J2EE應(yīng)用中,用戶的瀏覽器在客戶層中運行,并從一個Web服務(wù)器上下載Web層中的靜態(tài)HTML(HypertextMarkupLanguage)頁面或由JSP或SeⅣlet等程序生成的動態(tài)HTML,頁面也許還有一個不基于web的J2EE應(yīng)用系統(tǒng)中一個獨立的客戶端程序,或者不運行在一個HTML頁面中,而是運行在其它一些基于網(wǎng)絡(luò)的系統(tǒng),比如,手持設(shè)備或汽車電話中的Java程序。在客戶層中運行并在不經(jīng)過Web層的情況下訪問中間件對象,該不基于Web的客戶端程序可能也包括一個JavaBean類來管理用戶輸入,并將該輸入發(fā)送到在企業(yè)層中運行的EJB對象來處理。根據(jù)J2EE規(guī)范,JavaBean類不被視為組件,為J2EE平臺編寫的JavaBean類有實例變量和用于訪問實例變量中的數(shù)據(jù)的get和set方法,以此種方式使用的JavaBean類在設(shè)計和實現(xiàn)上通常都是簡單的,但是必須符合JavaBeaIl規(guī)范中列出的命名和設(shè)計約定。web層是一個特殊的客戶層,J2EEWeb層的Web組件可以由JsP/Servlet程序,基于Web的JavaApplet組成,調(diào)用Sewlet或者JSP頁面的HTML頁面在應(yīng)用程序組裝時與Web組件打包在一起,就像客戶層一樣,Web層可能包括一個JavaBe鋤類來管理用戶輸入,并將輸入發(fā)送到在業(yè)務(wù)層中運行的F_JB對象來處理。運行在客戶層的Web組件依賴wcb服務(wù)器來支持響應(yīng)客戶的請求。業(yè)務(wù)層作為解決或滿足某個特定業(yè)務(wù)領(lǐng)域,比如銀行,零售或金融業(yè)需要的邏輯的業(yè)務(wù)代碼,由運行在業(yè)務(wù)層的EJB組件或者其他的中間件來執(zhí)行。一個EJB對象從客戶程序處接收數(shù)據(jù),對數(shù)據(jù)進(jìn)行處理,如果需要,再將數(shù)據(jù)發(fā)送到企業(yè)信息系統(tǒng)層存儲。大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文一個F.JB對象還可以從企業(yè)信息系統(tǒng)層中檢索數(shù)據(jù),并將數(shù)據(jù)送回客戶程序。運行在業(yè)務(wù)層的EJB對象依賴于EJB容器來為諸如事務(wù),生命期,狀態(tài)管理,多線程及資源存儲池提供通常都非常復(fù)雜的系統(tǒng)級代碼。業(yè)務(wù)層經(jīng)常被稱作EnterpriseJavaBean。EJB層,業(yè)務(wù)層構(gòu)成了3層J2EE應(yīng)用的中間層,而其它兩層是客戶層和企業(yè)信息系統(tǒng)層查詢服務(wù)。因為一個J2EE應(yīng)用程序的組件是單獨運行的,并且往往在不同的設(shè)備上運行,因此需要一種能讓客戶層和wcb層代碼查詢,并引用其他代碼和資源的方法,客戶層和Web層代碼使用Java命名和目錄接口JNDI來查詢用戶定義的對象,例如EJB環(huán)境條目,例如一個數(shù)據(jù)庫驅(qū)動器的位置,企業(yè)信息系統(tǒng)層中用于查找資源的JDBC(JavaDatabaseConnectivity)DataSource對象以及消息連接安全和事務(wù)管理,諸如安全和事務(wù)管理這樣的應(yīng)用行為可以在部署時在Web和F_JB組件上進(jìn)行配置。J2EE平臺使用多層分布式的應(yīng)用模式。應(yīng)用邏輯根據(jù)其功能分成多個組件,各種不同的應(yīng)用組件構(gòu)成分布在不同層的機(jī)器上的J2EE程序[61。J2EE應(yīng)用程序由組件構(gòu)成。一個J2EE組件是自包含的,與其相關(guān)的與其它組件通信的類及文件集成到J2EE應(yīng)用程序的功能軟件單元。J2EE組件用Java語言編寫,通過相同的方法解析。J2EE組件與標(biāo)準(zhǔn)Java類的不同之處在于J2EE組件集成到了應(yīng)用程序中,證明能很好的組成,與J2EE規(guī)范兼容,并部署到負(fù)責(zé)運行、管理的J2EE服務(wù)器。J2EE客戶端可以使網(wǎng)絡(luò)瀏覽器也可以是桌面應(yīng)用程序。網(wǎng)絡(luò)客戶程序由兩部分組成:動態(tài)網(wǎng)頁包含各種標(biāo)記語言,由運行于網(wǎng)絡(luò)層的網(wǎng)絡(luò)組件產(chǎn)生,瀏覽器從服務(wù)器接受信息并反饋到頁面上。網(wǎng)絡(luò)客戶端又稱為瘦客戶。瘦客戶端通常不運行像查詢數(shù)據(jù)庫,執(zhí)行復(fù)雜的業(yè)務(wù)規(guī)則,或連到合法的應(yīng)用程序。當(dāng)用戶在使用瘦客戶端時,重量級的操作都載入到運行于J2EE服務(wù)器上的企業(yè)Bean,能夠均衡安全,速度,服務(wù)及可靠性。網(wǎng)頁可以包含小程序。小程序是一個較小的用Java語言編寫的程序,并能通過安裝在瀏覽器上的虛擬機(jī)運行。網(wǎng)絡(luò)組件首選API,可以創(chuàng)建網(wǎng)絡(luò)客戶層,因為在客戶系統(tǒng)中不需要插件或安全策略文件,另外,網(wǎng)絡(luò)組件能提供更干凈的,模塊化的應(yīng)用設(shè)計,因為可以將程序設(shè)計與頁面設(shè)計相分離。這樣,頁面設(shè)計人員可以進(jìn)行頁面設(shè)計而不需要懂Java程序設(shè)計。J2EE應(yīng)用客戶端運行在客戶上,為用戶處理任務(wù)提供了比標(biāo)記語言豐富的接口。典型的是擁有通過SwingAPI建立的圖形用戶界面,基于命令行的接口也是可以的。應(yīng)用客戶端可以直接調(diào)用業(yè)務(wù)邏輯層的企業(yè)Bean。東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)服務(wù)端及客戶端也可以包含基于JavaBean組件來管理客戶端與運行于服務(wù)端的組件間的數(shù)據(jù)流或服務(wù)端組件與數(shù)據(jù)庫間的數(shù)據(jù)流。J2EE規(guī)范沒有認(rèn)為JavaBean為J2EE組件。JavaBean組件有實例變量和get,set方法來設(shè)置、獲取變量值。J2EE網(wǎng)絡(luò)組件可以是Servlet或JSP。Servlet是Java類,能動態(tài)處理請求及響應(yīng)。JSP頁面是基于文檔的,能像Servlet一樣執(zhí)行的能允許更多的靜態(tài)頁面內(nèi)容。靜態(tài)HTML頁面及Applet網(wǎng)絡(luò)組件綁在一起,但J2EE規(guī)范沒有認(rèn)為這些為網(wǎng)絡(luò)組件。網(wǎng)絡(luò)層可以包含JavaBean組件來管理用戶輸入、發(fā)送輸入道邏輯層的EJB以處理。業(yè)務(wù)邏輯代碼是解決、達(dá)至0特定業(yè)務(wù)領(lǐng)域的需求,如銀行、零售、金融,又EJB處理的業(yè)務(wù)邏輯層。企業(yè)Bean可以重新從存儲器找回數(shù)據(jù),如果必要并處理,然后發(fā)送到客戶程序??偣灿腥NEJB:會話Bean,實體Bean,消息驅(qū)動Bean。會話Bean代表短暫的與客戶的會話,當(dāng)客戶結(jié)束執(zhí)行時,會話Bean及其數(shù)據(jù)就消失了。與會話Bean相比,實體Bean代表存儲在數(shù)據(jù)庫的表,如果客戶結(jié)束程序或服務(wù)器關(guān)閉,潛在的服務(wù)方法會將數(shù)據(jù)存儲。2.1.2JSP與ServIetJSP/Servlet是Java技術(shù)在web上的擴(kuò)展,支持Web服務(wù)器端的應(yīng)用開發(fā)同。JSP/Servlet程序應(yīng)該算是業(yè)務(wù)層,也就是第二層,應(yīng)該把商業(yè)邏輯從JSP/Servlet程序中最大限度的剝離,讓JSP/Servlet程序只負(fù)責(zé)數(shù)據(jù)的顯示與接受用戶請求,這樣就屬于客戶端表示層的了。Servlet技術(shù)作為J2EE系統(tǒng)架構(gòu)的重要組成部分,是整個系統(tǒng)架構(gòu)的交通樞紐,稱之為控制引擎,可以在許多方面擴(kuò)充Web服務(wù)的功能【810包javax.servlet和{ava】【-servlet.http提供了寫Servlet的接口和類。所有的Servlet都必須實現(xiàn)Servlet接口,該接口定義了生命周期方法。當(dāng)實現(xiàn)一個一般的服務(wù)時,通常使用或拓展GenericServlet類,該類提供了JavaServletAPI,HttpServlet類提供了一些方法,如doGet及doPost,用來處理特定的HTTP服務(wù)。JSP是JavaServerPages的簡稱。JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁面在客戶端請求以后對這些Java代碼進(jìn)行處理,然后將生成的HTML頁面返回給客戶端瀏覽器【91。在這種方式中,JSP技術(shù)將頁面邏輯與頁面的設(shè)計和顯示分離開來。JSP技術(shù)是Java系列技術(shù)中的一部分,使用基于Java的腳本語言,JSP頁面被解析成Servlet。JSP頁面可以調(diào)用JavaBean或EJB控件來完成服務(wù)器端的處理。在這種情況下,JSP技術(shù)是基于Web的高可伸縮性應(yīng)用中的關(guān)鍵部件。JSP頁面不局限于特定的平臺或Web服務(wù)器。大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文JSP建立在Servlet規(guī)范基礎(chǔ)上,本質(zhì)上也是Servlet,和Servlet一樣創(chuàng)建動態(tài)內(nèi)容,但Servlet內(nèi)容由代碼生成,動態(tài)內(nèi)容和靜態(tài)HTML是緊耦合,而JSP的設(shè)計目標(biāo)是內(nèi)容和表示的分離,簡化動態(tài)Web頁面的創(chuàng)建和管理。JSP是J2EE中一個重要部分,處于多層體系結(jié)構(gòu)的前端,實現(xiàn)應(yīng)用的客戶GUI??梢越Y(jié)合HTML和新的腳本標(biāo)記,是服務(wù)器端的腳本語言,Servlet是事先解析好并由部署者部署到容器中,而JSP可以動態(tài)創(chuàng)建,在第一次調(diào)用的時候被轉(zhuǎn)換成Servlet。2.2標(biāo)記語言應(yīng)用2.2.1可擴(kuò)展標(biāo)記語言XML是eXtensibleMarkupLanguage的縮寫,意為可擴(kuò)展的標(biāo)記語言[10】。XML擴(kuò)展標(biāo)記語言的應(yīng)用是一種真正的數(shù)據(jù)與展現(xiàn)分離的機(jī)制,由于其特有的優(yōu)勢,在J2EE構(gòu)架中有著重要而廣泛的應(yīng)用。可以真正解決動態(tài)的數(shù)據(jù)處理、業(yè)務(wù)流異步消息機(jī)制、動態(tài)的界面生成等關(guān)鍵的應(yīng)用技術(shù)問題【11】。XML是一種超文本標(biāo)識語言,源于SGML(StandardGeneralizedMarkupLanguage),是SGML的一個子集Il“。如果說HTML是SGML衍生的一種文件格式,那么XML則是SGML的簡化版,所有XML文件也是合乎規(guī)范的SGML文件。所以XML也是一種元語言舊J。關(guān)于XML要理解的第一件事是,XML不只是像超文本標(biāo)記語言或是格式化的程序。這些語言定義了一套固定的標(biāo)記,用來描述一定數(shù)目的元素。XML最重要的特征是:被標(biāo)記的各個數(shù)據(jù)是保持其含義的,因此系統(tǒng)間交換數(shù)據(jù)的可能性極大提高。XML最基本的概念是:結(jié)構(gòu)化標(biāo)記數(shù)據(jù),實現(xiàn)了“文檔結(jié)構(gòu)化”的語言規(guī)范,即采用DTD(DocumentTypeDefinition)文檔類型定義的語言標(biāo)準(zhǔn)【“】。XML定義了一套元句法,與特定領(lǐng)域有關(guān)的標(biāo)記語言都必須遵守。如果一個應(yīng)用程序可以理解這一元句法,那么也就自動地能夠理解所有的由此元語言建立起來的語言。瀏覽器不必事先了解多種不同的標(biāo)記語言使用的每個標(biāo)記。事實是,瀏覽器在讀入文檔或是XML的DTD時才了解了給定文檔使用的標(biāo)記。由于XML是非專有的并易于閱讀和編寫,就使得XML成為在不同的應(yīng)用間交換數(shù)據(jù)的理想格式。XML對于大型和復(fù)雜的文檔是理想的,因為數(shù)據(jù)是結(jié)構(gòu)化的。這不僅使用戶可以指定一個定義了文檔中的元素的詞匯表,而且還可以指定元素之間的關(guān)系。例如,如果要將銷售客戶的地址一起放在Web頁面上,這就需要有每個客戶的電話號碼和電子郵件地址。如果向數(shù)據(jù)庫中輸入數(shù)據(jù),可確保沒有漏下的字段。還需要每部書都有一個作者。當(dāng)沒有數(shù)據(jù)輸入時還可提供一個缺省值。XML也提供客戶端的包括機(jī)制,可以根據(jù)多種來源集成數(shù)據(jù)并將其作為一個文檔來顯示。數(shù)據(jù)還可以馬上進(jìn)行東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)重新排列。數(shù)據(jù)的各個部分可以根據(jù)用戶的操作顯示或隱藏。當(dāng)處理大型的信息倉庫,比如關(guān)系型數(shù)據(jù)庫時是極為有用的。2.2.2可擴(kuò)展的樣式語言XSLT(eXtendedStylesheetLanguageTransformation)樣式表是一個XML文檔。隨著XML應(yīng)用的日益廣泛,XML的數(shù)據(jù)檢索,查詢,轉(zhuǎn)換就成為一個非常重要的應(yīng)用領(lǐng)域,而XSLT是用于操作XML文檔的完整高級語言【“】。通過使用XML的尖括號標(biāo)記語法來表示文檔的結(jié)構(gòu)。這種語法在某種程度上是比較笨拙的,而此決策可以使該語言變得更繁瑣。但是,的確是有好處的,可以自動使用XML的所有詞匯設(shè)備(例如,Unicode字符編碼和轉(zhuǎn)義,使用外部實體等等),可以很容易使XSLT樣式表變成轉(zhuǎn)換的輸入或輸出,使該語言可以作用于自身,還能夠使將期望的XML輸出塊嵌入樣式表變得很容易。實際上,許多簡單的樣式表基本上可以寫作期望輸出文檔的模板,并且可以將一些特殊指令嵌入文本中,以便插入輸入中的變量數(shù)據(jù)或計算某個值。這就使XSLT在這個簡單的級別上非常類似于許多現(xiàn)有的專用HTML模板語言。.XSLT以傳統(tǒng)語言中的功能性編程的概念為基礎(chǔ)。樣式表由模板組成,這些模板基本上是單一功能,每個模板將輸出樹的一部分定義成一部分輸入樹的功能,并且不產(chǎn)生副作用。使用無副作用的規(guī)則受到嚴(yán)格控制(除了轉(zhuǎn)義成用類似Java的語言編寫的外部代碼)。XSLT語言允許定義變量,但不允許現(xiàn)有變量值更改,即沒有賦值語句。這個策略使許多新用戶感到困惑,其目的是為了允許逐步應(yīng)用樣式表。原理是如果語言沒有副作用,那么對輸入文檔做很小的改動時,不必從頭執(zhí)行整個轉(zhuǎn)換就應(yīng)該可以計算出對輸出文檔的最后更改【16_切。2.2.3可擴(kuò)展超文本傳輸語言xI-rrML可以簡單地理解為HTMLinXML,與HTML不同XHTML并不代表一種標(biāo)記語言,而是一系列標(biāo)記語言的統(tǒng)稱,因為二者都源自且兼容HTML4,擴(kuò)展了HTML4以更好地滿足人們的需求,因此稱為xHlML118】。HTML是使用SGML帶0定出的標(biāo)記語言,而XHTML則是使用ⅪⅥL制定出的標(biāo)記語言【19】。在W3C的XHTML的規(guī)范說明中是這么定義XHTML的:“XHTML包括一系列的文檔類型說明DTD和模塊,這些DTD和模塊是從HTMIA中重新生成,是HTML4的子集并做了擴(kuò)展。XHTML的DTD都是基于XML的,并且最終的目的是作為各種XML)盤用的粘合劑”,具體地說將現(xiàn)在的HTMIA規(guī)范劃分成不同的子集:例如專門處理文本Text的DTD,專門處理表格的DTD等等,并將這些子集用xMI覷則重新編寫,即所有這些從H聊L4中劃分出來的D1巾同HTML4中關(guān)于各部分大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文的定義是一致的,不同的是這些DTD是用XML的DTD定義規(guī)則重新編寫的,并且加進(jìn)了XML中的一些優(yōu)良特性,比如一致性嚴(yán)密性等。HTML與XHTML的主要差別是后者的可擴(kuò)展性。XHTML的擴(kuò)展性試圖提供一個定匍JHTML的標(biāo)準(zhǔn)方法,以滿足文檔或者特殊客戶的要求。為了提供可擴(kuò)展性,XHTML是在可結(jié)合和擴(kuò)展元素的子集中定義的,這使得網(wǎng)頁設(shè)計人員和網(wǎng)頁編程人員的工作量大為降低從記憶大量的HTMD際記中解放出來,只要為實際的網(wǎng)頁內(nèi)容選擇適當(dāng)?shù)哪K,擁有客戶的配置文件信息,網(wǎng)頁制作人員在獲得這兩方面的信息之后就能使開發(fā)出來的網(wǎng)頁在客戶機(jī)上獲得廣泛的支持。最初W3C研究XHTML的目的是打算讓XHTML充當(dāng)各種XML語言應(yīng)用的粘合劑。例如在一種XML應(yīng)用中可以用XHTML結(jié)合SVG標(biāo)記或其他XM哳記,如SMIL,CFML。但是W3C在制定XHTML標(biāo)準(zhǔn)的過程中發(fā)現(xiàn)XHTML可以成為一種標(biāo)準(zhǔn),使得只要是符合這個標(biāo)準(zhǔn)制作的Web頁面就可以用各種瀏覽器瀏覽,包括桌面瀏覽器和各種手持設(shè)備,而且用XHTML帶IJ作的wcb頁面在遵循少量原則的情況下可以直接用現(xiàn)有的桌面瀏覽器瀏覽,不必為XHTML研制專門的瀏覽器,很容易地就做到了向下兼容。由于XHTML是用xMI規(guī)則編寫的因此XHTML頁面的制作要遵守xML語法:區(qū)分大小寫,Windows平臺下一個頁面若是包含<?xmlversion=”1.0”encoding=”utf-8”?>表示這個頁面是XML頁面,瀏覽器將調(diào)用WindowsXMLParser解釋器顯示XML頁面;任意一個標(biāo)記都必須有結(jié)束標(biāo)記相對應(yīng);對于空標(biāo)記要在“>”前加‘‘/”;對于所有的屬性值都必須用引號引起來等。2.3文檔對象模型DOM是DocumentObjectModel的簡稱。DOM是平臺無關(guān),語言無關(guān)的標(biāo)準(zhǔn)接口,是XML、HTML文檔互操作的基礎(chǔ)f加1。DOM是給HTML和XML文件使用的一組API。提供了文件的結(jié)構(gòu)表述,讓開發(fā)人員可以改變其中的內(nèi)容及可見物。其本質(zhì)是建立網(wǎng)頁與Script或程序語言溝通的橋梁。所有w曲開發(fā)人員可操作及建立文件的屬性、方法及事件都以對象來展現(xiàn)(例如,Document就代表“文件本身”這個對象,Table對象則代表HTML的表格對象等等)。這些對象可以由當(dāng)今大多數(shù)的瀏覽器以Script來取用。一個用HTML或XHTML構(gòu)建的網(wǎng)頁也可以看作是一組結(jié)構(gòu)化的數(shù)據(jù),這些數(shù)據(jù)被封在DOM中,DOM提供了網(wǎng)頁中各個對象的讀寫的支持。東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)2.4Ajax技術(shù)Ajax是AsynchronousJavaScriptandXML的縮寫。Ajax并不是--I"7新的語言或技術(shù),實際上是幾項技術(shù)按一定的方式組合在一在同共的協(xié)作中發(fā)揮各自的作用。Ajax建立在現(xiàn)有的一些Web技術(shù)基礎(chǔ)之上,如JavaScript、HTML和CSS,可以與任何服務(wù)器端語言結(jié)合使用【21l。Ajax為交互較多,頻繁讀數(shù)據(jù),數(shù)據(jù)分類良好的Web應(yīng)用提供了一個很好的解決方案。要了解Ajax技術(shù),首先需要簡單介紹JavaScript。XHTML和HTML特別適合生成靜態(tài)Web頁面,但無法設(shè)計動態(tài)地響應(yīng)用戶輸入的頁面,而JavaScript能夠動態(tài)的響應(yīng)用戶輸入【吲。JavaScfipt是一組編程命令和指令,主要是用于增強(qiáng)網(wǎng)頁的操作。將JavaScfipt的命令編入一個網(wǎng)頁,可以根據(jù)程序改變網(wǎng)頁的外觀、根據(jù)系統(tǒng)的需求對網(wǎng)頁的內(nèi)容進(jìn)行插入和刪除、控制web服務(wù)器的操作、與在線數(shù)據(jù)庫進(jìn)行通信、甚至執(zhí)行一個曾經(jīng)和CGI通信相連的任務(wù);而且,JavaScript已經(jīng)成為實現(xiàn)網(wǎng)頁的調(diào)入根據(jù)程序生成并且對用戶事件(如鼠標(biāo)移動、單擊關(guān)聯(lián)內(nèi)容或提交窗體等)做出反應(yīng),對會話期間用戶的信息進(jìn)行跟蹤。JavaScfipt分為兩個具有特性的部分或者說兩個版本:服務(wù)器端JavaScript和客戶端JavaScfipt。前者用于描述在Web服務(wù)器上運行的程序,而后來則描述在Web瀏覽器上運行的程序。從語法上來說是相同的,只是被設(shè)計成用來執(zhí)行不同的任務(wù)。JavaScript語言繼承了很多Java語言的傳統(tǒng),而Java語言是SunMicrosystems開發(fā)的分布式互聯(lián)網(wǎng)編程工具。實際上,JavaScript的語法及命令結(jié)構(gòu)與Java相同。不同的是,Java是一種強(qiáng)類型語言,一種高級解析語言;而JavaScript則不要求如此強(qiáng)的類型聲明及類型的檢查。JavaScript是一種解釋性語言。即JavaScript不需要解析器進(jìn)行預(yù)解析,命令在程序被執(zhí)行時才轉(zhuǎn)化為可執(zhí)行代碼。JavaScript是解釋執(zhí)行的,即在程序運行前不進(jìn)行解析,就有可能會產(chǎn)生錯誤的腳本而且將之發(fā)布于Web上。因此,在將一個含有JavaScript程序的公用網(wǎng)頁發(fā)布之前必須要進(jìn)行徹底的測試,否則用戶將可能由于腳本中的錯誤而碰到瀏覽器產(chǎn)生的令人煩惱的錯誤信息,從而導(dǎo)致該網(wǎng)頁的失敗。Ajax實際上是傳統(tǒng)Web應(yīng)用程序的一個轉(zhuǎn)變。以前是服務(wù)器每次生成HTML頁面并返回給客戶端(瀏覽器)。在大多數(shù)網(wǎng)站中,很多頁面中至少90%都是一樣的,比如:結(jié)構(gòu)、格式、頁頭、頁尾、廣告等,所不同的只是一小部分的內(nèi)容,但每次服務(wù)器都會生成所有的頁面再返回給客戶端,這無形之中是一種浪費,不管是對于用戶的時間、帶寬、CPU耗用,還是對于ISP的高價租用的帶寬和空間來說。如果按一頁來算,只能幾K或是幾十K可能并不起眼,但像新浪每天要生成幾百萬個頁面的大ISP來說,可以說是損失巨大的。而Ajax可以所為客戶端和服務(wù)器的中間層,來處理客戶端的請求,并大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文根據(jù)需要向服務(wù)器端發(fā)送請求,用什么就取什么、用多少就取多少,就不會有數(shù)據(jù)的冗余和浪費,減少了數(shù)據(jù)下載總量,而且更新頁面時不用重載全部內(nèi)容,只更新需要更新的那部分即可,相對于純后臺處理并重載的方式縮短了用戶等待時間,也把對資源的浪費降到最低,基于標(biāo)準(zhǔn)化的并被廣泛支持和技術(shù),并且不需要插件或下載小程序,所以Ajax對于用戶和ISP來說是雙贏的。Ajax使Web中的界面與應(yīng)用分離(也可以說是數(shù)據(jù)與呈現(xiàn)分離),而在以前兩者是沒有清晰的界限的,數(shù)據(jù)與呈現(xiàn)分離的分離,有利于分工合作、減少非技術(shù)人員對頁面的修改造成的Web應(yīng)用程序錯誤、提高效率、也更加適用于現(xiàn)在的發(fā)布系統(tǒng)。也可以把以前的一些服務(wù)器負(fù)擔(dān)的工作轉(zhuǎn)加到客戶端,利于客戶端閑置的處理能力來處理。Ajax理念的出現(xiàn),揭開了無刷新更新頁面時代的序幕,并有代替?zhèn)鹘y(tǒng)Web開發(fā)中采用表單遞交方式更新Web頁面的趨勢,可以算是一個里程碑。舉個應(yīng)用的例子,是關(guān)于級聯(lián)菜單方面的Ajax應(yīng)用。為了避免每次對菜單的操作引起的重載頁面,不采用每次調(diào)用后臺的方式,而是一次性將級聯(lián)菜單的所有數(shù)據(jù)全部讀取出來并寫入數(shù)組,然后根據(jù)用戶的操作用JavaScript來控制子集項目的呈現(xiàn),這樣雖然解決了操作響應(yīng)速度、不重載頁面以及避免向服務(wù)器頻繁發(fā)送請求的問題,但是如果用戶不對菜單進(jìn)行操作或只對菜單中的一部分進(jìn)行操作的話,那讀取的數(shù)據(jù)中的一部分就會成為冗余數(shù)據(jù)而浪費用戶的資源,特別是在菜單結(jié)構(gòu)復(fù)雜、數(shù)據(jù)量大的情況下(比如菜單有很多級、每一級菜又有上百個項目),這種弊端就更為突出。如果在菜單操作中使用Ajax后,結(jié)果就會有所改觀:在初始化頁面時只讀出菜單第一級的所有數(shù)據(jù)并顯示,在用戶操作一級菜單其中~項時,會通過Aiax向后臺請求當(dāng)前一級項目所屬的二級子菜單的所有數(shù)據(jù),如果再繼續(xù)請求已經(jīng)呈現(xiàn)的二級菜單中的~項時,再向后面請求所操作二級菜單項對應(yīng)的所有三級菜單的所有數(shù)據(jù),以此類推。這樣,用什么就取什么、用多少就取多少,就不會有數(shù)據(jù)的冗余和浪費,減少了數(shù)據(jù)下載總量,而且更新頁面時不用重載全部內(nèi)容,只更新需要更新的那部分即可,相對于后臺處理并重載的方式縮短了用戶等待時間,也把對資源的浪費降到最低。本系統(tǒng)中對于各種資源的顯示方式也采用了類似于級聯(lián)菜單的“樹狀結(jié)構(gòu)”,在實現(xiàn)過程中采用Ajax技術(shù),大大提高了系統(tǒng)運行效率。東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)2.5WebService技術(shù)2.5.1WebService概念及原理webService是一種新型的Web應(yīng)用程序。不同于其他Web應(yīng)用程序,是自適應(yīng)、自描述、模塊化的應(yīng)用程序,并可以跨越Web進(jìn)行發(fā)布、定位以及調(diào)用。簡單的WebService可以提供例如天氣預(yù)報或者航班信息的服務(wù)。一旦部署了web服務(wù),其他的應(yīng)用程序就可以發(fā)現(xiàn)和調(diào)用所部署的服務(wù)。Web服務(wù)是建立在一些通用協(xié)議的基礎(chǔ)上,如HTTP,SOAP(SimpleObjectAccessProtoc01)tXML,WSDL(WebServiceDescriptionLanguage),UDDI(UniversalDescription,DiscoveryandIntegration)等。這些協(xié)議在涉及到操作系統(tǒng)、對象模型和編程語言的選擇時,沒有任何傾向,因此將會有很強(qiáng)的生命力。web服務(wù)是一種不涉及具體平臺和語言的軟件架構(gòu),但是開發(fā)人員必須選擇一種語言來具體開發(fā)Web服務(wù)。WebService中包含三個重要的概念,分別是WSDL,UDDI,SOAP。WSDL用于描述WebService,采用XML格式,指示客戶端如何與該WebService進(jìn)行交互。UDDI規(guī)范定義一個發(fā)布和發(fā)現(xiàn)有關(guān)WebService的信息的標(biāo)準(zhǔn)方式。與UDDI關(guān)聯(lián)的XML架構(gòu)定義四種使開發(fā)人員能夠使用已發(fā)布的WebService的信息。這四種信息是:業(yè)務(wù)信息、服務(wù)信息、綁定信息以及有關(guān)服務(wù)規(guī)范的信息。作為UDDI項目的核心組件,UDDI業(yè)務(wù)注冊表使業(yè)務(wù)能夠以編程方式定位有關(guān)其他單位公開的WebService的信息。開發(fā)人員可以使用UDDI業(yè)務(wù)注冊表定位發(fā)現(xiàn)文檔和服務(wù)說明。SOAP協(xié)議,內(nèi)容為XML格式的、在Web上交換數(shù)據(jù)的輕量協(xié)議。SOAP協(xié)議規(guī)范包含四個主要組成部分。第一部分定義用于封裝數(shù)據(jù)的必需的可擴(kuò)展信封。該SOAP信封定義SOAP消息,并且是SOAP消息處理器之間的基本交換單位。這是該規(guī)范唯一必需的部分。SOAP協(xié)議規(guī)范的第二部分定義用來表示應(yīng)用程序定義的數(shù)據(jù)類型和有向圖形的可選數(shù)據(jù)編碼規(guī)則,以及用于序列化非句法數(shù)據(jù)模型的統(tǒng)一模型。第三部分定義RPC樣式(請求/響應(yīng))的消息交換模式。每個SOAP消息都是單向傳輸。盡管SOAP的根位于RPC中,但不僅僅只是請求/響應(yīng)機(jī)制。WebServices經(jīng)常組合SOAP消息以實現(xiàn)此類模式,但SOAP并不強(qiáng)制要求消息交換模式,這部分規(guī)范也是可選的。規(guī)范的第四部分定義SOAP和}rrrP之間的綁定。但該部分也是可選的??梢詫ⅲ樱希粒信c任何能夠傳輸SOAP信封的傳輸協(xié)議或機(jī)制(包括SMTP、FTP甚至軟盤)結(jié)合在一起使用。2.5.2基于Java的Web服務(wù)本節(jié)主要介紹J2EE使用UDDI、WSDL和SOAP三種技術(shù)的工作過程。大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文假設(shè)服務(wù)提供者已經(jīng)決定把某項商業(yè)功能展示成Web服務(wù)。該Web服務(wù)駐留在一個基于Java的Web服務(wù)系統(tǒng)中。如圖2.1所示。圖2l調(diào)用流程Fig.2,lFlowofUSe服務(wù)提供者的第一步是編寫WSDL文件。當(dāng)前市場上有好幾種工具,可以幫助用戶使用現(xiàn)有的對象定義產(chǎn)生出WSDL文件。然后,需要發(fā)布關(guān)于自己的信息,把商業(yè)和這項web服務(wù)的技術(shù)規(guī)范作為一個WSDL文件發(fā)布到中心UDDI注冊表。這樣,用寫WSDL文件的方法使得w曲服務(wù)的描述占據(jù)了服務(wù)描述層。但是,在Web服務(wù)棧中我們看到,發(fā)布的商業(yè)信息和WSDL文件展現(xiàn)的是Web服務(wù)棧中的服務(wù)發(fā)布層。服務(wù)消費者應(yīng)用程序可以發(fā)現(xiàn)有興趣使用的Web服務(wù)。發(fā)現(xiàn)不僅涉及到要搜索商業(yè)和服務(wù),而且還要下載WSDL文件中所提到的技術(shù)規(guī)范。發(fā)現(xiàn)的步驟對應(yīng)于wcb服務(wù)棧中的服務(wù)發(fā)現(xiàn)層。服務(wù)消費者應(yīng)用程序用WSDL文件來確定.為了與服務(wù)提供者的web服務(wù)通信,需要傳送哪些消息,并且還要決定綁定信息。為了達(dá)到這個目的,綁定信息就是}rr邛上的SOAP。這個步驟對應(yīng)于Web服務(wù)棧中的XML消息和傳輸層。Apache組織推出的Axis是一個比較簡單實用的基于Java的SOAP引擎,Axis項目是Apache組織著名的SOAP項目的后繼項目應(yīng)用Axis開發(fā)WebService,需要有一個支持Servlet的服務(wù)器引擎,比如Tomcat等。wcbService是未來網(wǎng)絡(luò)應(yīng)用的發(fā)展方向,SOAP和WSDL是WebService的核心協(xié)議,Axis給出了一個很好的SOAP實現(xiàn),使得開發(fā)WebService應(yīng)用變得輕松而方便。東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)3通用數(shù)據(jù)處理系統(tǒng)設(shè)計3.1系統(tǒng)功能概述和特點3.1.1用戶特點本系統(tǒng)主要面向東軟股份有限公司各行業(yè)事業(yè)部,如教育,國土,醫(yī)療,解決方案以及某些企業(yè)應(yīng)用集成商。系統(tǒng)要求用戶至少應(yīng)該具備計算機(jī)操作,Windows操作系統(tǒng)的基礎(chǔ)知識,數(shù)據(jù)庫基礎(chǔ)知識。對于系統(tǒng)的管理者,應(yīng)該具備網(wǎng)絡(luò)維護(hù)管理、數(shù)據(jù)庫維護(hù)管理的知識,J2EE應(yīng)用服務(wù)器相關(guān)知識。3.1.2系統(tǒng)功能特點通用數(shù)據(jù)處理系統(tǒng)主要負(fù)責(zé)根據(jù)用戶的業(yè)務(wù)需求對客戶數(shù)據(jù)庫中的原始數(shù)據(jù)進(jìn)行組織,處理分析,并最終向用戶直觀表現(xiàn)其業(yè)務(wù)邏輯數(shù)據(jù)處理結(jié)果。系統(tǒng)運行過程中,要求用戶將其業(yè)務(wù)數(shù)據(jù)處理邏輯形成一個基于XML文檔格式的數(shù)據(jù)模板定義文件,在數(shù)據(jù)模板定義文件中描述用戶數(shù)據(jù)處理請求的原始數(shù)據(jù)綁定信息以及最終展現(xiàn)樣式信息。系統(tǒng)通過分析數(shù)據(jù)模板文件對用戶業(yè)務(wù)數(shù)據(jù)進(jìn)行組織處理,并按照用戶預(yù)定義的展現(xiàn)樣式將數(shù)據(jù)處理結(jié)果直觀表現(xiàn)。系統(tǒng)通過建立數(shù)據(jù)集概念降低了用戶在業(yè)務(wù)數(shù)據(jù)組織上的復(fù)雜性;在數(shù)據(jù)結(jié)果集展現(xiàn)方面,系統(tǒng)提供了多種類型展現(xiàn)方式,如頁面展現(xiàn),Excel導(dǎo)出,客戶端精確打印等,同時系統(tǒng)提供基于數(shù)據(jù)結(jié)果集的多層次,多視角數(shù)據(jù)分析統(tǒng)計功能,為企業(yè)用戶做出正確業(yè)務(wù)決策提供支持。系統(tǒng)具有較強(qiáng)的可靠性、可擴(kuò)展性和可維護(hù)性??煽啃园ㄏ到y(tǒng)能夠輸出符合用戶要求的數(shù)據(jù)處理結(jié)果,能夠保證系統(tǒng)資源的安全訪問。例如,在數(shù)據(jù)結(jié)果集展現(xiàn)的幾個步驟(基于瀏覽器的頁面展現(xiàn),Excel導(dǎo)出,客戶端打印)中,均有可能會產(chǎn)生異常或出錯,系統(tǒng)能夠保證出錯時,只是當(dāng)前步驟無法得到預(yù)期的結(jié)果,而不影響其它步驟,使得系統(tǒng)始終是處于可控的狀態(tài)。可擴(kuò)展性主要包括系統(tǒng)能夠與企業(yè)應(yīng)用系統(tǒng)進(jìn)行無縫集成。可維護(hù)性包括系統(tǒng)中各模塊設(shè)計盡可能符合“高內(nèi)聚,低耦合”的設(shè)計原則,使系統(tǒng)在發(fā)生問題時的維護(hù)費用盡量減少。3.1.3系統(tǒng)開發(fā)環(huán)境開發(fā)環(huán)境包括硬件環(huán)境、操作系統(tǒng)、CASE工具、數(shù)據(jù)庫系統(tǒng)、Web服務(wù)器和程序開發(fā)工具等。(1)硬件環(huán)境:單CPUIntel體系PC機(jī),2.3GHzIntelP4處理器、1G內(nèi)存。f21操作系統(tǒng):Windows2000Professional。大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文(3)CASE工具:RationalClearCase,RationalClearQuest。f4)數(shù)據(jù)庫系統(tǒng):Oracle92。(5)Web服務(wù)器:Tomcat5.0.28。(6)開發(fā)工具:Eclipse3.0,PL/SQLDeveloper。3.2系統(tǒng)架構(gòu)設(shè)計3.2.1系統(tǒng)功能模塊結(jié)構(gòu)系統(tǒng)結(jié)構(gòu)如圖3.1所示??刂平Y(jié)果集展理模塊查增刪改查匿三;{=|露至習(xí)||ir隧裴l徽-N){1隧支攛庫Il據(jù)庫(l……一|||卜L、————。.一L——’_一.—一圖3.1系統(tǒng)結(jié)構(gòu)Fig.3.1Systemstructure3.2.2系統(tǒng)功能模塊分析如圖3.1所示,將整個系統(tǒng)分為以下幾個模塊。f。聊曲服務(wù)L.——一。—————‘—,i—.———...—』發(fā)布r__■■_—曩系統(tǒng)配置模塊讀寫東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)數(shù)據(jù)模板定義模塊:所謂數(shù)據(jù)模板指的是記錄當(dāng)前用戶的數(shù)據(jù)處理需求相關(guān)信息,包括數(shù)據(jù)綁定信息,展現(xiàn)樣式信息等,通過這些信息能夠從語義上完全描述用戶業(yè)務(wù)數(shù)據(jù)處理邏輯。數(shù)據(jù)模板在物理上表現(xiàn)為一個XML文件。該模塊主要完成數(shù)據(jù)模板定義功能,使用戶能夠盡可能方便的將業(yè)務(wù)數(shù)據(jù)處理需求形成系統(tǒng)要求的數(shù)據(jù)模板定義文件。該模塊又可細(xì)分成兩個子模塊,一個是原始數(shù)據(jù)集組織模塊,其主要作用是將客戶數(shù)據(jù)庫中的原始數(shù)據(jù)組織成與業(yè)務(wù)相關(guān)的邏輯視圖;另一個是數(shù)據(jù)結(jié)果集展現(xiàn)樣式定義模塊,其主要作用是使用戶能夠快速方便的進(jìn)行數(shù)據(jù)結(jié)果集晟終展現(xiàn)樣式的定義。模板解析模塊:該模塊主要負(fù)責(zé)解析定義完成的數(shù)據(jù)模板,分別形成系統(tǒng)進(jìn)行數(shù)據(jù)結(jié)果集展現(xiàn)所需要的樣式輔助信息和數(shù)據(jù)獲取輔助信息。樣式信息采用XSLT記錄,數(shù)據(jù)獲取信息采用SQL語句記錄。數(shù)據(jù)存取訪問模塊:該模塊是一個相對比較底層的模塊,主要負(fù)責(zé)系統(tǒng)與數(shù)據(jù)庫之間的交互。系統(tǒng)中凡是涉及到于數(shù)據(jù)庫相關(guān)的操作時,都需要與該模塊進(jìn)行交互,簡單地說,數(shù)據(jù)存取訪問模塊就相當(dāng)于將數(shù)據(jù)庫的原始操作按照一定的系統(tǒng)實現(xiàn)邏輯進(jìn)行了封裝。系統(tǒng)配置模塊:該模塊主要用來進(jìn)行系統(tǒng)信息的配置,目的是為了在系統(tǒng)某些運行環(huán)境改變的情況下,僅僅通過配置,不必修改系統(tǒng)代碼的方式就能夠使系統(tǒng)適應(yīng)新的運行環(huán)境。該模塊通過讀寫一個XML結(jié)構(gòu)的系統(tǒng)配置文件完成上述功能。結(jié)果集展現(xiàn)模塊:該模塊負(fù)責(zé)最終展現(xiàn)用戶的業(yè)務(wù)邏輯數(shù)據(jù)處理結(jié)果,該模塊提供了多種的數(shù)據(jù)展現(xiàn)方式,如基于瀏覽器網(wǎng)頁展現(xiàn)形式,高級Excel導(dǎo)出形式以及客戶端的精確打印等。結(jié)果集分析模塊:該模塊建立在數(shù)據(jù)展現(xiàn)后的結(jié)果集上,根據(jù)用戶要求完成對結(jié)果集數(shù)據(jù)的深層分析功能,如分組統(tǒng)計等。系統(tǒng)權(quán)限管理模塊:該模塊主要負(fù)責(zé)系統(tǒng)用戶和組的增加修改刪除以及分配系統(tǒng)中用戶對資源的操作權(quán)限。通用數(shù)據(jù)處理系統(tǒng)要求用戶首先針對具體業(yè)務(wù)進(jìn)行數(shù)據(jù)模板的定義,即描述業(yè)務(wù)數(shù)據(jù)處理邏輯。系統(tǒng)提供可視化的數(shù)據(jù)模板定義工具,能夠使用戶方便,迅速地完成數(shù)據(jù)模板定義。在進(jìn)行數(shù)據(jù)模板定義過程中,首先是進(jìn)行業(yè)務(wù)數(shù)據(jù)的來源的選擇,這一部分操作通過數(shù)據(jù)集組織模塊完成。通過數(shù)據(jù)集組織模塊,用戶可以將客戶數(shù)據(jù)源中的原始數(shù)據(jù)按照用戶實際業(yè)務(wù)邏輯進(jìn)行抽象,在客戶數(shù)據(jù)庫的原始數(shù)據(jù)上建立一個業(yè)務(wù)邏輯視圖。這樣,當(dāng)進(jìn)行數(shù)據(jù)展現(xiàn)樣式定義時,用戶就可以脫離客戶數(shù)據(jù)庫中的原始數(shù)據(jù),直接面對與當(dāng)前業(yè)務(wù)相關(guān)的邏輯數(shù)據(jù)視圖,從而降低數(shù)據(jù)模板定義的復(fù)雜性。當(dāng)然,與業(yè)務(wù)相關(guān)的數(shù)據(jù)邏輯視圖的建立可以由數(shù)據(jù)庫管理人員完成;完成原始數(shù)據(jù)集組織之后,大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文用戶需要對數(shù)據(jù)結(jié)果集展現(xiàn)樣式進(jìn)行設(shè)計,同時將震現(xiàn)樣式與數(shù)據(jù)進(jìn)行綁定,完成所有上述操作后,系統(tǒng)將形成數(shù)據(jù)模板定義文件,在該模板中詳細(xì)記錄了用戶相關(guān)業(yè)務(wù)處理的數(shù)據(jù)以及結(jié)果集展現(xiàn)樣式信息;完成數(shù)據(jù)模板定義后系統(tǒng)通過調(diào)用數(shù)據(jù)存儲訪問模塊將數(shù)據(jù)模板定義文件存儲至系統(tǒng)支撐數(shù)據(jù)庫中,在存儲數(shù)據(jù)模板定義的同時調(diào)用數(shù)據(jù)模板解析模塊對模板進(jìn)行解析,形成系統(tǒng)在數(shù)據(jù)結(jié)果集展現(xiàn)時所需的中間結(jié)果SQL語句和XSLT樣式單,并將其存儲至系統(tǒng)支撐數(shù)據(jù)庫;當(dāng)用戶需要瀏覽展現(xiàn)結(jié)果時,首先需要登錄至結(jié)果集展現(xiàn)頁面,系統(tǒng)同時會調(diào)用權(quán)限管理模塊對當(dāng)前登錄用戶所能夠訪問的結(jié)果集資源進(jìn)行過濾。所謂過濾,即使當(dāng)前用戶只能夠訪問其具有訪問權(quán)限的數(shù)據(jù)處理結(jié)果集(對于用戶對資源權(quán)限的授予將由權(quán)限管理模塊獨立完成)。過濾成功完成后,結(jié)果集展現(xiàn)模塊調(diào)用數(shù)據(jù)存取訪問模塊獲取數(shù)據(jù)SQL以及樣式單XSLT,完成數(shù)據(jù)結(jié)果集的組織并進(jìn)行數(shù)據(jù)結(jié)果集展現(xiàn);當(dāng)用戶需要對當(dāng)前數(shù)據(jù)展現(xiàn)結(jié)果進(jìn)行某種類型的業(yè)務(wù)數(shù)據(jù)分析時,系統(tǒng)調(diào)用結(jié)果集分析模塊完成。本章從總體上介紹了通用數(shù)據(jù)處理系統(tǒng)的架構(gòu),分解了系統(tǒng)功能模塊,同時根據(jù)系統(tǒng)執(zhí)行流程介紹了系統(tǒng)各功能模塊間的調(diào)用關(guān)系,后面的章節(jié)將會基于本章的系統(tǒng)設(shè)計,詳細(xì)論述通用數(shù)據(jù)處理系統(tǒng)的具體實現(xiàn)過程。東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)4通用數(shù)據(jù)處理系統(tǒng)實現(xiàn)4.1數(shù)據(jù)模板定義的實現(xiàn)4.1.1原始數(shù)據(jù)集組織為了使數(shù)據(jù)模板定義過程變得簡單而直觀,系統(tǒng)提出了一個業(yè)務(wù)邏輯數(shù)據(jù)集概念,業(yè)務(wù)邏輯數(shù)據(jù)集本質(zhì)上是一個系統(tǒng)抽象的數(shù)據(jù)邏輯視圖,即通過熟悉客戶庫的系統(tǒng)管理人員將客戶數(shù)據(jù)庫系統(tǒng)中的表和視圖進(jìn)行業(yè)務(wù)抽象,建立一層與當(dāng)前業(yè)務(wù)相關(guān)的邏輯視圖。這樣,數(shù)據(jù)模板定義人員在進(jìn)行模板定義時,可以直接面對業(yè)務(wù)邏輯,而避免了直接與復(fù)雜的底層數(shù)據(jù)交互,降低了數(shù)據(jù)模板定義的復(fù)雜性。業(yè)務(wù)邏輯數(shù)據(jù)集的定義可以由熟悉數(shù)據(jù)庫結(jié)構(gòu)的數(shù)據(jù)庫管理員完成。那么如何在系統(tǒng)中形成業(yè)務(wù)邏輯數(shù)據(jù)集,同時面對多種多樣的客戶業(yè)務(wù)數(shù)據(jù)庫,如何才能夠得到客戶數(shù)據(jù)庫中所有的表和視圖信息。要解決這個問題,需要用到數(shù)據(jù)庫中的數(shù)據(jù)字典。數(shù)據(jù)字典是數(shù)據(jù)庫中各類數(shù)據(jù)描述的集合,是關(guān)于數(shù)據(jù)庫中數(shù)據(jù)的描述,是元數(shù)據(jù),而并不是數(shù)據(jù)本身。通過查詢客戶數(shù)據(jù)庫的數(shù)據(jù)字典,可以得到客戶數(shù)據(jù)庫的所有表和視圖信息,用戶可以對其進(jìn)行組織,形成業(yè)務(wù)相關(guān)的邏輯數(shù)據(jù)集,稱為業(yè)務(wù)邏輯數(shù)據(jù)集。對于每一個用戶定義的業(yè)務(wù)邏輯數(shù)據(jù)集,需要對其進(jìn)行詳細(xì)描述,系統(tǒng)提供一個用來描述業(yè)務(wù)邏輯數(shù)據(jù)集的XML定義文件。業(yè)務(wù)邏輯數(shù)據(jù)集定義示例如圖4.1所示。<?xmlversioll=”1.0”encoding=”utf-8”?><Logiccaption=”logicone”datasource=”DSONE”、<Fieldcaption=”fieid_one”udata=”表名1.字段名l”/><Fieldcaption=”field—two”udata=”表名1.字段名2”/><FieIdeaption=”field_three”udata=”表名2.字段名1”/><Fieldcaption=”fieId_four”udata=”表名2.字段名2”/><Fieldcaption=“field—five”udata=”視圖名1.字段名2”/><Executesql=”select表名1.字段名1,表名1.字段名2。表名2.字段名l,表名2.字段名2。視圖名1.字段名2from表i,表2,視圖3/></Logic>圖4.1業(yè)務(wù)邏輯數(shù)據(jù)集定義Fig.4.1DefineoIbusiness10百c大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文下面對業(yè)務(wù)邏輯數(shù)據(jù)集定義進(jìn)行說明。<Logic>元素為文件根元素,該元素有兩個屬性,屬性caption表示該業(yè)務(wù)邏輯數(shù)據(jù)集顯示的名名稱,屬性datasource表示該業(yè)務(wù)邏輯數(shù)據(jù)集的客戶數(shù)據(jù)源名稱。<Field>元素為<Logic>元素的子元素,一個<Logic>元素下可以有多個<Field>子元素,每個<Field>子元素表示業(yè)務(wù)邏輯數(shù)據(jù)集包含的一個邏輯字段,<Field>元素有兩個屬性,屬性caption表示該邏輯字段顯示的名稱,屬性udata表示該邏輯字段對應(yīng)的實際字段的字段名稱,為了區(qū)分不同表中相同的字段,udata屬性值的格式為表名.字段名。<Execute>元素為<Logic>元素的子元素,~個<Logic>有且僅有~個<Execute>子元素,該元素有一個sql屬性,該屬性存儲形成這個業(yè)務(wù)邏輯數(shù)據(jù)集的sql語句。當(dāng)用戶創(chuàng)建了一個業(yè)務(wù)邏輯數(shù)據(jù)集,也就形成了一個類似于圖4.1所示的業(yè)務(wù)邏輯數(shù)據(jù)集定義文件,然后系統(tǒng)調(diào)用后臺數(shù)據(jù)庫存儲程序,將該業(yè)務(wù)邏輯數(shù)據(jù)集定義作為一條記錄存儲至系統(tǒng)支撐數(shù)據(jù)庫的Logic表中,并且將其存儲為Oracle數(shù)據(jù)庫中的大字段類型田l,Logic表結(jié)構(gòu)如表4.1所示。表4.1邏輯表Tab.4.1Logictable表4.1中的字段含義描述如下。lid:數(shù)據(jù)庫自動分配字段,主健,唯一標(biāo)識一個業(yè)務(wù)邏輯數(shù)據(jù)集。parentid:系統(tǒng)中所有被創(chuàng)建的業(yè)務(wù)邏輯數(shù)據(jù)集最終將要在數(shù)據(jù)模板定義時被引用,系統(tǒng)中業(yè)務(wù)邏輯數(shù)據(jù)集在被引用時將以“樹狀結(jié)構(gòu)”被顯示出來,因此業(yè)務(wù)邏輯數(shù)據(jù)集之間會存在父子關(guān)系,parentid用來指出當(dāng)前業(yè)務(wù)邏輯數(shù)據(jù)集的父節(jié)點id。caption:存儲業(yè)務(wù)邏輯數(shù)據(jù)集的顯示名稱,與業(yè)務(wù)邏輯數(shù)據(jù)集定義文件dP<Logic>元素的caption屬性值相同。type:系統(tǒng)采用“樹狀結(jié)構(gòu)”顯示業(yè)務(wù)邏輯數(shù)據(jù)集,通過文件夾進(jìn)行組織。type用來標(biāo)識當(dāng)前節(jié)點是文件夾節(jié)點還是業(yè)務(wù)邏輯數(shù)據(jù)集節(jié)點?!埃稀北硎井?dāng)前節(jié)點是文件夾節(jié)點,“1”表示業(yè)務(wù)邏輯數(shù)據(jù)集節(jié)點。19東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)define:存儲業(yè)務(wù)邏輯數(shù)據(jù)集定義。當(dāng)節(jié)點是文件夾時,該字段為空。4.12結(jié)果集展現(xiàn)樣式定義系統(tǒng)提供一個獨立的數(shù)據(jù)模板定義器完成數(shù)據(jù)模板定義功能,用戶通過該模板定義器進(jìn)行數(shù)據(jù)展現(xiàn)樣式設(shè)計以及數(shù)據(jù)綁定,不需要手工編寫數(shù)據(jù)模板文件,只需通過簡單的拖拽方式完成模板定義。系統(tǒng)提供兩類基本數(shù)據(jù)結(jié)果集展現(xiàn)樣式,一類是數(shù)據(jù)縱向擴(kuò)展的列表式數(shù)據(jù)展現(xiàn),如表4-2所示。表42列表式Tab.4.2【jststyle另一類是數(shù)據(jù)可以橫肉擴(kuò)展的交叉式數(shù)據(jù)展現(xiàn),如表4-3所示。表4.3交叉式Tab.4.3Cro%style大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文數(shù)據(jù)模板定義器如圖4.2所示。主要分為左右兩個區(qū)域,左側(cè)列出系統(tǒng)中存在的所有的業(yè)務(wù)邏輯數(shù)據(jù)集,并以“樹狀結(jié)構(gòu)”進(jìn)行顯示。根節(jié)點顯示LogicView字樣,其子節(jié)點為系統(tǒng)中的不同業(yè)務(wù)邏輯數(shù)據(jù)集,每個業(yè)務(wù)邏輯數(shù)據(jù)集節(jié)點的予節(jié)點為當(dāng)前業(yè)務(wù)邏輯數(shù)據(jù)集所包含的客戶數(shù)據(jù)庫表中的字段。定義器右側(cè)從上至下又分為三個區(qū)域,最上方為控件選擇區(qū)域,包含列表式控件,交叉式控件以及標(biāo)簽控件等。中間為樣式設(shè)置區(qū)域,進(jìn)行數(shù)據(jù)展現(xiàn)樣式的設(shè)計,用戶可以通過拖放不同的展現(xiàn)樣式控件,標(biāo)簽,數(shù)據(jù)綁定字段以完成數(shù)據(jù)展現(xiàn)樣式的設(shè)計。最下方是屬性設(shè)置區(qū)域,進(jìn)行綁定數(shù)據(jù)的顯示細(xì)節(jié)樣式的設(shè)置,如顯示字體,顏色等等。每一個數(shù)據(jù)模板定義代表一個數(shù)據(jù)業(yè)務(wù)邏輯處理,其最終的數(shù)據(jù)處理結(jié)果集將作為系統(tǒng)中的一個資源進(jìn)行管理。數(shù)據(jù)模板定義器完成數(shù)據(jù)模板文件定義后,需要調(diào)用后臺WebService進(jìn)行模板的數(shù)據(jù)存儲。數(shù)據(jù)模板定義器只負(fù)責(zé)形成數(shù)據(jù)模板文件,數(shù)據(jù)庫的存取操作完全由后臺服務(wù)端完成,模板定義器通過調(diào)用WebService接口與系統(tǒng)后臺交互。圖42模板定義器Fig.4.2Stencildesigner定義完成后的數(shù)據(jù)模板文件如圖4_3所示。東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)<?xmlversion=。l0’encoding=’utf一8’?><DataStencilcaption=’stencill’type=“list’><Gridwidth=’40”height:’20’/><Unitid=。l’caption=’第一列”left=’07top=’0。cols’1’rows=”1’font=’宋體8fontsize=’g.0”fontcolor=’rgb(255.255.255)。italic=’false+underline=‘false’bold=。false’|、<Unitid=+2’caption=’第二列8left=717top=’0’cols’i’rows=’1’font=’宋體’fentsize=。9.0”fontcolor=4rgb(255,255,255)”italic=’false’underline=’false’bold=’false’/><Unitid=’3’caption=’第三列’left=’2…top=’O’cots’1’rows=’rfont=4宋體’fontsize=’9.04fontcolor=4r曲(255,255,255)’italic=。false’underline=3false’bold=。false’h<Listlogicid=’l’><Fieldid=。4。udata=’表名1.字段名l’left=40’top=。1’cols”l’rows=”1”font=’宋體’fontsize=’9.0’fontcolor=’rgb(255,255,255)+italic=6false‘underline=’false’bold=’false‘h<Fieldid=”5。udata=’表名1.字段名2’left=’1’top=’rcols’1’rows=’1’font=”宋體’fontsize=’9.0’fontcolor=4rgb(255,255.255)’italic=。false’underline=‘false+bold=‘false’h<Fieldid=”6。udata=’表名2.字段名rleft=+2…top=’I’cols’l’rows=’rfont=’宋體’fontsize=”9.0’fontcolor=’rgb(255,255。255)’italic=4false’underline=’false’bold-’false”/></List></DataStencil>圖4.3數(shù)據(jù)模板定義Fig.4.3DataStencildefine下面對模板定義文件做一下說明。<DataStencil>元素為文件根元素,該元素有兩個屬性,屬性caption表示數(shù)據(jù)模板的名稱,屬性表示type代表該數(shù)據(jù)結(jié)果集展現(xiàn)樣式,其值為list表示數(shù)據(jù)將進(jìn)行縱向擴(kuò)展的列表式展現(xiàn),其值為corss表示數(shù)據(jù)將進(jìn)行橫向擴(kuò)展的交叉式展現(xiàn)。<Grid>元素為<DataStencil>元素的子元素,~個<DataStencil>元素只能有~個<Grid>子元素,表示數(shù)據(jù)展現(xiàn)時標(biāo)準(zhǔn)單元格的大小,其屬性width和height分別表示標(biāo)準(zhǔn)格的寬度和高度,單位都是像素。<Unit>元素為<DataStencil>元素的子元素,用來表示結(jié)果集展現(xiàn)后的邏輯標(biāo)題,不需要進(jìn)行擴(kuò)展。屬性捆用作唯一標(biāo)識,caption表示用戶輸入的標(biāo)題顯示名稱,left和toD屬性用來確定該標(biāo)題單元格的左上角坐標(biāo),屬性cols和rOWS表示一個Unit的橫向跨格大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文數(shù)和縱向跨格數(shù)。屬性font,fontsize,fontcolor,italic,underline,bold用來表示該標(biāo)題的顯示樣式。<List>元素為<DataStencil>元素的子元素,用來表示數(shù)據(jù)處理結(jié)果顯示內(nèi)容,屬性logicid表示該數(shù)據(jù)模板引用了那個業(yè)務(wù)邏輯數(shù)據(jù)集,其值為數(shù)據(jù)庫Logic表中的id值。<List>元素中的內(nèi)容需要根據(jù)數(shù)據(jù)庫中的實際數(shù)據(jù)擴(kuò)展成一個列表。<Field>元素為<List>元素的子元素,用來表示數(shù)據(jù)模板所引用的數(shù)據(jù),即該元素用來標(biāo)識數(shù)據(jù)綁定。屬性id用作數(shù)據(jù)字段的唯一標(biāo)識,udata表示其在數(shù)據(jù)庫中的字段名稱,left和top屬性用來確定該表頭單元格的左上角坐標(biāo),屬性cols和rows表示一個Unit的橫向跨格數(shù)和縱向跨格數(shù)。屬性font,fontsize,fontcolor,italic,underline,bold用來表示顯示樣式。當(dāng)用戶創(chuàng)建了一個數(shù)據(jù)模板,就形成了一個類似于圖4.3所示的數(shù)據(jù)模板定義文件,然后會調(diào)用后臺數(shù)據(jù)庫存儲程序,將該數(shù)據(jù)模板定義做為一條記錄存儲至系統(tǒng)支撐數(shù)據(jù)庫的Stencil表中,Stencil結(jié)構(gòu)如表4.4所示。表4.4模板表Tab.4.4Stenciltable表4.4中的字段含義描述如下。fid:數(shù)據(jù)庫自動分配字段,主健,唯一標(biāo)識一個數(shù)據(jù)模板定義。parentid:類似于Logic表中的parentid字段,“樹狀結(jié)構(gòu)”展現(xiàn)時使用。caption:存儲數(shù)據(jù)模板的名稱。type:類似于Logic表中的type字段,用來標(biāo)識當(dāng)前節(jié)點是文件夾節(jié)點還是資源節(jié)點?!埃啊北硎井?dāng)前節(jié)點是文件夾節(jié)點,“1”表示是資源節(jié)點。owner:創(chuàng)建該數(shù)據(jù)模扳的用戶id。createtime:創(chuàng)建該數(shù)據(jù)模板的時間。東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)define:存儲數(shù)據(jù)模板定義。當(dāng)節(jié)點是文件夾時,該字段為空。4.2數(shù)據(jù)存取訪問模塊的實現(xiàn)本系統(tǒng)中,存取訪問模塊用來完成與數(shù)據(jù)庫的交互,存取訪問模塊位于數(shù)據(jù)庫之上,做為數(shù)據(jù)庫操作的封裝。系統(tǒng)中一切需要與數(shù)據(jù)庫進(jìn)行交互的操作都需要經(jīng)過存取訪問模塊,模塊抽象了數(shù)據(jù)庫存取操作,并將其封裝成為具有一定數(shù)據(jù)處理邏輯的方法。數(shù)據(jù)存取訪問模塊在系統(tǒng)中功能如圖4.4所示。匹巨[三莖一詢增一改查圖4.4數(shù)據(jù)存取模塊Fig.4.4Moduleofdatastorageaccess本系統(tǒng)中所涉及到的數(shù)據(jù)庫有兩種分類形式,第一種分類是物理分類,即按照不同的數(shù)據(jù)庫管理系統(tǒng)分類,如DB2,Oracle,SQLServer等。另一種分類是邏輯分類,按照邏輯分類可以將本系統(tǒng)中的數(shù)據(jù)庫分為兩種,客戶數(shù)據(jù)庫和支撐數(shù)據(jù)庫。客戶數(shù)據(jù)庫是進(jìn)行業(yè)務(wù)處理的數(shù)據(jù)來源,對于客戶數(shù)據(jù)庫,系統(tǒng)只具有查詢權(quán)限。支撐數(shù)據(jù)庫用來存儲在系統(tǒng)運行過程中產(chǎn)生的輔助信息,例如,業(yè)務(wù)邏輯數(shù)據(jù)集的定義,數(shù)據(jù)模板的定義,用戶信息,權(quán)限控制信息等。對于支撐數(shù)據(jù)庫,系統(tǒng)需要進(jìn)行增,刪,改,查四種操作。在系統(tǒng)的實現(xiàn)過程中,支撐數(shù)據(jù)庫的選擇比較靈活,可以由系統(tǒng)開發(fā)者決定,但是已經(jīng)選定數(shù)據(jù)庫類型,基本就不會改變,系統(tǒng)中開發(fā)過程中需用Oracle92做為系統(tǒng)支持?jǐn)?shù)據(jù)庫,因此對支撐數(shù)據(jù)庫的操作比較固定??蛻魯?shù)據(jù)庫可以是任意類型,系統(tǒng)的通用性也體現(xiàn)于此,因此在進(jìn)行客戶數(shù)據(jù)庫查詢操作時,需要首先判斷客戶數(shù)據(jù)庫平臺類型,大連理工大學(xué)專業(yè)學(xué)位碩士學(xué)位論文然后進(jìn)行具體操作。數(shù)據(jù)庫平臺類型由用戶通過系統(tǒng)配置文件給出,系統(tǒng)在運行時通過配置文件獲得客戶數(shù)據(jù)庫平臺類型,這部分功能將由系統(tǒng)配置模塊實現(xiàn)。系統(tǒng)不依賴于客戶業(yè)務(wù)數(shù)據(jù)庫類型的特點體現(xiàn)了系統(tǒng)的通用性。數(shù)據(jù)存取訪問模塊類圖如圖4.5所示。圖4.5數(shù)據(jù)存取訪問類Fig.4.5Classesofdatastorageaccess下面將詳細(xì)介紹數(shù)據(jù)存取訪問模塊中類的功能以及相互之間的關(guān)系。接口IDBOperator:該接口抽象了對數(shù)據(jù)庫的各種操作,主要是對數(shù)據(jù)庫記錄的增刪改查,該接口的操作并不包含任何業(yè)務(wù)邏輯,只包含純粹的數(shù)據(jù)庫操作方法。操作目標(biāo)包括客戶數(shù)據(jù)庫和系統(tǒng)支撐數(shù)據(jù)庫。類DRMOperator與類JDBCOperator:這兩個類分別是接口IDBOperator不同實現(xiàn)。類DRMOperator使用一個數(shù)據(jù)庫連接池組件API實現(xiàn)對數(shù)據(jù)的具體操作。而類JDBCOperator直接調(diào)用JDBCAPI實現(xiàn)對數(shù)據(jù)庫的具體操作。JDBC是建立在X/OpenSOLCLI(CallLevelInterface)基礎(chǔ)之上的,定義了一個友好的Java界面與X/OpenSOLCLI中定義的基本抽象層【2引。在系統(tǒng)運行時具體由這兩個類當(dāng)中的哪一個實現(xiàn)IDBOperator接口需要用戶在系統(tǒng)運行初期通過系統(tǒng)配置頁面進(jìn)行數(shù)據(jù)庫連接方式的配置。當(dāng)系統(tǒng)運行時,通過系統(tǒng)配置文件及可以動態(tài)的決定由哪個東軟通用數(shù)據(jù)處理系統(tǒng)的設(shè)計與實現(xiàn)類實現(xiàn)IDBOperator接口。接口ISecufity:接口ISecurity與其默認(rèn)實現(xiàn)類Securitylmpl就包含了一定的業(yè)務(wù)邏輯,主要實現(xiàn)系統(tǒng)權(quán)限控制的功能。在Securitylmpl類中通過IDBOperator類型的私有屬性完成底層數(shù)據(jù)庫存取操作。操作目標(biāo)僅為系統(tǒng)支撐數(shù)據(jù)庫。類SupportDB:該類是存取訪問模塊核心類之一。系統(tǒng)通過該類完成系統(tǒng)支撐信息的存取。類SupportDB同樣通過IDBOperator類型的私有屬性完成底層數(shù)據(jù)庫存取操作。操作目標(biāo)為系統(tǒng)支撐數(shù)據(jù)庫。類CustomerDB:該類也是存取訪問模塊核心類之一。系統(tǒng)通過該類從客戶數(shù)據(jù)庫獲取客戶業(yè)務(wù)數(shù)據(jù)。類CustomerDB同樣通過IDBOperator類型的私有屬性完成底層數(shù)據(jù)庫存取操作。操作目標(biāo)僅為客戶數(shù)據(jù)庫。主要方法有查詢客戶數(shù)據(jù)庫獲得客戶業(yè)務(wù)數(shù)據(jù)的selectCustomerDB0和獲取客戶數(shù)據(jù)庫數(shù)據(jù)字典信息的getDataDictionary0。接口ISQLFormatter:該類實際上屬于一個輔助工具類,并不直接操作數(shù)據(jù)庫。由于客戶數(shù)據(jù)庫系統(tǒng)的多樣性(DB2,Oracle,SQLServer等),對于每一種數(shù)據(jù)庫系統(tǒng),雖然都遵循標(biāo)準(zhǔn)的SQL語句,但是每一種數(shù)據(jù)庫系統(tǒng)的操作語句都會有一些各自的特點。因此抽象出ISQLFormatter接口,并提供了三個實現(xiàn)類:DB2Fonnatter,OracleFormatter,SQLServerFormatter。分別對應(yīng)DB2,Oracle,SQLServer三種常用的數(shù)據(jù)庫系統(tǒng)。如果客戶數(shù)據(jù)庫系統(tǒng)在這三種常用數(shù)據(jù)庫系統(tǒng)之外,那么僅僅需要添加一個接口ISQLFormatter的實現(xiàn),根據(jù)實際的客戶數(shù)據(jù)庫系統(tǒng)形成相應(yīng)的數(shù)據(jù)庫操作語句即可。與IDBoverator接口的實現(xiàn)相同,用戶也需要將客戶數(shù)據(jù)庫系統(tǒng)的類型通過系統(tǒng)配置模塊寫入系統(tǒng)配置文件。當(dāng)用戶數(shù)據(jù)模板定義完成后,向系統(tǒng)提交模板保存請求,此時系統(tǒng)調(diào)用數(shù)據(jù)存取模塊完成用戶保存請求。首先,系統(tǒng)實例化SupportDB類,然后執(zhí)行該類保存數(shù)據(jù)模板的具體方法。在執(zhí)行數(shù)據(jù)模板保存時,SupportDB實際將保存請求傳遞給IDBOperator接口,由IDBOperator執(zhí)行具體操作,此時需要讀取系統(tǒng)配置文件,通過配置文件決定IDBOperalor的具體實例化類。這一過程由一個對象創(chuàng)建工廠類完成[25-26],對于SupportDB類來說是透明的。同時在數(shù)據(jù)模板保存時,需要進(jìn)行資源權(quán)限的控制,權(quán)限的控制操作由ISecurity接口完成,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論