版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
牛肉質(zhì)量溯源及清真食品認證WEB系統(tǒng)的開發(fā)目錄TOC\o"1-3"\h\z前言 11. 數(shù)據(jù)采集與整合子系統(tǒng)概述 21.1選題背景 21.2選題意義 21.3系統(tǒng)介紹 21.4系統(tǒng)可行性分析 32. 數(shù)據(jù)采集與整合子系統(tǒng)需求分析 42.1業(yè)務目標 42.2用例分析 53. 數(shù)據(jù)采集與整合子系統(tǒng)總體設計 83.1系統(tǒng)框架 83.2系統(tǒng)功能模塊設計 93.3數(shù)據(jù)表結(jié)構設計 94.數(shù)據(jù)采集與整合子系統(tǒng)詳細設計及實現(xiàn) 114.1數(shù)據(jù)采集類圖設計 114.2數(shù)據(jù)整合類圖設計 214.3開發(fā)準備 234.4系統(tǒng)發(fā)布 24總結(jié) 30致謝 31參考文獻 32電信運營計費——數(shù)據(jù)采集與整合子系統(tǒng)的設計與開發(fā)前言面對更加復雜的全業(yè)務運營模式,中國電信業(yè)運營支撐系統(tǒng)將面臨機遇與挑戰(zhàn),作為電信運營支撐系統(tǒng)的重要組成部分,計費系統(tǒng)也將迎來新的發(fā)展機遇。首先,在全業(yè)務模式下,對計費系統(tǒng)的實時性提出了新的要求。在過去,已經(jīng)實現(xiàn)準實時地對業(yè)務進行計費,提高了業(yè)務的處理速度,優(yōu)化了客戶體驗。但一些高風險的新業(yè)務,要求能立即扣費,卻由于現(xiàn)網(wǎng)的各種系統(tǒng)都無法較好支持,影響了業(yè)務的開展。在全業(yè)務時代,實時費用查詢,計費通知,對客戶來說十分必要。計費信息可以實時影響業(yè)務的提供、帳戶余額可以實時更新的計費機制,因此需要計費機制與會話/服務控制直接的交互,不僅是包括了在線的和離線的,而且跟客戶關系管理緊密聯(lián)系起來。而有效預防風險,提升客戶滿意度,本身就是優(yōu)化業(yè)務成效的一個表現(xiàn),將大大增強運營商的競爭力。其次,全業(yè)務運營要求計費系統(tǒng)進行預付費和后付費的融合。目前由于預付費、后付費用戶在不同平臺,所以產(chǎn)品資料、用戶資料分散存放,導致不能進行預付費、后付費互轉(zhuǎn),以及融合計費。在全業(yè)務運營時代,所有的客戶都希望在處理各種服務時不必區(qū)分移動或固定電話,后付費或預付費。客戶并不想在各種服務、促銷、折扣之間費盡周折。用戶希望可以自由選擇業(yè)務組合方式,比如神州行的用戶要想轉(zhuǎn)成全球通套餐,雖然兩種品牌分別屬于預付費和后付費業(yè)務,但用戶不希望在業(yè)務切換時帶來更換電話號碼的麻煩。全部用戶和業(yè)務的預付費是發(fā)展的方向,但首先必須把后付費用戶的計費功能納入到(OnlineChargingSystem—在線計費系統(tǒng))系統(tǒng)當中。最后,全業(yè)務運營也對系統(tǒng)提供商提出了更高的要求。受過去以業(yè)務為中心的思想影響,各個系統(tǒng)往往為了某種業(yè)務而單獨建設一套系統(tǒng),包括計費、帳務、營業(yè)等全部功能,當業(yè)務較多時,無疑會加大業(yè)務流程和系統(tǒng)維護、處理、數(shù)據(jù)分析的難度。在全業(yè)務運營環(huán)境下,運營商可以提供包括語音、數(shù)據(jù)、游戲在內(nèi)的所有業(yè)務,在這種新的變化形式下,需要各大運營商對自己的計費系統(tǒng)進行升級,做為運營支撐系統(tǒng)的提供者,各計費系統(tǒng)集成商必須具備全方位整套解決方案能力,如亞信、HP、中興軟創(chuàng)等紛紛推出的融合實時在線計費系統(tǒng)產(chǎn)品,其產(chǎn)品包括開發(fā)、測試、集成、服務在內(nèi)的一攬子解決方案,并在標準化方面與運營商充分合作,這樣的產(chǎn)品能更好地適應目前中國電信市場的發(fā)展。基于上述背景,結(jié)合特定企業(yè)的特定要求,開發(fā)一套具有較高可移植性、可擴展性、可維護性和容錯性的數(shù)據(jù)采集與整合系統(tǒng),不僅成為擺在國內(nèi)電信運營企業(yè)面前的重大課題,也是廣大軟件工作者為之努力的目標。
數(shù)據(jù)采集與整合子系統(tǒng)概述1.1選題背景電信運營商新增一項OpenLab(開放實驗室)出租業(yè)務,即該電信運營商提供基于Unix平臺的實驗室環(huán)境,選擇使用這種業(yè)務的用戶能夠遠程登錄到實驗室中做基于這個實驗室環(huán)境的一些工作和實驗。運營商希望借助先進的計算機技術對訪問實驗室的用戶進行管理和計費,由此實現(xiàn)對此項業(yè)務運營的支持與管理,于是電信運營計費管理系統(tǒng)應運而生。1.2選題意義要想對用戶進行準確的收費,首先必須能夠獲得用戶使用開放實驗室的準確的使用記錄,采集子系統(tǒng)正是為了獲取這些記錄而提供的。采集系統(tǒng)定時將用戶使用服務器的數(shù)據(jù)存入到了數(shù)據(jù)庫中,但這些數(shù)據(jù)都是流水帳的數(shù)據(jù),是用戶每次使用UNIX操作系統(tǒng)的用時。如果用戶量大,用戶頻繁地登入/出,將產(chǎn)生大量的數(shù)據(jù),不便于將來生成用戶的月賬單和對開放實驗室的使用情況進行月統(tǒng)計和年統(tǒng)計,因此,出現(xiàn)了整合系統(tǒng)。1.3系統(tǒng)介紹電信計費系統(tǒng)作為對出租實驗室的計費管理,主要包含了以下子模塊:數(shù)據(jù)采集、數(shù)據(jù)整合、用戶管理、資費管理、管理員管理、賬單查詢、賬務查詢、用戶自服務和權限管理模塊。用戶管理子系統(tǒng)就是對用戶的帳務帳號和業(yè)務帳號進行管理。資費管理子系統(tǒng)就是用來管理資費的。具有資費管理權限的管理員登陸成功后,可以添加新的資費,查詢所有的資費,可以修改現(xiàn)有的資費信息,還可以刪除資費。管理員管理系統(tǒng)就是超級管理員來管理普通管理員。超級管理員登陸成功后,可以增加新的普通管理員,同時為他分配一些權限,可以修改普通管理員的信息,可以查詢所有的管理員信息,可以刪除某些管理員。具有帳單查詢權限的管理員可以利用此子系統(tǒng)對所有用戶的月賬單進行查詢。此子系統(tǒng)不僅提供對某個帳務帳號上產(chǎn)生的總的費用進行查詢,還提供對某個帳務帳號上的每個業(yè)務帳號上產(chǎn)生的費用明細進行查詢。具有帳務查詢的管理員可以使用此子系統(tǒng)對開放實驗室的使用情況進行查詢。此子系統(tǒng)可以提供以月為周期的查詢,也可以提供以年為周期的查詢。用戶自服務系統(tǒng)可以方便地供用戶查詢自己的賬單和修改自己的個人信息。這個子系統(tǒng)是唯一的一個用戶可以使用的子系統(tǒng)。而采集系統(tǒng)通過調(diào)用Unix系統(tǒng)函數(shù)來讀取這個日志文件中的內(nèi)容,然后對讀取到的內(nèi)容進行整理,整理為方便計費的數(shù)據(jù),其中包括登錄名、登錄時間或登出時間等作為計費依據(jù)的數(shù)據(jù)。最后把這些數(shù)據(jù)存入數(shù)據(jù)庫中,以備其他系統(tǒng)使用。整合是將某個用戶在某一時段內(nèi)所用機時求和后形成一條記錄。1.4系統(tǒng)可行性分析由于系統(tǒng)運行過程中可能出現(xiàn)不可預知的狀況,可能出現(xiàn)數(shù)據(jù)丟失的情況,從五個方面考慮數(shù)據(jù)的準確性問題:1)綜合考慮,先把日志文件在處理前進行備份。今后的任何失敗,都可有原始數(shù)據(jù)參考。2)客戶端數(shù)據(jù)讀取,解析:解析沒有匹配的數(shù)據(jù)一定要保存,在下次采集匹配的時候再次讀取出來匹配。從理論上講,登出數(shù)據(jù)肯定能找到匹配的登入數(shù)據(jù).反之則不一定。解析過程一般不會出現(xiàn)數(shù)據(jù)異常的情況。3)客戶端數(shù)據(jù)發(fā)送:數(shù)據(jù)發(fā)送的時候,可能出現(xiàn)網(wǎng)絡故障,數(shù)據(jù)可能發(fā)送不出去。網(wǎng)絡正常也有可能服務器端接收數(shù)據(jù)或保存數(shù)據(jù)錯誤。上面兩種或其他異常發(fā)生的時候,數(shù)據(jù)一定要保存到文件中,在下次采集的時候,先發(fā)送歷史失敗數(shù)據(jù),在發(fā)送新采集的數(shù)據(jù)。4)服務器端數(shù)據(jù)接受,存儲:在TCP協(xié)議下,在服務器端數(shù)據(jù)可能在保存數(shù)據(jù)庫的時候出現(xiàn)錯誤,比如網(wǎng)絡問題.當服務器出現(xiàn)保存錯誤的時候,向客戶發(fā)送錯誤標記,讓數(shù)據(jù)保存在客戶。5)數(shù)據(jù)整合:數(shù)據(jù)整合的時候,可能發(fā)送數(shù)據(jù)庫網(wǎng)絡連接失敗,延時等問題或其他異常問題,則需要記錄該整合相關數(shù)據(jù),便于客戶通過PL/SQL編程或其他程序進行定點補充整合。數(shù)據(jù)采集與整合子系統(tǒng)需求分析2.1業(yè)務目標本系統(tǒng)是一個計費的系統(tǒng),要想對用戶進行準確的收費,首先必須能夠獲得用戶使用開放實驗室的準確的使用記錄,采集子系統(tǒng)正是為了獲取這些記錄而提供的。獲取用戶使用實驗室的準確記錄有三種情況:利用操作系統(tǒng)的自身功能:開放實驗室是一個Unix服務器,Unix服務器本身就具有記錄系統(tǒng)日志的功能。用戶每次登錄和退出Unix服務器的信息都會被自動保存到一個在線日志文件/var/adm/wtmpx中。采集系統(tǒng)通過調(diào)用Unix系統(tǒng)函數(shù)來讀取這個日志文件中的內(nèi)容,然后對讀取到的內(nèi)容進行整理,整理為方便計費的數(shù)據(jù),其中包括登錄名、登錄時間或登出時間等作為計費依據(jù)的數(shù)據(jù)。最后把這些數(shù)據(jù)存入數(shù)據(jù)庫中,以備其他系統(tǒng)使用。為了使讀取的數(shù)據(jù)量不至于過大,采集系統(tǒng)會每小時定時執(zhí)行一次,每次只采集上一個小時時間段之內(nèi)的數(shù)據(jù)。利用開放實驗室的個人web主頁功能(personalwebhosting):只要用戶在其主目錄(home)下創(chuàng)建了public_html目錄,采集系統(tǒng)通過掃描目錄public_html就可以產(chǎn)生計費依據(jù)。訪問開放實驗室的web信息:用戶每次訪問web服務器,web服務器都會在access.log中記錄下相應的信息,如客戶端的ip和被訪問的URL等。通過分析web服務器的訪問日志產(chǎn)生計費依據(jù)。使用開放實驗室的e-mail功能:根據(jù)郵箱的個數(shù)產(chǎn)生計費依據(jù)。說明:2,3的情況目前不做處理,提供擴展接口便于今后擴展。采集系統(tǒng)定時將用戶使用服務器的數(shù)據(jù)存入到了數(shù)據(jù)庫中,但這些數(shù)據(jù)都是流水帳的數(shù)據(jù),是用戶每次使用UNIX操作系統(tǒng)的用時。如果用戶量大,用戶頻繁地登入/出,將產(chǎn)生大量的數(shù)據(jù),不便于將來生成用戶的月賬單和對開放實驗室的使用情況進行月統(tǒng)計和年統(tǒng)計,因此,出現(xiàn)了整合系統(tǒng)。整合是將某個用戶或某個實驗室在某一時段內(nèi)所用機時求和后形成一條記錄。整合系統(tǒng)具體整合規(guī)則如下:每小時定時整合一次,生成以小時為單位統(tǒng)計的數(shù)據(jù),程序總是每小時定時整合前一小時的數(shù)據(jù)。每天定時整合一次,生成以天為單位統(tǒng)計的數(shù)據(jù),程序總是每天定時整合前一天的數(shù)據(jù).每個月定時整合一次,生成以月為單位統(tǒng)計的數(shù)據(jù),程序總是每個月定時整合前一個月的數(shù)據(jù)。整合按用戶與實驗室整合,便于帳單查詢與帳務查詢,以及用戶自服務帳單查詢.2.2用例分析2.2.1系統(tǒng)用例圖圖2-1數(shù)據(jù)采集與整合用例圖如圖2-1所示,數(shù)據(jù)采集與整合子系統(tǒng)包括數(shù)據(jù)采集客戶,數(shù)據(jù)采集服務器,數(shù)據(jù)整合三個用例。2.2.2系統(tǒng)用例描述描述要素描述內(nèi)容備注事項用例名稱數(shù)據(jù)采集客戶用例編號用例簡述讀取日志文件,并清空日志。從讀取的數(shù)據(jù)中解析用戶登錄時間等信息。把解析的用戶登錄時間數(shù)據(jù)發(fā)送到服務器。如果發(fā)送失敗,就存儲在實驗室上等下次發(fā)送。參與者系統(tǒng)管理人員前置條件需要root權限后置條件日志文件被備份后清空異常事件流備份讀取數(shù)據(jù)源異常:結(jié)束本次采集,并等待下次采集.解析數(shù)據(jù)源異常,中斷整個采集過程.上次登入數(shù)據(jù)讀取異常,忽略異常,并繼續(xù)采集數(shù)據(jù)發(fā)送失敗異常,保存文件到本地,并等待下次采集特殊需求表2-1數(shù)據(jù)采集客戶端用例描述表2-2數(shù)據(jù)采集服務端用例描述描述要素描述內(nèi)容備注事項用例名稱數(shù)據(jù)采集服務器用例編號用例簡述接受各客戶采集程序發(fā)送的數(shù)據(jù)。接受失敗,請求客戶端重新發(fā)送。根據(jù)時間存儲到相應的數(shù)據(jù)表。參與者系統(tǒng)管理員前置條件后置條件異常事件流連接數(shù)據(jù)庫異常:發(fā)送標記到客戶端,讓客戶端按服務器異常處理.服務器接受客戶端異常:認定為異?;蚩蛻舨杉Y(jié)束,直接終止服務器對相關客戶的處理,并釋放資源.特殊需求表2-3數(shù)據(jù)整合用例描述描述要素描述內(nèi)容備注事項用例名稱數(shù)據(jù)整合用例編號用例簡述每小時按用戶業(yè)務整合一次用戶登錄時間數(shù)據(jù)。每天按用戶業(yè)務整合一次用戶登錄時間數(shù)據(jù)。每月按用戶業(yè)務整合一次用戶登錄時間數(shù)據(jù)。每小時按實驗室服務器整合一次用戶使用的時間數(shù)據(jù)。每天按實驗室服務器整合一次用戶使用的時間數(shù)據(jù)。每月按實驗室服務器整合一次用戶使用的時間數(shù)據(jù)。參與者系統(tǒng)管理員前置條件后置條件產(chǎn)生整合數(shù)據(jù)。異常事件流采集出現(xiàn)網(wǎng)絡異常:記錄異常時間,便于用戶定點整合.特殊需求
數(shù)據(jù)采集與整合子系統(tǒng)總體設計3.1系統(tǒng)框架本系統(tǒng),采用簡單的J2SE+MySQL開發(fā)。設計的時候采用基于網(wǎng)絡的多層C/S的設計模式。實驗室上寫一個程序,負責讀取日志,解析日志,并寫一個網(wǎng)絡客戶程序,把解析好的數(shù)據(jù)通過網(wǎng)絡發(fā)送到某個服務器。不是直接存入數(shù)據(jù)庫。[采集客戶端]在遠程寫一個服務器程序,接收個實驗室服務器上采集并解析處理好的數(shù)據(jù),然后再放入數(shù)據(jù)庫,再通過數(shù)據(jù)整合程序?qū)?shù)據(jù)分組存放。[采集服務器端]圖3-1采集系統(tǒng)結(jié)構框架3.2系統(tǒng)功能模塊設計圖3-2系統(tǒng)功能模塊圖如圖3-2所示,數(shù)據(jù)采集與整合系統(tǒng)為電信運營系統(tǒng)的子系統(tǒng),其主要功能模塊包括采集客戶端,采集服務器端,以及整合端。3.3數(shù)據(jù)表結(jié)構設計在采集數(shù)據(jù)的存儲方式,根據(jù)客戶需求與系統(tǒng)性能的考慮,設計的時候把數(shù)據(jù)存儲表結(jié)構分為三類:采集的原始登錄數(shù)據(jù)記錄表。按不同用戶在不同實驗室上的數(shù)據(jù)整合表。按不同實驗室的數(shù)據(jù)整合表。注意:按實驗室整合與按用戶在不同實驗室上整合的存儲因為數(shù)據(jù)量的問題在設計上有區(qū)別。其中前者的表按天,月,年各一張,后者的天表31張,月表12張,年表根據(jù)年份一年一張。表3-1原始采集用戶登錄時長明細表(details_x)其中x是1-31字段英文名字段漢字名類型約束條件說明loginname登錄名Varchar(20)loginip登錄IPVarchar(24)logintime登錄時間Timestamplogouttime登出時間Timestamplabip實驗室IPVarchar(24)duration登錄時長long如表3-1所示,該表存儲原始采集用戶的登錄名,登錄IP,登錄時間,登出時間,實驗室IP,登錄時長。該表特點:該類表一張。該表設計成一個,主要是原始數(shù)據(jù)很少被查詢。數(shù)據(jù)量很大??赡転橛脩舨樵兪褂脴I(yè)務的明細的時候查詢。登錄/登出構成一條記錄,不存儲時長。可能幾個小時一條記錄,也可能一小時內(nèi)若干條記錄表3-2按用戶統(tǒng)計整合的時記錄表detaildays_x其中x是1-31字段英文名字段漢字名類型約束條件說明loginname登錄名Varchar(20)loginip登錄IPVarchar(24)logouttime登出時間Timestamplabip實驗室IPVarchar(24)duration登錄時長long如表3-2所示,該表是按用戶統(tǒng)計整合的時記錄表表3-3按用戶統(tǒng)計整合的天記錄表detailmonths_x是1-12字段英文名字段漢字名類型約束條件說明loginname登錄名Varchar(20)loginip登錄IPVarchar(24)logouttime整合時間Timestamplabip實驗室IPVarchar(24)duration登錄時長long如表3-3所示,該表是按用戶統(tǒng)計整合的天記錄表表3-4按用戶統(tǒng)計整合的月記錄表detailyears_xx不定x表示年字段英文名字段漢字名類型約束條件說明loginname登錄名Varchar(20)Loginip登錄IPVarchar(24)logouttime整合時間TimestampLabip實驗室IPVarchar(24)Duration登錄時長long如表3-4所示,該表是按用戶統(tǒng)計整合的月記錄表該類表主要存儲整合后的數(shù)據(jù)。其中存儲時長,按時間間隔分三種:一小時內(nèi)的數(shù)據(jù)整合成一條記錄。單獨存放在一張表中-天表。一天內(nèi)的數(shù)據(jù)整合成一條記錄。單獨存放在一張表中-月表。一個月內(nèi)的數(shù)據(jù)整合成一條記錄。單獨存放在一張表中-年表。注意:這三張表結(jié)構完全一樣,除時間范圍具體的值不同。因為該表查詢的頻繁度很高,在設計的時候設計成天表31張,月表12張,年表根據(jù)年份一年一張。表3-5按服務器整合的時記錄表detaildays字段英文名字段漢字名類型約束條件說明logouttime整合時間TimestampLabip實驗室IPVarchar(24)Duration登錄時長long如表3-5所示,該表是按服務器整合的時記錄表表3-6按服務器整合的天記錄表degtailmonths字段英文名字段漢字名類型約束條件說明logouttime整合時間TimestampLabip實驗室IPVarchar(24)Duration登錄時長Long如表3-6所示,該表是按服務器整合的天記錄表表3-7按服務器整合的月記錄表detailyears字段英文名字段漢字名類型約束條件說明logouttime整合時間TimestampLabip實驗室IPVarchar(24)Duration登錄時長long如表3-7所示,該表是按服務器整合的月記錄表該類表存儲整合數(shù)據(jù),其中不再存儲用戶登錄名等信息,按時間間隔分三種:一小時內(nèi)的數(shù)據(jù)整合成一條記錄。單獨存放在一張表中-天表。一天內(nèi)的數(shù)據(jù)整合成一條記錄。單獨存放在一張表中-月表。一個月內(nèi)的數(shù)據(jù)整合成一條記錄。單獨存放在一張表中-年表。注意:該表的查詢主要是運營商在統(tǒng)計運營情況的時候使用,使用頻率相對較低。設計的時候采用每種表各一張。
4.數(shù)據(jù)采集與整合子系統(tǒng)詳細設計及實現(xiàn)4.1數(shù)據(jù)采集類圖設計4.1.1數(shù)據(jù)采集客戶端圖4-1類結(jié)構概要說明如圖4-1所示,數(shù)據(jù)采集客戶端分為CollectionLaunchor,CollectionThread,DataCollector,LogRecord,MatchedRecord,LogDealer這幾個類,而LogDealer類實現(xiàn)了CollectionListener接口圖4-2類功能結(jié)構說明-時序圖類詳細說明CollectionLaunchor采集主程序類,發(fā)動采集線程??蛻舨杉瘑悠?,主要啟動采集線程,單獨啟動一個線程進行數(shù)據(jù)采集。在main函數(shù)中創(chuàng)建CollectionThread線程對象,并調(diào)用run函數(shù)啟動線程。該流程圖如圖4-3所示。圖4-3采集主程序類流程圖注意:該啟動器可以由用戶發(fā)起為一個后臺服務,也可以由Unix的定時服務發(fā)起,我們采用使用Unix發(fā)起的方式。用戶后臺服務發(fā)起的方式只需要把線程的運行方式改變成循環(huán)就是。CollectionThread采集線程,負責啟動采集過程。封裝一個采集線程。該類主要調(diào)用采集器類DataCollector進行數(shù)據(jù)采集。函數(shù)run():就是主要創(chuàng)建DataCollector對象,并調(diào)用其collection函數(shù)進行數(shù)據(jù)采集。該函數(shù)是Thread的run函數(shù)覆蓋函數(shù).函數(shù)start():負責啟動線程,該函數(shù)來自Thread線程類.注意:該線程是否循環(huán)決定采集器啟動的方式是否利用Unix的定時啟動功能,如果采用Unix的定時功能,則該線程采集完畢自動關閉清空。DataCollector負責采集環(huán)境的處理與數(shù)據(jù)采集,分析處理所有的采集任務有該類完成,主要獲取本機IP,復制備份并清空日志文件,讀取日志文件,解析日志文件,匹配處理日志登錄/登出記錄獲取用戶登錄時間,在線用戶下次匹配。圖4-5數(shù)據(jù)收集類圖函數(shù)getNativeIP讀取要采集服務器的IP,該IP用屬性文件配置。函數(shù)initlog()負責調(diào)用Runtime執(zhí)行mvshell指令進行日志文件的備份并清空原始文件。備份的文件名wtmpx+年(4位)+月(2位)+日(2位)+時(2位),比如wtmpx2008053013.注意:利用Unix系統(tǒng)的Kenerl函數(shù)讀取的時候,該文件必須采用x結(jié)尾,在這里用java處理就不需要。函數(shù)mappingLogBuffer主要把備份的日志文件映射為本地內(nèi)存緩沖,便于后面解析。參數(shù)是備份日志文件名,返回MappedByteBuffer.函數(shù)parseLogBuffer,負責解析緩沖的內(nèi)存結(jié)構,利用參數(shù)返回兩個Vector結(jié)構對象,一個存放登錄數(shù)據(jù),一個存放登出數(shù)據(jù),Vecotor中存放的元素類型是LogRecord.該類型請參考LogRecord類說明。函數(shù)activate負責把上次為匹配的數(shù)據(jù)讀取為Vector結(jié)構。便于后面匹配。參數(shù)是存放上次未匹配的登錄日志記錄,返回Vector結(jié)構,其中元素類型LogRecord。函數(shù)match,負責匹配登錄/登出數(shù)據(jù),并返回用戶登錄時間數(shù)據(jù)。參數(shù)是兩個Vector類型的登錄/登出數(shù)據(jù)結(jié)構,元素類型是LogRecord,返回的是匹配好的用戶登錄時長記錄,數(shù)據(jù)類型是Vector,其中元素類型是MatchedRecord,詳細說明請參考MatchedRecord類的說明。函數(shù)passivate,負責把這次沒有匹配好的登錄記錄保存成文件,以便下次采集的時候匹配。參數(shù)是沒有匹配好的登錄記錄,類型是Vector,其中元素類型是LogRecord.函數(shù)collect,負責整個采集過程。這是該類中的唯一的一個public函數(shù),主要供采集線程調(diào)用。圖4-4采集線程類流程圖LogRecord類,負責登錄/登出數(shù)據(jù)封裝。圖4-5LogRecord類圖MatchedRecord類,負責匹配好的數(shù)據(jù)的封裝。圖4-6MatchedRecord類圖CollectionListener接口,規(guī)范采集好的數(shù)據(jù)的處理方式。函數(shù)deal,負責匹配好數(shù)據(jù)的處理,返回void,參數(shù)是Vector類型,元素類型是MatchedRecord,是匹配好的所有登錄時長數(shù)據(jù)。LogDealer類,負責匹配好數(shù)據(jù)的發(fā)送處理,如果發(fā)送失敗,則數(shù)據(jù)被保存。該類主要實現(xiàn)CollectionListener接口。函數(shù)init,主要初始化服務器參數(shù),服務器參數(shù)使用屬性文件配置IP與Port。圖4-7LogDealer類流程圖函數(shù)initSocket,主要初始化網(wǎng)絡連接。如果初始化失敗,則保存數(shù)據(jù)退出函數(shù)send,主要負責數(shù)據(jù)發(fā)送。該函數(shù)先發(fā)送歷史失敗數(shù)據(jù)。函數(shù)deal,調(diào)用上面的三個函數(shù)完成整個處理過程。并接受服務器接收成功的標志。4.1.2數(shù)據(jù)采集服務器端圖4-8數(shù)據(jù)實體類圖4-9類結(jié)構概要說明-類圖如圖4-9所示,數(shù)據(jù)采集服務器端由ServerLauncher,DataRecieverTh,CollectionTh,DBEnvInit,DetailDAO,Detail這幾類以及BasicDAO<EntityType>接口組成。圖4-10類功能結(jié)構說明-時序圖類詳細說明:1)ServerLauncher類:服務器數(shù)據(jù)接受器啟動器ServerLauncher主要負責啟動服務器接受線程函數(shù)main,主要創(chuàng)建DataRecieverTh對象,并調(diào)用起其start函數(shù)啟動線程。2)DataRecieverTh類,服務器接受主線程。圖4-11DataRecieverTh類圖主要負責接受客戶連接,并為每個客戶啟動一個數(shù)據(jù)接收線程來進行客戶數(shù)據(jù)接收。該類繼承Thread。成員collectionth是Vector的靜態(tài)數(shù)據(jù)結(jié)構,負責保存所有客戶連接。其中元素類型是CollectionTh.成員serversocket服務器Socket成員dao封裝對數(shù)據(jù)的連接及其對數(shù)據(jù)表訪問封裝,具體說明參考DetailDAO說明。函數(shù)initSocket,負責網(wǎng)絡服務器的初始化。函數(shù)initDAO,負責數(shù)據(jù)庫連接初始化,并初始化數(shù)據(jù)訪問對象dao。函數(shù)init服務讀取數(shù)據(jù)庫連接擦參數(shù)的讀取,數(shù)據(jù)庫連接參數(shù)用屬性文件配置driver,url,user,password四個key-value鍵值對。該過程由DBEnvInit中兩個靜態(tài)函數(shù)完成。函數(shù)run是Thread類的覆蓋函數(shù),負責接收客戶連接,并建立客戶處理線程并啟動線程,并在collectionth中記錄該客戶線程處理對象。3)CollectionTh類,每個客戶數(shù)據(jù)接收處理類。圖4-12CollectionTh類圖該類主要接收采集器發(fā)送過來的數(shù)據(jù),接收成功后發(fā)送一個成功標志,然后保存接收的數(shù)據(jù)。該類繼承Thread。函數(shù)run接收線程過程,主要調(diào)用receive私有函數(shù)。函數(shù)recieve,通過inputstream讀取數(shù)據(jù),并發(fā)送成功標記,然后調(diào)用全局的dao保存數(shù)據(jù)。4)DBEnvInit類,數(shù)據(jù)庫環(huán)境初始化類圖4-13DBEnvInit類圖該類封裝了兩個函數(shù)工具,完成對數(shù)據(jù)庫的連接。函數(shù)getDBParamter,負責從屬性文件讀取數(shù)據(jù)庫連接參數(shù)。函數(shù)getConnection,負責根據(jù)連接屬性打開與數(shù)據(jù)庫的連接。注意:該工具可以提供對數(shù)據(jù)源的支持,在后繼版本中提供數(shù)據(jù)源與Hibernate的支持描述。5)DetailDAO類圖4-13DetailDAO類圖提供對Detail數(shù)據(jù)庫的插入等操作訪問。函數(shù)insert負責把接收到的數(shù)據(jù)插入到數(shù)據(jù)庫。6)BasicDAO<EntityType>泛型類封裝對數(shù)據(jù)庫訪問最常用的規(guī)范。在后面的DAO類,缺省必須實現(xiàn)該接口。7)Detail類,采集數(shù)據(jù)原始記錄實體類。該類與MatchedRecord完全一樣,在設計的時候為與客戶端分開,故意設計成實體類,主要便于使用Hibernate。Detail類對應數(shù)據(jù)庫中對應的t_detail_x31張表。4.2數(shù)據(jù)整合類圖設計圖4-14數(shù)據(jù)實體類結(jié)構圖圖4-15數(shù)據(jù)整合類結(jié)構概要說明如圖4-15所示,數(shù)據(jù)整合端由ServerLauncher類,DataIntegratorTh類,Integration接口,IntegrationByCall類,IntegrationByClient類,IntegrationFactory類,DBEnvInit類以及DetailYearDAO,DetailMonthDAO,DetailDayDAO,IntegratedDetailDayDAO,IntegratedDetailMonthDAO,IntegratedDetailYearDAO這些類組成。圖4-16時序圖類詳細說明ServerLauncher類:整合啟動程序類。DataIntegratorTh類:整合線程,主要完成整合的調(diào)用。Integration接口:整合接口規(guī)范IntegrationByCall類:整合的存儲過程調(diào)用實現(xiàn)IntegrationByClient:整合的Java調(diào)用實現(xiàn)。IntegrationFactory類:利用工廠模式產(chǎn)生的一個類,負責產(chǎn)生整合對象。DBEnvInit類:見數(shù)據(jù)采集存儲中的說明。DetailYearDAO,DetailMonthDAO,DetailDayDAO,IntegratedDetailDayDAO,IntegratedDetailMonthDAO,IntegratedDetailYearDAO負責每個表的整合。注意:整合過程分兩類:根據(jù)客戶整合。根據(jù)實驗室整合。由于整合過程就是數(shù)據(jù)庫分組統(tǒng)計查詢與數(shù)據(jù)插入操作,所以設計中其邏輯流程沒有設計。4.3開發(fā)準備4.3.1系統(tǒng)開發(fā)的軟件環(huán)境開發(fā)系統(tǒng)所用的軟件環(huán)境為:操作系統(tǒng):WindowsXPProfessionalSP2/linux/unix客戶端瀏覽器:InternetExplorer7.0/firefox4.3.2開發(fā)工具使用開發(fā)工具有:開發(fā)平臺:MyEclipse6.0.1Java版本:jdk1.6.0_05數(shù)據(jù)庫服務器:MySQL5.04.4系統(tǒng)發(fā)布本系統(tǒng)通過GUI完成系統(tǒng)界面,在界面上完成業(yè)務,已基本實現(xiàn)系統(tǒng)所有功能。圖4-17系統(tǒng)界面如圖4-17所示,系統(tǒng)主要分為系統(tǒng)說明,建庫/表,數(shù)據(jù)模擬源,采集服務器端,采集客戶端,數(shù)據(jù)整合這幾個選項卡,而系統(tǒng)的執(zhí)行順序是從左向右執(zhí)行。圖4-18建庫/表的執(zhí)行如圖4-18所示,用戶輸入相應的參數(shù)建立數(shù)據(jù)庫/表,然后點擊建庫/表按鈕來運行程序。參數(shù)解釋:IP:MYSQL所在服務器的IP地址,目前都是本機回旋IP端口:MYSQL服務端口,MYSQL的端口默認3306用戶:MYSQL的用戶名密碼:MYSQL用戶密碼庫名:采集系統(tǒng)的數(shù)據(jù)庫名解碼集:數(shù)據(jù)存儲傳輸采用的解碼集圖4-19建庫/表運行圖如圖4-19所示,建庫/表成功!建表成功后,接下來就是數(shù)據(jù)源模擬,如圖4-20所示,填入相應的參數(shù),然后點模擬數(shù)據(jù)遠端按鈕,運行程序。圖4-20數(shù)據(jù)模擬源界面如圖4-21,數(shù)據(jù)源模擬器啟動。圖4-21數(shù)據(jù)源模擬程序運行界面數(shù)據(jù)源模擬器啟動成功后,不要關閉它,而是繼續(xù)運行下一個程序,采集服務器端的運行。圖4-22采集服務器端界面如圖4-22所示,填寫相應的參數(shù),然后點擊運行服務器端。圖4-23采集服務器端啟動采集服務器端啟動成功后,同樣不要關閉它,而是繼續(xù)運行下一個程序——采集客戶端。圖4-24采集客戶端界面如圖4-24所示,填寫相應的參數(shù),運行客戶端。圖4-25采集客戶端啟動如圖4-25所示,采
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年幼兒園食品安全管理協(xié)議書
- 合作投資合同書示例
- 廣州市勞動合同范本參考
- 2024燈飾采購合同范文
- 安徽省淮南市七年級上學期語文期中試題3套【附答案】
- 提升機租賃合同樣式
- 2024抵押貸款合同協(xié)議書樣式
- 6.2 共筑生命家園(導學案) 2024-2025學年統(tǒng)編版道德與法治九年級上冊
- 購房合同協(xié)議書范本
- 倉庫租賃合同樣本
- 有色金屬熔煉與鑄錠課件
- 阻生牙拔除的護理
- 安徽省蕪湖市七年級上學期語文期中試卷(含答案)
- 兩癌知識科普課件
- 食用菌現(xiàn)代高效農(nóng)業(yè)示范園區(qū)建設項目建議書
- 東營港加油、LNG加氣站工程環(huán)評報告表
- 2024年日歷(打印版每月一張)
- 車用動力電池回收利用 管理規(guī)范 第2部分:回收服務網(wǎng)點征求意見稿編制說明
- 新劍橋少兒英語第六冊全冊配套文本
- 科學預測方案
- 職業(yè)生涯規(guī)劃網(wǎng)絡與新媒體專業(yè)
評論
0/150
提交評論