版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
電子郵件采集與全文檢索的設(shè)計(jì)與實(shí)現(xiàn)摘要隨著互聯(lián)網(wǎng)的飛速發(fā)展和企業(yè)信息化的趨勢(shì),電子郵件在全世界范圍內(nèi)得到了廣泛的運(yùn)用,企業(yè)郵箱和個(gè)人郵箱中存儲(chǔ)著大量的信息和數(shù)據(jù),將其存儲(chǔ)在服務(wù)器上不僅查找速度慢,更可能導(dǎo)致數(shù)據(jù)丟失。如何存儲(chǔ)這些海量的異構(gòu)數(shù)據(jù)以及從大量的電子郵件中快速搜索到所需的歷史郵件和附件,并安全有效的管理和利用這些信息是現(xiàn)階段電子郵件管理中亟待解決的問(wèn)題。本研究在非關(guān)系型數(shù)據(jù)庫(kù)TRIP的基礎(chǔ)上搭建了一個(gè)集郵件采集和數(shù)據(jù)檢索的信息管理系統(tǒng),對(duì)人們的服務(wù)器郵件和本地郵件進(jìn)行集中式的管理。本系統(tǒng)利用TRIPAGENT進(jìn)行服務(wù)器端郵件采集,通過(guò)編程對(duì)由OUTLOOK導(dǎo)出的PST文件進(jìn)行解析,利用TRIP對(duì)這些數(shù)據(jù)進(jìn)行存儲(chǔ)和檢索,利用TRIP用戶權(quán)限體系與系統(tǒng)用戶權(quán)限體系相融合的方式進(jìn)行權(quán)限管理,實(shí)現(xiàn)電子郵件的“采得到,存得下,管得了,用得著”,幫助人們對(duì)電子郵件進(jìn)行管理。關(guān)鍵詞:電子郵件;郵件采集;TRIP;信息系統(tǒng)
AbstractWiththeboomingdevelopmentofInternetandtheenterpriseinformationalization,E-mailhasbeenwidelyusedallovertheworld.Emailsinenterprisemailboxandpersonalmailboxcontainshugeamountofdataandinformation.Itwilltakeuseralotoftimetoretrievalifwestoretheseemailsjustinamailserver.Evenworse,datamaybelost.Howtostorethesemassiveheterogeneousdata,quicklyapproachtohistoricalemailsandattachmentsthatarewantedfromamassofemails,andtotakewelluseofthesedataistheburningproblematthisstage.ThisresearchbuildainformationsystemforemailacquisitionanddataretrievalonthebasisofNosqldatabase—TRIP,withwhichwemanageservermailandlocalmailcentralized.ThesystemcollectservermailviaTRIPAGENT,analysisthePSTfileexportedbyOUTLOOKthroughtheprogramming,storeandretrievethesedataviaTRIP,andintegratetheuserrightssystemofTRIPintotheinformationsystem.Throughtheseefforts,tomakeemailscanbecollected,stored,managedandused,tohelppeoplemanagetheiremails.Keywords:emails;emailacquisition;TRIP;informationsystem
目錄摘要 1Abstract 2第1章 緒論 41.1研究的背景 41.2研究的意義 41.3系統(tǒng)主要功能與建設(shè)目標(biāo) 51.4TRIP數(shù)據(jù)庫(kù)簡(jiǎn)介 6發(fā)展史 6結(jié)構(gòu) 6特點(diǎn) 7優(yōu)勢(shì) 81.5系統(tǒng)開(kāi)發(fā)方法介紹 9第2章需求分析 112.1系統(tǒng)功能需求分析 11系統(tǒng)主要功能 11系統(tǒng)用例 12用例建模描述 162.2系統(tǒng)非功能性需求分析 19第3章電子郵件采集與全文檢索系統(tǒng)分析 223.1交互分析 223.2對(duì)象分析 233.3活動(dòng)分析 25第4章電子郵件采集與全文檢索系統(tǒng)設(shè)計(jì) 274.1應(yīng)用架構(gòu)設(shè)計(jì) 274.2類對(duì)象設(shè)計(jì) 284.3交互設(shè)計(jì) 284.4數(shù)據(jù)庫(kù)設(shè)計(jì) 324.5界面設(shè)計(jì) 34第5章電子郵件采集與全文檢索系統(tǒng)實(shí)現(xiàn) 395.1開(kāi)發(fā)工具介紹 39郵件采集引擎——TRIPAGENT 39文件解析——JAVA-LIBPST和POI 39異步數(shù)據(jù)傳輸——AJAX 405.2功能代碼實(shí)現(xiàn) 40本地郵件解析 40配置文件解析 44第6章總結(jié) 545.1畢業(yè)設(shè)計(jì)中的不足與缺陷 545.2畢業(yè)設(shè)計(jì)中的體會(huì) 54致謝 56參考文獻(xiàn) 57緒論1.1研究的背景在如今這個(gè)互聯(lián)網(wǎng)飛速發(fā)展的時(shí)代,隨著計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)通訊技術(shù)和移動(dòng)終端技術(shù)的飛速發(fā)展,電子郵件在全世界范圍內(nèi)得到了廣泛的運(yùn)用。據(jù)統(tǒng)計(jì),電子郵件應(yīng)用占互聯(lián)網(wǎng)服務(wù)中的百分之三十以上,與搜索引擎和即使通訊一同位列互聯(lián)網(wǎng)應(yīng)用服務(wù)的前三甲,而且這個(gè)比重現(xiàn)在越來(lái)越向電子郵件偏移。由于我國(guó)網(wǎng)絡(luò)起步較晚,網(wǎng)絡(luò)基礎(chǔ)設(shè)施較差,網(wǎng)絡(luò)速度較慢,因此相比于其他的網(wǎng)絡(luò)應(yīng)用服務(wù),電子郵件具有更大的實(shí)用性。無(wú)論是企業(yè)還是政府,家庭或個(gè)人,局域網(wǎng)還是廣域網(wǎng),電子郵件已然成為最為高效便捷的信息傳遞和信息存儲(chǔ)方式。截止到2011年,中國(guó)的電子郵件用戶總量已經(jīng)達(dá)到近3億,80%的網(wǎng)民上網(wǎng)的第一件事就是查收郵件。隨著中小企業(yè)的快速發(fā)展和企業(yè)信息化的趨勢(shì),企業(yè)郵箱出現(xiàn)了較快的增長(zhǎng),截止到2012年企業(yè)郵箱市場(chǎng)規(guī)模已突破6億元。電子郵箱產(chǎn)業(yè)的蓬勃發(fā)展也伴隨著電子郵件數(shù)量的爆炸式增長(zhǎng)。不論是個(gè)人郵箱還是企業(yè)郵箱,電子郵件作為人們?nèi)粘鬟f和存儲(chǔ)信息的載體,其中蘊(yùn)含了大量的數(shù)據(jù)信息,而這些數(shù)據(jù)大部分都是非結(jié)構(gòu)化或是半結(jié)構(gòu)化的,如何存儲(chǔ)這些海量的異構(gòu)數(shù)據(jù)以及從大量的電子郵件中快速搜索到所需的歷史郵件和附件,并安全有效的管理和利用這些數(shù)據(jù)是現(xiàn)階段電子郵件管理中最急切的問(wèn)題。1.2研究的意義電子郵件的采集和全文檢索系統(tǒng)旨在實(shí)現(xiàn)目標(biāo)可以簡(jiǎn)化為以下三個(gè):實(shí)現(xiàn)電子郵件數(shù)據(jù)的“存的下、管的了,用得著”。據(jù)統(tǒng)計(jì),截止到2011年上半年,中國(guó)電子郵件的丟失率高達(dá)39%(《艾瑞報(bào)告——2011-2012年中國(guó)電子郵箱行業(yè)年度監(jiān)測(cè)報(bào)告》),遠(yuǎn)高于全球市場(chǎng)12%以及亞太地區(qū)16%的水平。除了用戶操作失誤以及運(yùn)營(yíng)服務(wù)器故障的原因外,用戶對(duì)個(gè)人的郵件管理不當(dāng)也是最重要的原因之一。其中,不能及時(shí)的對(duì)重要的電子郵件進(jìn)行歸檔存儲(chǔ),采集存儲(chǔ)的數(shù)據(jù)中垃圾郵件過(guò)多,以及存儲(chǔ)后不能有效的管理是郵件管理中最為常見(jiàn)的兩個(gè)問(wèn)題?,F(xiàn)階段市場(chǎng)上針對(duì)采集電子郵件的應(yīng)用系統(tǒng)并不少見(jiàn),但這些系統(tǒng)大部分在存儲(chǔ)郵件上存在較大的弊端。大部分的系統(tǒng)定位為類似于OUTLOOK的電子郵件客戶端,這類應(yīng)用并不能很好的存儲(chǔ)大量的電子郵件數(shù)據(jù)。針對(duì)這個(gè)問(wèn)題,本研究采用基于TRIP數(shù)據(jù)庫(kù)的電子郵件存儲(chǔ)方式,數(shù)據(jù)庫(kù)采用三維的字段包含子字段的方式。郵件采集上應(yīng)用TRIP數(shù)據(jù)庫(kù)自帶的TRIPAGENT數(shù)據(jù)采集功能中的郵件采集模塊,并自行設(shè)計(jì)了本地郵件采集模塊,同時(shí)采集用戶由OUTLOOK導(dǎo)出的PST電子郵件數(shù)據(jù)文件。兩種采集方式不僅能夠獲取郵件的各種頭信息(收信人、發(fā)信人、主題等),還能夠?qū)︵]件的正文和附件內(nèi)容進(jìn)行采集存儲(chǔ)。企業(yè)環(huán)境下,大量重要的信息都存在于郵件的附件中,通過(guò)本系統(tǒng)的郵件采集功能,能夠一目了然的獲取郵件中的所有信息,實(shí)現(xiàn)“存的下”。另外,在采集階段,用戶可以按照個(gè)人需求配置采集條件和采集策略,實(shí)現(xiàn)數(shù)據(jù)的及時(shí)和精確采集,排除垃圾郵件的干擾,保證數(shù)據(jù)在后期“用得著”。由于電子郵件數(shù)據(jù)并非結(jié)構(gòu)化的數(shù)據(jù),采用傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)管理方案并不能有效的管理這些數(shù)據(jù),本系統(tǒng)采用基于TRIP非結(jié)構(gòu)化數(shù)據(jù)庫(kù)的數(shù)據(jù)管理方案,能夠?qū)︵]件的正文和附件內(nèi)容進(jìn)行抽詞倒排存儲(chǔ),抽詞倒排的好處在于對(duì)海量數(shù)據(jù)檢索時(shí)沒(méi)有必要去遍歷數(shù)據(jù)庫(kù)中的每一條記錄。眾所周知,企業(yè)內(nèi)部每天產(chǎn)生的郵件數(shù)量是非常大的,以此日積月累產(chǎn)生的郵件數(shù)量總和是非??植赖?,如果對(duì)每一條記錄都進(jìn)行遍歷,檢索一次的成本相當(dāng)高。TRIP數(shù)據(jù)庫(kù)的自動(dòng)抽詞功能完美的解決了這一問(wèn)題。同時(shí),這種自動(dòng)抽詞功能是自學(xué)習(xí)的,它的抽詞方式隨著數(shù)據(jù)量的增加不斷的調(diào)整和擴(kuò)充,保證數(shù)據(jù)檢索上的精確性。完美的解決了電子郵件管理中的“管的了”問(wèn)題1.3系統(tǒng)主要功能與建設(shè)目標(biāo)郵件采集與全文檢索系統(tǒng)旨在將郵件服務(wù)器或個(gè)人客戶端上的郵件,同步采集到由TRIP全文本數(shù)據(jù)庫(kù)構(gòu)成的全媒體大數(shù)據(jù)處理平臺(tái)上。在全媒體大數(shù)據(jù)處理平臺(tái)上,一方面實(shí)現(xiàn)整個(gè)郵件系統(tǒng)的實(shí)時(shí)備份、存儲(chǔ),利用TRIP數(shù)據(jù)庫(kù)的特點(diǎn),實(shí)現(xiàn)對(duì)郵件的全文檢索;另一方面,匯集個(gè)人郵件以及其它渠道來(lái)源的非結(jié)構(gòu)化數(shù)據(jù),實(shí)現(xiàn)企業(yè)及個(gè)人整體非結(jié)構(gòu)化數(shù)據(jù)的管理、分析、挖掘、利用。系統(tǒng)的主要功能與目標(biāo)有:服務(wù)器郵件采集。通過(guò)友好簡(jiǎn)潔的交互界面,使用戶能夠較為快捷的配置服務(wù)器郵件采集條件和采集策略,通過(guò)良好的任務(wù)調(diào)度程序在后臺(tái)完成采集過(guò)程,并實(shí)現(xiàn)周期性采集。本地郵件采集。通過(guò)友好簡(jiǎn)潔的交互界面,使用戶能夠按照自己的意愿采集PST數(shù)據(jù)文件中特定文件夾下的所有郵件,實(shí)現(xiàn)對(duì)PST數(shù)據(jù)文件中郵件的解析,實(shí)現(xiàn)對(duì)PST數(shù)據(jù)文件中郵件附件的良好解析。郵件賬號(hào)管理配置。使用戶能夠隨時(shí)的對(duì)個(gè)人郵箱賬號(hào)進(jìn)行增刪改的操作,統(tǒng)一規(guī)則的保存?zhèn)€人郵箱賬戶信息。郵件檢索。通過(guò)友好簡(jiǎn)潔的交互界面,實(shí)現(xiàn)對(duì)采集到的郵件的多種檢索方式,實(shí)現(xiàn)對(duì)郵件附件的檢索,提高檢索速度。1.4TRIP數(shù)據(jù)庫(kù)簡(jiǎn)介發(fā)展史TRIP全文數(shù)據(jù)庫(kù)系統(tǒng)是一種面向?qū)ο蟮娜臄?shù)據(jù)庫(kù)系統(tǒng),或者說(shuō),TRIP是一種具有快速查找功能的信息檔案管理系統(tǒng),擅長(zhǎng)于處理那些結(jié)構(gòu)不定,類型差異的數(shù)據(jù)。是NoSql文檔數(shù)據(jù)庫(kù)和全文搜索引擎的一個(gè)混合系統(tǒng)。它是在八十年代中期在瑞典皇家工學(xué)院圖書(shū)館1973年研制的全文檢索系統(tǒng)3RIP基礎(chǔ)上,用C語(yǔ)言重新編寫(xiě)的,迄今將有近40年的發(fā)展歷史。它既是集成有搜索引擎的數(shù)據(jù)庫(kù)系統(tǒng),又是具有數(shù)據(jù)庫(kù)功能的搜索引擎,適用于處理海量非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)。于1986年由中國(guó)科技情報(bào)研究所引進(jìn)我國(guó)并對(duì)其進(jìn)行改進(jìn),實(shí)現(xiàn)了世界上首例大型中文文獻(xiàn)全文檢索服務(wù)。結(jié)構(gòu)TRIP的數(shù)據(jù)庫(kù)由三個(gè)獨(dú)立的文件組成:一是存放原始數(shù)據(jù)的主文件,二是存放主文件中那些要被快速檢索的數(shù)據(jù)的倒排文件,三是存放各種截?cái)嘈畔⒌牡古盼募?。這三個(gè)文件合在一起構(gòu)成TRIP的一個(gè)數(shù)據(jù)庫(kù),它們不依賴于計(jì)算機(jī)的操作系統(tǒng),可以在不同的操作系統(tǒng)下運(yùn)行,TRIP系統(tǒng)本身支持純中文、中英文混合的數(shù)據(jù)庫(kù)。TRIP數(shù)據(jù)庫(kù)是由記錄組成的,記錄又由字段組成。一個(gè)記錄中的字段數(shù)量不限。TRIP的記錄字段,按數(shù)據(jù)類型分有7種。它們是文本、詞組、整數(shù)、實(shí)數(shù)、日期、時(shí)間和字符串。圖象、圖表及其它二進(jìn)制數(shù)據(jù)放到字符串字段。文本類型字段可進(jìn)一步分成帶序號(hào)的段、句和詞,檢索時(shí)可在指定的段、句、詞中查找。詞組、整數(shù)、實(shí)數(shù)、日期、時(shí)間等數(shù)據(jù)類型可再分成帶序號(hào)的子字段,即所謂允許重復(fù)。比如,作者名選用詞組類型時(shí),這一個(gè)作者字段允許放任意多個(gè)名字,每個(gè)名字占用一個(gè)子字段。在TRIP中,一個(gè)庫(kù)中的記錄數(shù)是沒(méi)上限的;每個(gè)記錄的長(zhǎng)度是不限的;每記錄的段數(shù)、字段數(shù)、段落、句子數(shù)和詞的個(gè)數(shù)也沒(méi)有上限;文本字段的段落、句子、詞的長(zhǎng)度也不受限;除字符串字段外,其余字段的內(nèi)容均可做倒排,即可被快速查找。加上字符串字段能存放二進(jìn)制數(shù)據(jù),TRIP是一個(gè)真正的多媒體全文數(shù)據(jù)庫(kù)系統(tǒng)。這就是TRIP的成功所在!特點(diǎn)面向大對(duì)象的存儲(chǔ)機(jī)制:無(wú)論對(duì)象大小,一律存在數(shù)據(jù)庫(kù)之中(不外掛);一個(gè)庫(kù)無(wú)論大小,就由三個(gè)獨(dú)立的文件組成BAF、BIF、VIF三個(gè)文件可放在不同操作系統(tǒng)下使用。最快速的查找算法——Hash函數(shù)建庫(kù)時(shí)對(duì)每個(gè)詞建立一個(gè)hash碼,將該詞出現(xiàn)的記錄號(hào)、字段號(hào)、詞序集中一起形成倒排索引。找一個(gè)詞一次到位。良好的開(kāi)放性提供功能強(qiáng)大的Toolkit和TRIPJDK開(kāi)發(fā)工具,易于和各種應(yīng)用合成。高效的建庫(kù)方法菜單方式和命令方式定義庫(kù)結(jié)構(gòu),可以追加新的字段聯(lián)機(jī)錄入,批式裝入。易用的查找手段CCL。四個(gè)基本命令打開(kāi)庫(kù)(BAS),查找(F),顯示(S),關(guān)閉庫(kù)(STOP),支持布爾檢索、位置檢索、加權(quán)檢索、模糊檢索、二次檢索、詞表檢索、間接檢索、瀏覽字段等幾十種操作運(yùn)算運(yùn)算符。1.4.4優(yōu)勢(shì)TRIP在世界全文檢索系統(tǒng)領(lǐng)域里占有15%的市場(chǎng)份額,是繼關(guān)系型數(shù)據(jù)庫(kù)之后很久才問(wèn)世的倒排文件型的全文數(shù)據(jù)庫(kù)檢索系統(tǒng)。它擅長(zhǎng)處理那些結(jié)構(gòu)和類型差異的數(shù)據(jù)。它是一個(gè)基于全文自動(dòng)標(biāo)引的檢索系統(tǒng),除系統(tǒng)規(guī)定的少數(shù)禁用詞外,在文獻(xiàn)中出現(xiàn)的每一個(gè)字、詞或短語(yǔ)都可以作為檢索入口。全文檢索減去了人工標(biāo)引工作,而且避開(kāi)了漢字詞義分析、自動(dòng)切分這些技術(shù)難點(diǎn),不僅加快了信息入庫(kù)的速度,更重要的是其檢索用詞靈活,方便了非專業(yè)人員的使用。和同類產(chǎn)品相比,TRIP具有以下優(yōu)勢(shì):實(shí)現(xiàn)中文全文檢索功能目前,具有代表性的中文全文檢索技術(shù)主要有按字檢索與按詞檢索。所謂按字檢索,是將每個(gè)漢字當(dāng)作一個(gè)詞來(lái)處理,即在掃描時(shí),凡是碰到第8位為"1"的機(jī)器碼,便連同其后的第二個(gè)字節(jié)(無(wú)論第8位是"0"還是"1")一起當(dāng)作一個(gè)雙字節(jié)的詞給予編址定位。面向?qū)ο蟮娜臄?shù)據(jù)庫(kù)系統(tǒng)TRIP就采用了這種技術(shù)來(lái)處理中文漢字。按字處理技術(shù)的主要優(yōu)點(diǎn)在于避開(kāi)了漢字詞義分析、切分這一困難,僅僅是在第8位為1"時(shí)按雙字節(jié)詞處理,因此這種處理技術(shù)不僅對(duì)漢字,只要是采用雙字節(jié)編碼的各種東方文字,均可進(jìn)行全文檢索。按字處理技術(shù)的主要缺陷是檢索時(shí)間的開(kāi)銷(xiāo)相對(duì)稍大。但是這個(gè)開(kāi)銷(xiāo)相對(duì)于優(yōu)點(diǎn)來(lái)講是值得的和可以接受的,因?yàn)榇朔N方式的查全率很高。按詞檢索則是以漢字的詞而不是字為基本單位建庫(kù)和檢索。采用按詞檢索技術(shù)的中文全文檢索系統(tǒng),一般都嵌有自動(dòng)分詞子系統(tǒng),并附以多種建庫(kù)詞典,從內(nèi)核實(shí)現(xiàn)按詞建庫(kù)和按詞檢索。按詞檢索技術(shù)的查準(zhǔn)率略高一些。性能優(yōu)越以按詞檢索技術(shù)實(shí)現(xiàn)的全文檢索系統(tǒng),對(duì)于查詢速度來(lái)講和TRIP之間略有差距。如同所有的檢索軟件一樣,信息的查全率與查準(zhǔn)率永遠(yuǎn)是一對(duì)矛盾的統(tǒng)一體,按詞檢索技術(shù)在提高檢索準(zhǔn)確性的同時(shí),也犧牲部分查全率和查詢性能。以按字檢索技術(shù)實(shí)現(xiàn)的中文全文檢索系統(tǒng),在系統(tǒng)檢索的全面性方面則具有一定優(yōu)勢(shì)。并且TRIP最成功之處在于其裝備了一個(gè)采用倒排文件索引技術(shù)的引擎,它把每個(gè)檢索詞通過(guò)散列函數(shù)生成一個(gè)唯一碼存在數(shù)據(jù)庫(kù)中,找這些詞就像“探囊取物”,一次到位。試驗(yàn)表明,在同一機(jī)器上處理同樣的數(shù)據(jù)對(duì)象,TRIP的檢索反應(yīng)速度要比一般關(guān)系型數(shù)據(jù)庫(kù)快一個(gè)數(shù)量級(jí)。其檢索一個(gè)詞的速度與數(shù)據(jù)庫(kù)的大小幾乎無(wú)關(guān),百萬(wàn)記錄數(shù)量級(jí)情況下,按當(dāng)今計(jì)算機(jī)運(yùn)作的速度只需幾分、幾十分之一秒時(shí)間。1.5系統(tǒng)開(kāi)發(fā)方法介紹本系統(tǒng)的開(kāi)發(fā)采用了面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法相結(jié)合的開(kāi)發(fā)方法,以面向?qū)ο蠓椒橹黧w,中間穿插結(jié)構(gòu)化開(kāi)發(fā)方法。結(jié)構(gòu)化設(shè)計(jì)方法所謂結(jié)構(gòu)化程序設(shè)計(jì)方法主張把軟件系統(tǒng)按功能進(jìn)行逐步的階段,因此也被稱為面向過(guò)程的程序設(shè)計(jì)方法。這種設(shè)計(jì)方法按照用戶至上的原則結(jié)構(gòu)化、模塊化,自頂向下對(duì)系統(tǒng)進(jìn)行分析和設(shè)計(jì)。面向?qū)ο笤O(shè)計(jì)方法在面向?qū)ο蠓椒ㄖ?,?duì)象是最基本的概念。對(duì)象就是系統(tǒng)中出現(xiàn)的任何人、地點(diǎn)和事務(wù)的抽象,具有行為、狀態(tài)和標(biāo)識(shí)三個(gè)特性。行為是指對(duì)象如何響應(yīng)它所接收的消息(消息是對(duì)象之間進(jìn)行通信的方式),狀態(tài)則是由對(duì)象的屬性值來(lái)確定,而標(biāo)識(shí)是系統(tǒng)中對(duì)象的唯一標(biāo)號(hào)。把一組對(duì)象的共同行為和屬性加以抽象就形成了類,對(duì)象是類的具體化,是類的實(shí)例。面向?qū)ο蟮姆椒ㄖ饕腥齻€(gè)特性:封裝性、繼承性和多態(tài)性。在開(kāi)發(fā)的大體流程上,按照系統(tǒng)開(kāi)發(fā)的方法分成四步:系統(tǒng)分析按照面向?qū)ο蟮拈_(kāi)發(fā)方法對(duì)系統(tǒng)進(jìn)行功能需求分析,繪制用例圖和順序圖,同時(shí)分析非功能性需求。按照結(jié)構(gòu)化開(kāi)發(fā)方法對(duì)系統(tǒng)的采集模塊進(jìn)行算法分析。②系統(tǒng)設(shè)計(jì)按照面向?qū)ο蟮拈_(kāi)發(fā)方法設(shè)計(jì)系統(tǒng)的類和數(shù)據(jù)庫(kù),設(shè)計(jì)類圖和順序圖。按照結(jié)構(gòu)化開(kāi)發(fā)方法對(duì)系統(tǒng)的主要算法進(jìn)行設(shè)計(jì),設(shè)計(jì)物理DFD圖③系統(tǒng)實(shí)施按照面向?qū)ο蟮拈_(kāi)發(fā)方法,編寫(xiě)程序代碼。由于本系統(tǒng)不是一個(gè)嚴(yán)格意義上的事務(wù)型管理信息系統(tǒng),并沒(méi)有太多的用戶操作,其主要部分和主要難點(diǎn)在于兩種郵件采集存儲(chǔ)流程上,而面向?qū)ο蟮姆椒ㄔ诹鞒淘O(shè)計(jì)上并不擅長(zhǎng),因此在主要的流程算法設(shè)計(jì)上本系統(tǒng)開(kāi)發(fā)采用了結(jié)構(gòu)化的面向過(guò)程的而開(kāi)發(fā)方法。而本系統(tǒng)的底層采用面向?qū)ο蟮腏AVA語(yǔ)言實(shí)現(xiàn),在總體的分析設(shè)計(jì)上采用面向?qū)ο箝_(kāi)發(fā)更為合適,具有更好地可重用性和可維護(hù)性。
第2章需求分析2.1系統(tǒng)功能需求分析總體來(lái)說(shuō),本系統(tǒng)包含用戶管理、服務(wù)器郵件采集、本地郵件采集、郵箱賬戶管理和郵件檢索四個(gè)子功能模塊。按照管理信息系統(tǒng)的分類,本系統(tǒng)屬于專業(yè)型管理信息系統(tǒng),系統(tǒng)中并沒(méi)有涉及用戶權(quán)限層次問(wèn)題,因此本系統(tǒng)中所有用戶都為普通用戶,不存在管理員或是其他管理者的角色。2.1.1系統(tǒng)主要功能系統(tǒng)需要實(shí)現(xiàn)的目標(biāo)是:根據(jù)用戶配置的采集條件采集相應(yīng)的服務(wù)器郵件,定時(shí)定條件采集;根據(jù)用戶選擇的文件解析PST文件采集本地郵件;對(duì)采集到的郵件數(shù)據(jù)有管理功能(主要是刪除)。為完成以上目標(biāo),本系統(tǒng)需要具備以下功能:(1)服務(wù)器郵件采集。郵件采集是本系統(tǒng)最主要的功能之一,而服務(wù)器郵件采集又是郵件采集中的主要部分,需要采集服務(wù)器端郵件的頭信息、郵件內(nèi)容和附件內(nèi)容。本功能主要依賴于數(shù)據(jù)庫(kù)的TRIPAGENT來(lái)實(shí)現(xiàn)。(2)本地郵件采集。對(duì)于更久遠(yuǎn)的一些郵件數(shù)據(jù),可能服務(wù)器端已經(jīng)刪除而用戶在本地通過(guò)OUTLOOK保存了,因此需要對(duì)這些數(shù)據(jù)進(jìn)行采集保存,使系統(tǒng)的作用范圍更廣一些。本地郵件采集應(yīng)保持與服務(wù)器郵件采集一致,在數(shù)據(jù)抽取和保存上與服務(wù)器采集相同。郵件檢索。在郵件采集完畢之后,要允許用戶對(duì)采集到的數(shù)據(jù)進(jìn)行查看和刪除(但不能修改和添加,以保證郵件的原始數(shù)據(jù)完整性)。由于郵件數(shù)據(jù)是非結(jié)構(gòu)化數(shù)據(jù),在數(shù)據(jù)庫(kù)中保存時(shí)是三維存儲(chǔ)結(jié)構(gòu),所以需要系統(tǒng)對(duì)數(shù)據(jù)庫(kù)中的記錄進(jìn)行處理后再顯示。郵件檢索除了通用的簡(jiǎn)單檢索和復(fù)雜檢索兩種檢索功能外,還具備特殊的附件檢索功能,以凸顯本系統(tǒng)能夠?qū)Ω郊?nèi)容進(jìn)行抽取的功能。賬戶管理。郵件采集的前提是配置好郵箱賬戶信息和采集策略,為了便于后期的重復(fù)采集,需要對(duì)賬戶信息和采集策略進(jìn)行存儲(chǔ)。設(shè)計(jì)中決定對(duì)賬戶信息和采集策略分開(kāi)存儲(chǔ),賬戶信息保存在數(shù)據(jù)庫(kù)中以便于維護(hù),采集策略則保存在配置文件中便于快速實(shí)時(shí)的采集。賬戶信息的管理除了增刪改查之外,還需要在添加郵箱的時(shí)候驗(yàn)證郵箱是否能夠連接,以保證數(shù)據(jù)采集正常。用戶管理。本系統(tǒng)并不包含多種用戶身份,只有一種用戶,但仍需設(shè)置用戶管理模塊。原因在于為了保證數(shù)據(jù)的安全性,TRIP數(shù)據(jù)庫(kù)有多種用戶身份,分為超級(jí)管理員(SYSTEM)、用戶管理員(UserManager)、文件管理員(FileManager)和普通用戶,不同的用戶身份對(duì)不同的數(shù)據(jù)庫(kù)具有差異的操作權(quán)限。本系統(tǒng)為了保障郵件數(shù)據(jù)和郵箱賬戶信息的安全性,決定將系統(tǒng)用戶權(quán)限系統(tǒng)和數(shù)據(jù)庫(kù)用戶權(quán)限系統(tǒng)相融合,系統(tǒng)用戶即為數(shù)據(jù)庫(kù)的FM用戶,在登陸和注銷(xiāo)階段通過(guò)數(shù)據(jù)庫(kù)的權(quán)限機(jī)制來(lái)控制判斷。2.1.2系統(tǒng)用例用例圖是通過(guò)圖形的方式將系統(tǒng)功能以用例、參與者及其之間的關(guān)系的形式描述出來(lái),能夠較為清晰的獲取需求并對(duì)整個(gè)過(guò)程的其他分析設(shè)計(jì)起到指導(dǎo)作用。用例圖描述了人們希望如何使用一個(gè)系統(tǒng),告訴我們誰(shuí)將是相關(guān)的用戶以及用戶與系統(tǒng)之間如何進(jìn)行交互。根據(jù)之前提到的系統(tǒng)主要功能,將系統(tǒng)分為五個(gè)模塊,一次是:服務(wù)器郵件采集,本地郵件采集,郵件檢索,賬戶管理和用戶管理。每個(gè)模塊由若干個(gè)用例組成,系統(tǒng)中的用戶只有一種用戶身份,即用例基本上只有一種參與者。由于服務(wù)器郵件采集中涉及到定期定時(shí)采集的問(wèn)題,所以該用例的參與者需要包含系統(tǒng)時(shí)鐘這個(gè)虛擬參與者。除了尋找用例,還要確定用例之間的關(guān)系,如拓展關(guān)系、依賴關(guān)系、使用關(guān)系等。當(dāng)一個(gè)用例依賴于另一個(gè)用例的存在時(shí),兩個(gè)用例之間就存在“依賴”關(guān)系(<dependson>),了解用戶之間的依賴關(guān)系很重要,這樣可以決定用例開(kāi)發(fā)的順序。例如郵箱檢測(cè)用例依賴于添加郵箱賬戶用例而存在,在添加郵箱賬戶用例觸發(fā)時(shí)才會(huì)觸發(fā)郵箱檢測(cè),那么就首先開(kāi)發(fā)“添加郵箱賬戶”用例,然后再添加“郵箱檢測(cè)”用例。有些用例有時(shí)候會(huì)直行同樣的功能步驟,這時(shí)候最好把這些公共步驟提取成獨(dú)立的用例,即抽象用例,降低用例之間的冗余。例如在郵件采集中,有時(shí)候會(huì)僅僅是修改采集策略,有時(shí)候又是在修改采集策略的基礎(chǔ)上采集郵件,這時(shí)候采集配置修改用例和它的使用用例郵件采集用例之間就屬于使用關(guān)系(<users>)。圖3.1是修改后的分析用例圖。一旦修訂了所有的業(yè)務(wù)需求用例,將細(xì)化每個(gè)用例包含更多的信息以便詳細(xì)的說(shuō)明系統(tǒng)功能,得到系統(tǒng)分析用例。在此階段所有開(kāi)放的問(wèn)題和要確定的問(wèn)題都要被解決,因此這些會(huì)影響設(shè)計(jì)的特性。表2是修改后的本地郵件采集系統(tǒng)分析用例本系統(tǒng)用例圖和用例清單如圖2-1和表2-1:圖2-1系統(tǒng)用例圖表2-1用例清單用例名稱用例描述預(yù)期參與者用戶登錄該用例描述一個(gè)系統(tǒng)用戶(同時(shí)也是數(shù)據(jù)庫(kù)FM用戶)輸入其用戶名密碼登錄系統(tǒng)并登陸數(shù)據(jù)庫(kù)的過(guò)程用戶用戶退出該用例描述一個(gè)已登錄的系統(tǒng)用戶(同時(shí)也是數(shù)據(jù)庫(kù)FM用戶)注銷(xiāo)其登錄狀態(tài)退出系統(tǒng)并退出數(shù)據(jù)庫(kù)的過(guò)程用戶添加郵箱賬戶該用例描述一個(gè)用戶添加其個(gè)人郵箱賬戶并配置郵箱密碼、郵箱協(xié)議等參數(shù)的過(guò)程用戶郵箱檢測(cè)該用例描述了一個(gè)用戶添加郵箱賬戶后系統(tǒng)對(duì)該賬戶的配置條件進(jìn)行連通性檢測(cè)系統(tǒng)刪除郵箱賬戶該用例描述了一個(gè)用戶刪除其已經(jīng)配置過(guò)的郵箱賬戶的過(guò)程用戶修改郵箱賬戶該用例描述了一個(gè)用戶對(duì)配置過(guò)的一個(gè)郵箱賬戶的賬戶名、密碼、郵箱協(xié)議進(jìn)行修改的過(guò)程用戶查詢郵箱賬戶該用例描述了一個(gè)用戶對(duì)已配置的所有郵箱賬戶進(jìn)行查詢的過(guò)程。用戶登陸后,系統(tǒng)在郵箱配置界面列出所有已配置的個(gè)人郵箱賬號(hào),用戶可按條件對(duì)郵箱進(jìn)行查詢操作。用戶服務(wù)器郵件采集配置修改該用例描述了一個(gè)用戶對(duì)某個(gè)郵箱賬號(hào)的服務(wù)器端郵件采集的參數(shù)修改過(guò)程。用戶登錄后可對(duì)已經(jīng)配置好的郵箱賬號(hào)進(jìn)行采集配置修改操作,參數(shù)包括:目標(biāo)數(shù)據(jù)庫(kù),主題,附件名,發(fā)信人,收信人,附件采集方式和自動(dòng)采集策略。用戶服務(wù)器郵件采集該用例描述了一個(gè)用戶配置好郵箱賬號(hào)及采集配置條件后,系統(tǒng)對(duì)服務(wù)器端郵件進(jìn)行采集的過(guò)程。用戶確認(rèn)采集條件并提交后,系統(tǒng)會(huì)按照用戶配置的自動(dòng)采集策略對(duì)該賬戶進(jìn)行動(dòng)態(tài)郵件采集。用戶時(shí)間本地郵件采集配置修改該用例描述了一個(gè)用戶對(duì)某個(gè)郵箱賬號(hào)的本地郵件采集的參數(shù)修改過(guò)程。用戶登錄后可將本地由outlook導(dǎo)出的數(shù)據(jù)文件解析,并將其中的郵件保存到數(shù)據(jù)庫(kù)中相應(yīng)的郵箱賬戶下。該過(guò)程需要配置的參數(shù)有:郵箱賬戶,目標(biāo)文件夾,目標(biāo)數(shù)據(jù)庫(kù)。用戶本地郵件采集該用例描述了一個(gè)用戶對(duì)本地由outlook導(dǎo)出的pst數(shù)據(jù)文件進(jìn)行解析并將其中的郵件(包含附件)保存到數(shù)據(jù)庫(kù)中的過(guò)程。該過(guò)程一次性完成,不存在動(dòng)態(tài)采集。用戶簡(jiǎn)單郵件檢索該用例描述了一個(gè)用戶對(duì)已經(jīng)采集到的郵件進(jìn)行單條件檢索的過(guò)程。用戶復(fù)雜郵件檢索該用例描述了一個(gè)用戶對(duì)已經(jīng)采集到的郵件進(jìn)行多條件復(fù)雜檢索的過(guò)程。用戶附件檢索該用例描述了一個(gè)用戶對(duì)已采集到的郵件的附件內(nèi)容進(jìn)行檢索的過(guò)程。用戶2.1.2用例建模描述
在用例建模的過(guò)程中,先找出參與者,再根據(jù)參與者確定每個(gè)參與者相關(guān)的用例,最后再細(xì)化每一個(gè)用例的用例規(guī)約。1.尋找參與者所謂的參與者是指所有存在于系統(tǒng)外部并與系統(tǒng)進(jìn)行交互的人或其他系統(tǒng),通俗地講,參與者就是我們所要定義系統(tǒng)的使用者。本系統(tǒng)中并沒(méi)有涉及到多種系統(tǒng)用戶角色的情況,因此系統(tǒng)的參與者只有系統(tǒng)用戶一種角色。除了系統(tǒng)邊界定義的參與者,還有第二類參與者——系統(tǒng)時(shí)鐘。有時(shí)候我們需要在系統(tǒng)內(nèi)部定時(shí)地執(zhí)行一些操作,如本系統(tǒng)中的服務(wù)器郵件定期采集功能。從表面上看,這些操作并不是由外部的人或系統(tǒng)觸發(fā)的,應(yīng)該怎樣用用例方法來(lái)表述這一HYPERLINK類功能需求呢?對(duì)于這種情況,我們可以抽象出一個(gè)系統(tǒng)時(shí)鐘或定時(shí)器參與者,利用該參與者來(lái)觸發(fā)這一類定時(shí)操作。從邏輯上,這一參與者提供用例對(duì)話。2.確定用例找到參與者之后,我們就可以根據(jù)參與者來(lái)確定系統(tǒng)的用例,主要是看各參與者需要系統(tǒng)提供什么樣的服務(wù),或者說(shuō)參與者是如何使用系統(tǒng)的。尋找用例可以從以下問(wèn)題入手(1)參與者為什么要使用該系統(tǒng)?
(2)參與者是否會(huì)在系統(tǒng)中創(chuàng)操作數(shù)據(jù)?如何來(lái)完成這些操作的?
(3)參與者如何與系統(tǒng)進(jìn)行數(shù)據(jù)交互?在構(gòu)建用例的時(shí)候,要注意用例必須是由參與者觸發(fā)的,即每個(gè)用例至少應(yīng)該涉及一個(gè)參與者。如果某個(gè)用例不存在參與者,就可以考慮將其并入其他用例;或者是檢查該用例相對(duì)應(yīng)的參與者是否被遺漏,如果是,則補(bǔ)上該參與者。反之,每個(gè)參與者也必須至少涉及到一個(gè)用例,如果發(fā)現(xiàn)某個(gè)參與者沒(méi)有參與任何用力活動(dòng),就應(yīng)該考慮該參與者是如何與系統(tǒng)發(fā)生對(duì)話的,或者由參與者確定一個(gè)新的用例,或者該參與者是一個(gè)多余的元素,應(yīng)該將其刪除。3.描述用例詳細(xì)我們需要描述每一個(gè)用例的詳細(xì)信息,用例模型是由用例圖和每一個(gè)用例的詳細(xì)描述所組成的。由于系統(tǒng)用例較多,篇幅有限,而且部分用例過(guò)于簡(jiǎn)單,不便一一贅述,這里選取具有代表性的一個(gè)用例——本地郵件采集——進(jìn)行用例詳細(xì)描述介紹。在本地郵件采集中,為了簡(jiǎn)化用戶的操作量,用戶只需選擇郵箱、數(shù)據(jù)庫(kù)和本地文件,系統(tǒng)會(huì)自動(dòng)解析文件獲取其中全部文件夾,用戶再選擇想要導(dǎo)入的文件夾,點(diǎn)擊采集,系統(tǒng)便會(huì)繼續(xù)深入解析數(shù)據(jù)文件獲取郵件數(shù)據(jù),存入TRIP庫(kù)中,隨后生成日志文件。表2-2本地郵件采集需求用例描述用例名稱:本地郵件采集用例類型:業(yè)務(wù)需求:eq\o\ac(□,√)用例ID:MCS1.4.2優(yōu)先權(quán):高來(lái)源:需求主要業(yè)務(wù)參與者:用戶其他參與者:無(wú)其他有興趣的關(guān)聯(lián)人員:無(wú)描述:該用例描述了一個(gè)用戶對(duì)本地由outlook導(dǎo)出的pst數(shù)據(jù)文件進(jìn)行解析并將其中的郵件(包含附件)保存到數(shù)據(jù)庫(kù)中的過(guò)程。該過(guò)程一次性完成,不存在動(dòng)態(tài)采集。前置條件:該用戶必須配置過(guò)郵箱賬戶觸發(fā)器:當(dāng)用戶轉(zhuǎn)到本地采集頁(yè)面點(diǎn)擊采集時(shí),用例被觸發(fā)。典型事件過(guò)程:參與者動(dòng)作系統(tǒng)響應(yīng)第一步:用戶選擇要保存到的郵箱賬戶和存儲(chǔ)數(shù)據(jù)庫(kù),以及本地郵件數(shù)據(jù)文件。第二步:系統(tǒng)根據(jù)路徑獲取文件,進(jìn)行解析,得到其中的文件夾名稱列表,顯示在前臺(tái)頁(yè)面中第三步:用戶選擇文件夾點(diǎn)擊采集第四步:系統(tǒng)將配置參數(shù)寫(xiě)入數(shù)據(jù)庫(kù)中第五步:系統(tǒng)解析PST文件,獲取其中對(duì)應(yīng)文件夾下的所有郵件頭信息和內(nèi)容第六步:解析郵件中的附件,獲取其中文本內(nèi)容。第七步:按照BASE64加密方式解密郵件頭信息,郵件正文和附件內(nèi)容第八步:按照數(shù)據(jù)庫(kù)字段存儲(chǔ)規(guī)則,截取郵件頭信息內(nèi)容,將所需字段保存入數(shù)據(jù)庫(kù)中第九步:記錄存儲(chǔ)的郵件數(shù)量,返回提示給用戶替代事件過(guò)程:替代第二步:如果目標(biāo)文件夾下沒(méi)有郵件,則提示給用戶該文件夾下沒(méi)有郵件,返回第一步。替代第五步:如果郵件中沒(méi)有附件,則略過(guò)此步驟。結(jié)論:當(dāng)系統(tǒng)成功地將PST文件中的郵件寫(xiě)入數(shù)據(jù)庫(kù)并提示給用戶時(shí),該用例結(jié)束。后置條件:無(wú)業(yè)務(wù)規(guī)則:·一次采集用戶只能選擇一個(gè)文件夾·一次采集用戶只能且必須選擇一個(gè)郵箱賬戶實(shí)現(xiàn)約束和說(shuō)明用例僅對(duì)已配置過(guò)郵箱賬戶的用戶可用。假設(shè):假設(shè)該文件中的郵件所屬的郵箱已經(jīng)配置過(guò)假設(shè)郵件的附件屬于MSOffice及PDF系列表2-3服務(wù)器郵件采集需求用例描述用例名稱:服務(wù)器郵件采集用例類型:業(yè)務(wù)需求:eq\o\ac(□,√)用例ID:MCS1.3.2優(yōu)先權(quán):高來(lái)源:需求主要業(yè)務(wù)參與者:用戶其他參與者:時(shí)間其他有興趣的關(guān)聯(lián)人員:描述:該用例描述了一個(gè)用戶配置好郵箱賬號(hào)及采集配置條件后,系統(tǒng)對(duì)服務(wù)器端郵件進(jìn)行采集的過(guò)程。用戶確認(rèn)采集條件并提交后,系統(tǒng)會(huì)按照用戶配置的自動(dòng)采集策略對(duì)該賬戶進(jìn)行動(dòng)態(tài)郵件采集。前置條件:該用戶必須配置過(guò)郵箱賬戶觸發(fā)器:當(dāng)用戶點(diǎn)擊采集按鈕時(shí),用例被觸發(fā)。典型事件過(guò)程:參與者動(dòng)作系統(tǒng)響應(yīng)第一步:用戶選擇郵箱,點(diǎn)擊采集按鈕第二步:系統(tǒng)將配置條件保存到TRIPAGENT配置文件中第三步:系統(tǒng)調(diào)用TRIPAGENT進(jìn)行郵件采集并生成日志文件。第四步:解析日志文件,返回并提示采集到的郵件數(shù)目。替代事件過(guò)程:替代第三步:如果數(shù)據(jù)保存失敗,提示保存失敗,返回第一步。結(jié)論:當(dāng)TRIPAGENT完成郵件采集且頁(yè)面跳轉(zhuǎn)后,該用例結(jié)束。后置條件:TRIPAGENT會(huì)后臺(tái)根據(jù)配置的采集策略進(jìn)行進(jìn)一步采集。業(yè)務(wù)規(guī)則:實(shí)現(xiàn)約束和說(shuō)明用例僅對(duì)已配置過(guò)郵箱賬戶的用戶可用。假設(shè):2.2系統(tǒng)非功能性需求分析一個(gè)軟件系統(tǒng)如果要完整,不僅僅要包含滿足用戶需求的功能,還要包括了異常處理等相關(guān)功能特征以及處理速度和安全性等特征。這些非功能性需求也是為了保證用戶使用上的需要。非功能性需求是指依一些條件判斷系統(tǒng)運(yùn)作情形或其特性,而不是針對(duì)系統(tǒng)特定行為的需求。包括易用性,準(zhǔn)確性,安全性,可靠性和效率特性。由于本系統(tǒng)偏向于專業(yè)型管理信息系統(tǒng),對(duì)非功能性的需求更要嚴(yán)格一些。具體來(lái)說(shuō),本系統(tǒng)的非功能性需求有以下幾點(diǎn):表2-3非功能性需求非功能性需求類型具體類型描述實(shí)現(xiàn)途徑易用性易理解與用戶為認(rèn)知邏輯概念及其應(yīng)用范圍所花的努力有關(guān)的軟件屬性。UI設(shè)計(jì)上盡量多的設(shè)計(jì)界面導(dǎo)航和tip提示易操作與用戶操作和運(yùn)行控制的難易性有關(guān)的軟件屬性。如下拉列表等。界面元素設(shè)計(jì)上盡量采用下拉列表和單/復(fù)選框的方式,減少用戶的輸入操作功能性項(xiàng)目準(zhǔn)確性與能否得到正確或者相符的結(jié)果或者效果有關(guān)的軟件屬性。在數(shù)據(jù)采集和檢索上條件設(shè)置得更加清晰具體安全性即在防止對(duì)系統(tǒng)非授權(quán)訪問(wèn)方面的軟件屬性。如用戶權(quán)限、動(dòng)態(tài)口令、數(shù)據(jù)庫(kù)字段加密等。數(shù)據(jù)備份通過(guò)數(shù)據(jù)庫(kù)的權(quán)限控制來(lái)管理權(quán)限庫(kù)權(quán)限管理可靠性容錯(cuò)性與在軟件運(yùn)行故障情況下維持正常的性能水平的能力有關(guān)的軟件屬性。對(duì)各種異常的情況設(shè)置專門(mén)的處理機(jī)制,保證系統(tǒng)正常運(yùn)行。成熟性與用戶非正常操作引起故障相關(guān)的軟件屬性在用戶操作不當(dāng)時(shí)系統(tǒng)能夠識(shí)別提示效率時(shí)間特性與軟件執(zhí)行功能時(shí)響應(yīng)和處理時(shí)間及吞吐量有關(guān)的軟件屬性數(shù)據(jù)采集的作業(yè)時(shí)間收到多種因素影響,在保證采集準(zhǔn)確性的前體下盡量減少采集條件。附件的抽詞時(shí)間由用戶來(lái)確定資源特性與在軟件執(zhí)行其功能時(shí)所使用的資源數(shù)量及其使用時(shí)間有關(guān)的軟件屬性。數(shù)據(jù)庫(kù)的三種文件統(tǒng)一指定路徑保存可移植性適應(yīng)性與軟件移植時(shí)或變換工作環(huán)境時(shí)所需要改變的代價(jià)的軟件屬性。系統(tǒng)采用JAVA代碼編寫(xiě),無(wú)視平臺(tái)可替換性與軟件在該環(huán)境中用來(lái)替代指定的其他軟件的機(jī)會(huì)和努力有關(guān)的軟件屬性系統(tǒng)中各個(gè)模塊相對(duì)獨(dú)立,保證在某個(gè)模塊需要修改時(shí)不影響其他模塊的正常工作
第3章電子郵件采集與全文檢索系統(tǒng)分析3.1交互分析在交互分析階段采用系統(tǒng)順序圖來(lái)描述用例執(zhí)行或操作過(guò)程中對(duì)象如何通過(guò)消息相互交互。面向?qū)ο蟮氖澜缡怯蓪?duì)象之間發(fā)送的消息驅(qū)動(dòng)的,系統(tǒng)順序圖描述了在用例執(zhí)行或操作的過(guò)程中對(duì)象如何通過(guò)消息相互交互,說(shuō)明了消息如何在對(duì)象之間被發(fā)送和接收以及發(fā)送的順序?,F(xiàn)在我們?nèi)园严到y(tǒng)作為一個(gè)整體來(lái)考慮,以后這些消息將成為單個(gè)對(duì)象的責(zé)任,對(duì)象將通過(guò)與其他對(duì)象交互完成這些責(zé)任。圖3-1和3-2分別為本地郵件采集和服務(wù)器郵件采集的分析順序圖。從圖中可以清晰的看出用戶與系統(tǒng)之間的數(shù)據(jù)交互。由于用戶觸發(fā)用例時(shí)向系統(tǒng)傳遞的采集參數(shù)過(guò)多,在此僅用execute表示。另外,因?yàn)門(mén)RIP數(shù)據(jù)庫(kù)的權(quán)限控制和數(shù)據(jù)檢索體系,所以將TRIP劃分到系統(tǒng)之外,當(dāng)做一個(gè)外界系統(tǒng)。圖3-1本地郵件采集分析順序圖圖3-2服務(wù)器郵件采集分析順序圖3.2對(duì)象分析類圖(Classdiagram)是顯示了模型的靜態(tài)結(jié)構(gòu),特別是模型中存在的類、類的內(nèi)部結(jié)構(gòu)以及它們與其他類的關(guān)系等.。類圖由許多(靜態(tài))說(shuō)明性的模型元素(例如類、包和它們之間的關(guān)系,這些元素和它們的內(nèi)容互相連接)組成,是用來(lái)描述系統(tǒng)結(jié)構(gòu)的最常用的UML圖。在分析系統(tǒng)類圖時(shí)遵循以下步驟:發(fā)現(xiàn)和確定業(yè)務(wù)對(duì)象。檢查每個(gè)用例以發(fā)現(xiàn)對(duì)應(yīng)業(yè)務(wù)實(shí)體或時(shí)間的名詞,將每個(gè)發(fā)現(xiàn)的名詞添加到潛在對(duì)象列表中。然后分析列表中每個(gè)候選,同時(shí)要考慮對(duì)象之間是否存在重復(fù),業(yè)務(wù)對(duì)象是否在本系統(tǒng)范圍內(nèi),以及該對(duì)象是否應(yīng)該作為一個(gè)獨(dú)立的對(duì)象等問(wèn)題,確定業(yè)務(wù)對(duì)象之后要進(jìn)一步的解釋其中不清楚的名詞,描述其行動(dòng)和屬性。組織對(duì)象并確定其關(guān)系。一旦確定了系統(tǒng)的業(yè)務(wù)對(duì)象,就要組織這些對(duì)象,并記錄對(duì)象之間的主要概念關(guān)系。首先需要確定存在于對(duì)象/類之間的關(guān)聯(lián)關(guān)系。當(dāng)一個(gè)對(duì)象需要知道另一個(gè)對(duì)象的東西時(shí),兩個(gè)對(duì)象之間就存在關(guān)聯(lián)關(guān)系。在確定關(guān)聯(lián)關(guān)系之后,就要判斷類之間是否存在這泛化關(guān)系。例如圖3-3分析類圖中,LocalMail和ServerMail同屬于超類Mail的兩個(gè)子類,因此兩個(gè)子類與超類之間屬于泛化/特化關(guān)系。第三步,確定類之間是否存在聚合關(guān)系,聚合是一類關(guān)聯(lián)關(guān)系,其中一個(gè)對(duì)象是另一個(gè)對(duì)象的一部分。當(dāng)分析類圖時(shí),我們發(fā)現(xiàn),附件類Attachment和抽象類Mail之間存在著聚合關(guān)系,即Attachment是Mail的一部分,而Mail不是對(duì)象Attachment的一部分,兩者之間不存在繼承關(guān)系而存在包含關(guān)系。圖3-3系統(tǒng)分析類圖3.3活動(dòng)分析在分析完系統(tǒng)用例之后還需要確定各個(gè)用例的細(xì)節(jié)工作流程,通過(guò)活動(dòng)圖來(lái)闡明業(yè)務(wù)用例實(shí)現(xiàn)的工作流程。業(yè)務(wù)用例工作流程說(shuō)明了業(yè)務(wù)為向所服務(wù)的業(yè)務(wù)主角提供其所需的價(jià)值而必須完成的工作。業(yè)務(wù)用例由一系列活動(dòng)組成,它們共同為業(yè)務(wù)主角生成某些工件。工作流程通常包括一個(gè)基本工作流程和一個(gè)或多個(gè)備選工作流程。工作流程的結(jié)構(gòu)使用活動(dòng)圖來(lái)進(jìn)行說(shuō)明。圖3-4為服務(wù)器郵件采集的活動(dòng)圖圖。首先用戶配置采集參數(shù)點(diǎn)擊采集,系統(tǒng)先判斷采集參數(shù)是否正確,若不正確拋出異常提示用戶。之后系統(tǒng)先判斷郵件庫(kù)是否存在,若不存在則創(chuàng)建郵件庫(kù)。最后啟動(dòng)TRIPAGENT采集郵件,生成日志文件并存儲(chǔ)到數(shù)據(jù)庫(kù)中,最后提示給用戶采集到的郵件數(shù)量,用例結(jié)束。圖3-4服務(wù)器郵件采集活動(dòng)圖圖3-5為本地郵件采集活動(dòng)圖。首先用戶確定文件路徑,系統(tǒng)依照用戶給出的文件路徑解析文件,從文件中得到其中包含的所有文件夾,當(dāng)然若用戶給出的文件不存在或不是PST郵件數(shù)據(jù)文件,則系統(tǒng)會(huì)產(chǎn)生異常,處理異常并提示給用戶。在得到文件夾列表后需要用戶選擇其中某個(gè)文件夾,之后系統(tǒng)先判斷郵件庫(kù)是否存在,若不存在則創(chuàng)建郵件庫(kù)。之后不斷循環(huán)遍歷該文件夾,得到所有的郵件并存儲(chǔ)到數(shù)據(jù)庫(kù)中,最后提示給用戶采集到的郵件數(shù)量,用例結(jié)束。圖3-5本地郵件采集活動(dòng)圖
第4章電子郵件采集與全文檢索系統(tǒng)設(shè)計(jì)在分析了系統(tǒng)的功能業(yè)務(wù)之后,需要對(duì)系統(tǒng)的技術(shù)性和實(shí)現(xiàn)方面進(jìn)行設(shè)計(jì)。系統(tǒng)設(shè)計(jì)是為那些用來(lái)說(shuō)明一個(gè)詳細(xì)的計(jì)算機(jī)系統(tǒng)方案的任務(wù)。本系統(tǒng)主要采用面向?qū)ο蟮姆椒ㄟM(jìn)行系統(tǒng)設(shè)計(jì)和建模。4.1應(yīng)用架構(gòu)設(shè)計(jì)本系統(tǒng)設(shè)計(jì)采用UML部署圖來(lái)描述一個(gè)UML部署圖描述了一個(gè)運(yùn)行時(shí)的硬件結(jié)點(diǎn),以及在這些結(jié)點(diǎn)上運(yùn)行的軟件組件的靜態(tài)視圖。部署圖顯示了系統(tǒng)的硬件,安裝在硬件上的軟件,以及用于連接異構(gòu)的機(jī)器之間的中間件。本系統(tǒng)采用三層B/S結(jié)構(gòu):表示層,業(yè)務(wù)邏輯層和數(shù)據(jù)層。數(shù)據(jù)層所有數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器上,數(shù)據(jù)庫(kù)服務(wù)器上運(yùn)行TRIP數(shù)據(jù)庫(kù),一方面為了保證數(shù)據(jù)的獨(dú)立性安全性,另一方面又保證整個(gè)系統(tǒng)運(yùn)行的高效。業(yè)務(wù)邏輯層表現(xiàn)在應(yīng)用服務(wù)器上,在這里運(yùn)行系統(tǒng)的主要程序,同時(shí)用于服務(wù)器郵件采集的TRIPAGENT安裝在應(yīng)用服務(wù)器上,用來(lái)和郵件服務(wù)器進(jìn)行交互。采用三層BS架構(gòu)單獨(dú)的劃分出應(yīng)用服務(wù)器,在大量用戶連接服務(wù)器時(shí)采用多線程技術(shù),保證多用戶的同時(shí)訪問(wèn)。在顯示層,瀏覽器只參與一些顯示的操作,提高整個(gè)系統(tǒng)的維護(hù)成本。在顯示層,采用JSP、AJAX等異步數(shù)據(jù)傳輸技術(shù)來(lái)提高界面的友好性,讓UI顯示的反應(yīng)速度更加快速。圖4SEQ圖4\*ARABIC1系統(tǒng)部署圖4.2類對(duì)象設(shè)計(jì)在分析階段對(duì)象類的基礎(chǔ)上如何組合構(gòu)成一個(gè)應(yīng)用系統(tǒng)呢?在設(shè)計(jì)階段,需要設(shè)計(jì)整個(gè)系統(tǒng)的設(shè)計(jì)類圖。在一個(gè)純面向?qū)ο蟓h(huán)境中,每一段代碼都存在于某個(gè)對(duì)象類內(nèi)部——所有的用戶界面,所有的程序邏輯,等等。應(yīng)用系統(tǒng)通過(guò)讓類發(fā)送消息并從其他類接收消息而工作。面向?qū)ο笤O(shè)計(jì)的目標(biāo)就是說(shuō)明系統(tǒng)的對(duì)象和消息。設(shè)計(jì)類圖是在分析類圖的基礎(chǔ)上添加設(shè)計(jì)對(duì)象(改動(dòng)的實(shí)體類、控制類和接口類)、屬性及屬性類型、方法及其可見(jiàn)性等。在設(shè)計(jì)類圖中,不僅要關(guān)注常見(jiàn)的對(duì)象關(guān)系(關(guān)聯(lián)關(guān)系、聚合關(guān)系和泛化/特化關(guān)系),還要建模更深層的關(guān)系,例如圖4.1設(shè)計(jì)類圖中的ServerCollect接口類與實(shí)體類ServerMail之間的依賴關(guān)系——當(dāng)實(shí)體類發(fā)生變化時(shí),會(huì)影響到另一個(gè)類,以及三個(gè)查詢UI類與接口類MailSearch之間的繼承關(guān)系??紤]到清晰度的原因,在圖4.1中只列出部分設(shè)計(jì)類圖及部分屬性方法。4.3交互設(shè)計(jì)交互設(shè)計(jì)是一種如何讓產(chǎn)品易用,有效而讓人愉悅的技術(shù),它致力于了解目標(biāo)用戶和他們的期望,了解用戶在同產(chǎn)品交互時(shí)彼此的行為,了解“人”本身的心理和行為特點(diǎn)。同時(shí),還包括了解各種有效的交互方式,并對(duì)它們進(jìn)行增強(qiáng)和擴(kuò)充。在這里通過(guò)設(shè)計(jì)順序圖來(lái)設(shè)計(jì)系統(tǒng)各個(gè)功能的消息傳遞機(jī)制。在分析階段曾把整個(gè)系統(tǒng)當(dāng)做一個(gè)整體來(lái)分析系統(tǒng)與用戶之間如何交互信息,在設(shè)計(jì)階段,需要將整個(gè)系統(tǒng)拆分成各個(gè)具體的類,添加控制和接口類來(lái)更加具體的描述系統(tǒng)與用戶之間的信息交互。圖4.2和圖4.3分別描述了服務(wù)器郵件采集和本地郵件采集過(guò)程的信息交互,其他順序圖參見(jiàn)附錄技術(shù)文檔。以服務(wù)器郵件采集為例闡述設(shè)計(jì)順序圖,從用戶的角度,用戶只關(guān)心如何準(zhǔn)確快速的將其郵箱中的郵件采集到數(shù)據(jù)庫(kù)中,因此簡(jiǎn)化用戶的操作,用戶在整個(gè)用例中只需要配置好采集條件并點(diǎn)擊采集按鈕即可,之后系統(tǒng)根據(jù)用戶配置的采集條件修改TRIPAGENT配置文件tardixreg.xml,然后判斷用戶個(gè)人庫(kù)是否存在,若不存在則先創(chuàng)建個(gè)人郵件庫(kù)。在配置條件無(wú)誤的情況下調(diào)用TRIPAGENT,讓其自動(dòng)采集郵件并生成log日志,最后讀取log日志獲取采集到的郵件數(shù)目,返回提示給用戶。圖4-SEQ圖_4.\*ARABIC1系統(tǒng)設(shè)計(jì)類圖圖4-SEQ圖_4.\*ARABIC2服務(wù)器郵件采集順序圖圖4-SEQ圖_4.\*ARABIC3本地郵件采集順序圖考慮到采集和查詢時(shí)界面友好性,為了減少網(wǎng)頁(yè)與后臺(tái)的數(shù)據(jù)交換量,采用異步數(shù)據(jù)請(qǐng)求機(jī)制,使用AJAX來(lái)支持異步請(qǐng)求。在不重新加載整個(gè)網(wǎng)頁(yè)的情況下,對(duì)整個(gè)網(wǎng)頁(yè)進(jìn)行更新,使用Javascript向服務(wù)器提出請(qǐng)求并處理響應(yīng)而不阻塞用戶,適合本系統(tǒng)中前臺(tái)與后臺(tái)多次數(shù)據(jù)交互且數(shù)據(jù)量都比較小的情況。4.4數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)是指根據(jù)用戶的需求,在某一具體的數(shù)據(jù)庫(kù)管理系統(tǒng)上,設(shè)計(jì)數(shù)據(jù)庫(kù)的結(jié)構(gòu)和建立數(shù)據(jù)庫(kù)的過(guò)程。鑒于郵件數(shù)據(jù)屬于非結(jié)構(gòu)化數(shù)據(jù),所以本系統(tǒng)采用NOSQL數(shù)據(jù)庫(kù)TRIP數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)在大量異構(gòu)數(shù)據(jù)的存儲(chǔ)和檢索上有非常大的優(yōu)勢(shì),該數(shù)據(jù)庫(kù)的優(yōu)勢(shì)及特點(diǎn)已在第1章詳細(xì)介紹過(guò),在這里不再贅述。本系統(tǒng)所使用的庫(kù)不是很多,只涉及到五個(gè)庫(kù),如圖4.4所示,Nosql數(shù)據(jù)庫(kù)中不存在主外鍵的設(shè)置,庫(kù)之間的關(guān)系也是通過(guò)系統(tǒng)來(lái)關(guān)聯(lián)起來(lái)的。圖4-SEQ圖_4.\*ARABIC4E-R圖Nosql數(shù)據(jù)庫(kù)的特點(diǎn)是適合數(shù)據(jù)量較大、數(shù)據(jù)庫(kù)結(jié)構(gòu)較簡(jiǎn)單的系統(tǒng),存儲(chǔ)結(jié)構(gòu)不固定,便于隨時(shí)增刪字段。對(duì)于Nosql數(shù)據(jù)庫(kù)來(lái)說(shuō),重點(diǎn)在于字段的設(shè)計(jì)。由于郵件數(shù)據(jù)其中包含的數(shù)據(jù)條目較多,所以本系統(tǒng)對(duì)郵件庫(kù)采用三維的字段設(shè)計(jì),即字段下包含子字段的方式。各個(gè)庫(kù)字段設(shè)計(jì)如下:郵件采集庫(kù)(tripagent采集庫(kù))(個(gè)人庫(kù)和公共庫(kù))字段名字段類型字段描述A_IDPHRASE序號(hào)A_DSNAMEPHRASE數(shù)據(jù)源名A_DSTYPEPHRASE數(shù)據(jù)源類型(mail)A_PROPNAMEPHRASE子字段,mailhost:imap地址;account:郵件賬號(hào);folderpath:采集郵箱名(收件箱inbox,已發(fā)送郵件SentItems,已刪除郵件DeletedItems,發(fā)件箱Outbox,垃圾郵件JunkE-Mail,聯(lián)系人Contacts,草稿Drafts,日記Journal,日歷Calendar,任務(wù)Tasks,便箋Notes,已歸檔Archived);uid:郵件id;subject:主題;from:發(fā)件人;to:收件人;timestamp:時(shí)間戳;dateformat:日期時(shí)間格式;A_PROPVALUEPHRASE子字段,對(duì)應(yīng)A_PROPNAME的值T_PROPNAMEPHRASE子記錄,TYPE:正文類型(信息MESSAGE,附件ATTACHMENT);MIMETYPE:傳輸類型;PARENT:不使用ZIPfile:是否采集壓縮包內(nèi)附件(0否,1是);SUBJECT:主題;FROM:發(fā)件人;TO:收件人;timestamp:時(shí)間戳;dateformat:日期時(shí)間格式;T_PROPVALUEPHRASE子記錄,對(duì)應(yīng)T_PROPNAME的值T_NAMEPHRASE子記錄,MESSAGE或附件名T_BINARYSTRING子記錄,存放附件二進(jìn)制T_VALUETEXT子記錄,抽詞內(nèi)容郵箱配置庫(kù)字段名字段類型字段描述idPHRASE序號(hào)(唯一)DSNAMEPHRASE數(shù)據(jù)源名(使用郵箱名)USERPHRASE平臺(tái)用戶名TYPEPHRASEtripagent采集類型,值一律為mailLOCATIONPHRASE本地郵件文件地址個(gè)人資料庫(kù)字段名字段類型字段描述idPHRASE序號(hào)(唯一)User_NamePHRASE用戶名(唯一約束)User_RealnamePHRASE姓名User_GenderPHRASE性別User_OfficeINTEGER職位User_NumberPHRASE用戶編號(hào)User_EmailPHRASEEMAILUser_Work_PhonePHRASE工作User_Tell_PhonePHRASE移動(dòng)Is_UseINEGER是否啟用(1是,0不是)Creat_UserPHRASE創(chuàng)建人(user_name)Own_UserPHRASE創(chuàng)建人(user_name)Is_FmPHRASE數(shù)據(jù)庫(kù)管理員Is_UmPHRASE用戶管理員TripgroupPHRASE用戶組UserzhuzhiPHRASE用戶組織4.5界面設(shè)計(jì)為了獲得良好的界面視覺(jué)效果,本系統(tǒng)的界面都是通過(guò)JSP搭建,統(tǒng)一其中的CSS樣式風(fēng)格,前后臺(tái)的數(shù)據(jù)交互都是通過(guò)AJAX實(shí)現(xiàn),在不同瀏覽器下也能保證同樣的界面效果。相對(duì)于CS模式來(lái)說(shuō),本系統(tǒng)的界面更加美觀,同時(shí)數(shù)據(jù)交互更加復(fù)雜,安全性也得到保障。系統(tǒng)的主要界面如下:圖4-SEQ圖_4.\*ARABIC5登陸界面圖4-SEQ圖_4.\*ARABIC6首頁(yè)圖4-SEQ圖_4.\*ARABIC7云端郵件(服務(wù)器郵件采集)圖4-SEQ圖_4.\*ARABIC8本地郵件圖4-SEQ圖_4.\*ARABIC9郵件檢索圖4-SEQ圖_4.\*ARABIC10郵件檢索(帶檢索結(jié)果)圖4-SEQ圖_4.\*ARABIC11郵箱管理圖4-SEQ圖_4.\*ARABIC12添加郵箱因?yàn)檩斎朐醋韵到y(tǒng)用戶,所以人的因素在交互設(shè)計(jì)中扮演了重要角色。輸入應(yīng)該盡可能地簡(jiǎn)單,并且應(yīng)該降低輸入錯(cuò)誤的可能性。通過(guò)以上界面可以看出,本系統(tǒng)添加了大量的提示信息,幫助用戶完成采集任務(wù);大量的使用選擇和下拉列表控件,減少用戶的數(shù)據(jù)錄入操作;界面風(fēng)格保持一致,簡(jiǎn)明美觀。第5章電子郵件采集與全文檢索系統(tǒng)實(shí)現(xiàn)5.1開(kāi)發(fā)工具介紹本系統(tǒng)主要用到TRIP數(shù)據(jù)庫(kù)的一個(gè)組件TRIPAGENT,開(kāi)源PST文件解析包java-libpst,開(kāi)源MSOffice文件解析包POI,SUN公司開(kāi)源XML解析包dom4j以及開(kāi)源JAVA非標(biāo)準(zhǔn)包javamail,后臺(tái)代碼使用JAVA編寫(xiě),前臺(tái)使用JSP編寫(xiě),數(shù)據(jù)交互技術(shù)使用AJAX,數(shù)據(jù)庫(kù)使用非商業(yè)Nosql數(shù)據(jù)庫(kù)TRIP,JAVA編寫(xiě)集成環(huán)境為Myeclipse。郵件采集引擎——TRIPAGENTTRIPAGENT是一個(gè)全文檢索引擎,可用它來(lái)搜索、獲取本
TRIP系統(tǒng)之外包括InternetWeb網(wǎng)點(diǎn)、郵箱、oracle等關(guān)系型數(shù)據(jù)庫(kù),以及其它數(shù)據(jù)文件系統(tǒng)上的數(shù)據(jù)源,建立“本土”的數(shù)據(jù)庫(kù)系統(tǒng)。就郵件的管理而言,TRIPagent實(shí)際就是搜索引擎和全文檢索系統(tǒng)的組合,也是關(guān)系庫(kù)數(shù)據(jù)檢索功能的補(bǔ)充。TRIPAGENT對(duì)每個(gè)被檢索采集的對(duì)象都建立一個(gè)“數(shù)據(jù)源”,在數(shù)據(jù)源中保存有該對(duì)象的獲取信息及采集策略,所有數(shù)據(jù)源都保存在名為tardixreg.xml的配置文件中。將TRIPAGENT集成到本系統(tǒng)中的關(guān)鍵在如何動(dòng)態(tài)同步管理XML配置文件,保證其格式規(guī)范性以及如何獲取TRIPAGENT運(yùn)行后的運(yùn)行結(jié)果。對(duì)XML配置文件的解析主要用到dom4j和W3C的DOM包進(jìn)行解析管理。5.1.2PST文件解析——JAVA-LIBPST和POIJAVA-LIBPST是OL2MBOX(Outlooktounixmailconverter,目前已解散)項(xiàng)目的一部分,旨在將OUTLOOK的PST格式轉(zhuǎn)化為標(biāo)準(zhǔn)mailbox格式,即RFC822標(biāo)準(zhǔn)。Libpst開(kāi)源包幫助我們解析PST文件,獲取需要的信息(基本上是頭信息和郵件正文)。對(duì)于郵件的附件內(nèi)容抽取,一般都是MSOffice文件,所以借助POI包對(duì)word,ppt,excel和pdf進(jìn)行內(nèi)容抽取轉(zhuǎn)化。異步數(shù)據(jù)傳輸——AJAXAJAX即“Asynchronous
Javascript+
XML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。通過(guò)在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,AJAX可以使網(wǎng)頁(yè)實(shí)現(xiàn)異步更新。這意味著可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下,對(duì)網(wǎng)頁(yè)的某部分進(jìn)行更新。它不是一種新的編程語(yǔ)言,而是一種用于創(chuàng)建更好更快以及交互性更強(qiáng)的Web應(yīng)用程序的技術(shù)。Ajax的核心是JavaScript對(duì)象XmlRequest,XmlRequest使您可以使用JavaScript向服務(wù)器提出請(qǐng)求并處理響應(yīng),而不阻塞用戶。在本系統(tǒng)中,有時(shí)一個(gè)界面需要與后臺(tái)進(jìn)行多次而少量的數(shù)據(jù)交換,比如本地郵件采集中,需要用戶先選擇PST文件路徑,然后系統(tǒng)根據(jù)路徑后臺(tái)解析文件獲得文件夾列表再返回給前臺(tái),前臺(tái)選擇文件夾后傳遞給后臺(tái)進(jìn)行采集。若采用傳統(tǒng)同步數(shù)據(jù)傳輸,需要多次重新加載頁(yè)面,且數(shù)據(jù)傳輸量更大。使用AJAX只需調(diào)用發(fā)送兩次XmlRequest,就可以更快速的運(yùn)行。在郵件檢索時(shí),也是如此。5.2功能代碼實(shí)現(xiàn)截取部分有代表性的功能,展示其實(shí)現(xiàn)代碼。本地郵件解析importjava.io.InputStream;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importjava.util.Vector;importorg.apache.poi.POITextExtractor;importorg.apache.poi.extractor.ExtractorFactory;importcom.pff.*;publicclasslocalMail{ PSTFilefile; Stringfolder; Stringdatasourcename; Stringdatabase; Stringpassword; updateDBupdb=newupdateDB(); List<mail>maillist=newArrayList<mail>(); publiclocalMail(Stringpath,Stringfolder,Stringdatasourcename,Stringdatabase,Stringpassword){ try{ file=newPSTFile(path); this.folder=folder; this.datasourcename=datasourcename; this.database=database; this.password=password; }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } publicstaticList<String>getfolderlist(Stringpath){ PSTFilef; List<String>result=newArrayList<String>(); try{ f=newPSTFile(path); PSTFolderrootfolder=f.getRootFolder(); PSTFolderdatafile=rootfolder.getSubFolders().get(0); Vector<PSTFolder>mailfolder=datafile.getSubFolders(); for(PSTFolderf1:mailfolder){ result.add(f1.getDisplayName()); } }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnresult; } publicList<Object>getMailInfo()throwsException{//解析PST文件獲取郵件 List<Object>result=newArrayList<Object>(); List<String>mailfrom=newArrayList<String>(); List<String>mailsubject=newArrayList<String>(); PSTFolderrootfolder=file.getRootFolder(); PSTFolderdatafile=rootfolder.getSubFolders().get(0); intfoldernum=0; for(;foldernum<datafile.getSubFolderCount();foldernum++){ if(folder.equalsIgnoreCase(datafile.getSubFolders().get(foldernum).getDisplayName()))break; } Vector<PSTFolder>mailfolder=datafile.getSubFolders(); PSTFolderf1=mailfolder.get(foldernum); if(f1.getDisplayName().equalsIgnoreCase(folder)){ PSTFolderinbox=f1; intcount=0; if(inbox!=null) { PSTMessageemail=(PSTMessage)inbox.getNextChild(); while(email!=null) { mailmail=newmail(); mail.setname(datasourcename); StringBuffercontents=newStringBuffer(); mail.setFrom(email.getSenderEmailAddress()); mail.setTo(email.getRecipient(0).getSmtpAddress()); mail.setSubject(email.getSubject()); SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); Datecreatetime=email.getMessageDeliveryTime(); mail.setDate(df.format(createtime)); mail.setid(email.getInternetMessageId());// System.out.println(items.get(i).getId()); contents.append(email.getBody()); if(email.hasAttachments()){ inti=0; booleanflag=true; while(flag){ try{ PSTAttachmentattach=email.getAttachment(i++); Stringtype=attach.getFilename(); if(type.contains("doc")||type.contains("xls")||type.contains("ppt")) { InputStreaminput=attach.getFileInputStream(); POITextExtractorextractor=ExtractorFactory.createExtractor(input); contents.append(extractor.getText()); } }catch(Exceptione){ flag=false; } } } mail.setContent(contents.toString()); if(mail.from!=null){ count++; updb.insertdb(mail,database,password); mailfrom.add(mail.from); mailsubject.add(mail.subject); } email=(PSTMessage)f1.getNextChild(); } result.add(count); result.add(mailfrom); result.add(mailsubject); System.out.println(count); } } returnresult; }}classmail{ publicStringname; publicStringid; publicStringfrom; publicStringto; publicStringsubject; publicStringdate; publicStringcontent; publicmail(){ //TODOAuto-generatedconstructorstub } publicvoidsetname(Stringname){ =name; } publicvoidsetid(Stringid){ this.id=id; } publicvoidsetFrom(Stringfrom){ this.from=from; } publicvoidsetTo(Stringto){ this.to=to; } publicvoidsetSubject(Stringsubject){ this.subject=subject; } publicvoidsetDate(Stringdate){ this.date=date; } publicvoidsetContent(Stringcontent){ this.content=content; }}tripagent配置文件解析importjava.io.File;importjava.io.FileWriter;importjava.util.ArrayList;importjava.util.List;importjava.util.Properties;importjava.util.TreeSet;importjavax.xml.parsers.DocumentBuilder;importjavax.xml.parsers.DocumentBuilderFactory;importjavax.xml.transform.OutputKeys;importjavax.xml.transform.Transformer;importjavax.xml.transform.TransformerFactory;importorg.dom4j.io.OutputFormat;importorg.dom4j.io.XMLWriter;importorg.w3c.dom.Document;importorg.w3c.dom.Element;importorg.w3c.dom.Node;importorg.w3c.dom.NodeList;importcom.tietoenator.trip.util.TfxSimpleCrypt;publicclassUpdateXml{ Stringname; StringmailAccount; Stringpassword; Stringimaphost; Stringdatabase; Stringattachments; Stringmaxattachtime; List<String>folders=newArrayList<String>(); StringSubject; StringSender; StringRecipient; Stringattachname; Stringupdatetype;//rescan/timstamp/checksum/new/flagged List<String>interval=newArrayList<String>();//0/1,minute,hour[,dayofmonth,monthofyear,dayofweek] Documentdocument=null; Stringdatabasehost; staticPropertiesprop=newProperties(); publicUpdateXml(Stringname,StringmailAccount,Stringmailhost,Stringdatabase,StringindexAttachment,Stringmaxattachtime, StringSubject,StringSender,StringRecipient,Stringattachname,List<String>interval,Stringpassword,Stringdatabsehost){ this.databasehost=databsehost; =name; t
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能車(chē)位銷(xiāo)售代理合作協(xié)議書(shū)4篇
- 2025年度草原生態(tài)旅游投資合作草場(chǎng)租賃合同3篇
- 2025年度生態(tài)旅游項(xiàng)目土地承包合作協(xié)議范本4篇
- 2025版新能源汽車(chē)研發(fā)與制造承包合同范本3篇
- 二零二五版高校學(xué)生實(shí)習(xí)實(shí)訓(xùn)合同示范文本3篇
- 2025年度冷鏈物流保障下餐飲原材料集中采購(gòu)合同2篇
- 2025年食品安全追溯食品運(yùn)輸采購(gòu)合同3篇
- 2025版害蟲(chóng)防治產(chǎn)品認(rèn)證與推廣服務(wù)合同3篇
- 二零二五年度酒店行業(yè)顧客信息保密與隱私保護(hù)協(xié)議范本4篇
- 教育行業(yè)售后服務(wù)模式在小區(qū)超市的應(yīng)用
- 2025新譯林版英語(yǔ)七年級(jí)下單詞表
- 新疆2024年中考數(shù)學(xué)試卷(含答案)
- 2024-2030年中國(guó)連續(xù)性腎臟替代治療(CRRT)行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 跨學(xué)科主題學(xué)習(xí):實(shí)施策略、設(shè)計(jì)要素與評(píng)價(jià)方式(附案例)
- 場(chǎng)地委托授權(quán)
- 2024年四川省成都市龍泉驛區(qū)中考數(shù)學(xué)二診試卷(含答案)
- 項(xiàng)目工地春節(jié)放假安排及安全措施
- 印染廠安全培訓(xùn)課件
- 紅色主題研學(xué)課程設(shè)計(jì)
- 裝置自動(dòng)控制的先進(jìn)性說(shuō)明
- 《企業(yè)管理課件:團(tuán)隊(duì)管理知識(shí)點(diǎn)詳解PPT》
評(píng)論
0/150
提交評(píng)論