基于web的文件集成技術在管理信息系統中的應用_第1頁
基于web的文件集成技術在管理信息系統中的應用_第2頁
基于web的文件集成技術在管理信息系統中的應用_第3頁
基于web的文件集成技術在管理信息系統中的應用_第4頁
基于web的文件集成技術在管理信息系統中的應用_第5頁
已閱讀5頁,還剩5頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于web的文件集成技術在管理信息系統中的應用

近年來,隨著計算機技術和網絡技術的快速發展,所有主要公司都開始建設新的信息系統(mis)或對現有系統進行升級。管理信息系統一般都有功能強大的后臺數據庫,這些數據庫不但支持結構化數據,而且還可存儲各種文檔數據。在管理信息系統中,文檔資料的存儲方式有兩種:(1)以文件系統的方式存放在磁盤中,數據庫列中存儲一個指針(通常是一個統一資源定位器——URL鏈接)以引用正確的文件;(2)直接將文檔資料看作二進制數據塊存放在數據庫中。第(1)種方式程序編寫簡單,但安全性不高,磁盤中的文件容易感染病毒或被用戶誤操作;數據維護比較麻煩,一般要分為兩步操作:維護文檔的相關信息以及將文檔拷貝到服務器的指定目錄。第(2)種方式正好相反,程序編寫相對來說較困難,且占用了后臺數據庫系統的資源,但其優勢也是明顯的:①易于保持與文檔相關的其他數據項的同步;②數據的存儲方式統一,易于管理;③通過數據庫系統,對格式化的基于文本的數據(Word或Excel文檔)執行全文本搜索(FTS)操作;④提高系統安全性,也方便了用戶的操作。綜上所述,這兩種方式各有利弊,相比之下第(2)種方式更加科學、合理。1系統總體結構的設計在企業中,文檔資料一般都是由特定部門進行統一管理,包括創建、修改、審批、權限控制、刪除等操作,而文檔的查看則分布在企業各個部門,不同部門、職位的員工查看文檔的權限不同。從使用的角度上,企業的文檔管理系統可以分為兩大模塊:文檔操作模塊和文檔瀏覽模塊。(1)文檔操作模塊要求:安全性高;具有較強的交互性;處理大量數據。其特點是使用范圍小,用戶辦公地點固定,因此,文檔操作模塊適合采用傳統的C/S結構。文檔操作模塊可以與企業原有的MIS系統整合,作為MIS的一個相對獨立的模塊存在。(2)文檔瀏覽模塊的特點是使用范圍廣,地點靈活;安全性、交互性要求不高,如果通過傳統的基于C/S結構進行設計,實現起來不但不科學,費用也將比較昂貴。因此,對于文檔瀏覽部分,采用基于Web的B/S結構。整個文檔管理系統充分利用C/S結構和B/S結構的各自優點,保證了系統的安全性和靈活性。整個系統結構如圖1所示。圖1的中間部分是企業數據庫,是連接文檔操作模塊和文檔瀏覽模塊的樞紐,也是文檔數據的存放地。由于各種文檔的格式類型不一,在數據庫中,文檔通常被視為二進制數據塊,也稱作BLOBs(二進制大對象),如Oracle中為LongRaw類型;在SQLServer中,存儲BLOBs的數據格式有Binary,Varbinary和Image。Binary存儲固定長度的二進制數據,大小不超過8KB,Varbinary與Binary不同是可變長度。Image存儲可變長度字符型數據,大小為0~2GB。由于文檔的大小一般都超過8KB,因此,我們一般用Image類型來存儲BLOBs。在實際的設計中,通常建立兩個表來保存文檔數據,一個表保存與文檔相關的信息,如文檔標題、關鍵詞、創建人等信息,另一個表保存文檔內容,兩個表通過主外鍵關聯。用戶對文檔的的操作集中在第一個表,需要操作文檔內容的時候,才通過外部鍵關聯第二個表,這是因為第二個表中的BLOBs字段數據量大、讀取時間較長。將BLOBs字段存儲在獨立的表中,將會提高系統的性能。圖1中右部分是文檔操作模塊,它是通過基于C/S結構的應用程序來實現的,其核心功能是實現對存放在數據庫的文檔內容進行增、刪、改的操作,技術難點就是如何高效操作數據庫中的大字段。很多高級編程語言都支持大字段的操作,如VC++中的MFC中就有CLongBinary和CByteArray,但大多操作復雜且執行效率不高。在第2節中將介紹一種便捷、高效的方法,它是通過ADO中的Stream對象和Recordset對象,實現數據庫中文檔的存取。圖1中左部分是文檔瀏覽模塊,通過Web的瀏覽方式,局域網內、外用戶都可以很方便地查看文檔的相關信息,并可以直接從FTP服務器下載文檔資料。由于文檔的瀏覽用戶可能分布在世界各地,特別是大型企業,通過Web的瀏覽方式可以說是最佳的選擇。當用戶向WWW服務器提交查詢文檔文件信息的請求時,WWW服務器從企業數據庫中查詢得到相關的文檔信息,同時將文檔下載到FTP服務器,WWW服務器將文檔的相關信息反饋給用戶,同時提供了文檔下載的FTP地址,用戶就可以通過FTP下載文檔資料了。文檔瀏覽過程的示意圖如圖2所示。采用基于數據庫C/S結構和B/S結構相結合的系統方案,具有以下優點:①保證敏感數據的安全性,特別是加強了對數據維護的控制;②經濟有效地利用企業內部計算機的資源,簡化了客戶端;③既保證了復雜功能的交互性,又保證了一般功能的易用與統一;④系統維護簡便、布局合理、網絡效率高。2關鍵技術和方法的實現2.1ado2.5添加兩種形式的驅動ADO(ActiveXDataObjects)是連接應用程序和OLEDB(一套組件對象模型接口,提供對存儲在不同信息源進行統一訪問)的橋梁。ADO包含的對象有:Connection,Command,Recordset,Record,Stream,其中后兩個對象在ADO2.5版本后有,這些對象在數據庫操作中擔任不同的角色。(1)Connection對象建立與數據源的連接。(2)Command對象定義了將對數據源執行的指定命令。(3)Recordset對象表示的是來自基本表或命令執行結果的記錄全集。(4)Record對象表示的是Recordset對象或數據引擎提供的數據的一行,或者是半結構化數據引擎提供的對象,如一個文件或目錄。(5)Stream對象表示的是二進制數據或文本的流。2.2文獻大小比較Stream對象提供讀、寫和操作字節流的一種方法,字節流可能是文本或二進制,其大小只受限于系統資源(SQLServer中大小不超過2GB)。Stream對象提供了一組讀寫文件的方法和屬性,現選其中比較重要的方法和屬性進行說明。2.2.1重要的妥協方法(1)eam對象的數據來源打開Stream對象來對二進制或文本流的Stream進行操作。參數說明如下:●Source可選,Variant類型,指定Stream對象的數據來源,可以是URL或已打開的Record對象?!馦ode可選,ConnectModeEnum(枚舉)類型,指定打開方式。●OpenOptions可選,StreamOpenOptionsEnum(枚舉)類型?!馯serName可選,String類型,訪問Stream對象的用戶名。●Password可選,String類型,訪問Stream對象的密碼。(2)將本地文件上傳到服務器,尋求本地文件。或在平臺上上傳本將已經存在的文件的內容裝入Stream對象?!馞ileNameString類型,待裝入Stream的UNC格式的文件路徑和名稱的字符串,如果指定的文件不存在,則觸發運行錯誤。說明:這個方法是用來將文件內容讀到Stream對象中,對于上傳本地文件到服務器很有用。調用該方法前,Stream對象必須是打開狀態。(3)本地數據安全將Stream對象中的二進制內容保存到文件中?!馞ileNameString類型,Stream對象要導入的文件的路徑,可以是本地磁盤,也可以是UNC指定的有訪問權限的路徑。●SaveOptionsSaveOptionsEnum(枚舉)類型,指定文件創建方式。說明:這個方法可以用來拷貝Stream對象中的內容到本地文件。在調用該方法之前,Stream對象必須是打開的。(4)讀取指定數量的文本Read是從二進制Stream對象中讀取指定字節數的數據;ReadText是從文本Stream對象中讀取指定數量的字符串?!馧umBytes可選,Long類型,指定讀取的字節數;返回已讀取的數據,Variant類型?!馧umChars可選,Long類型,指定讀取的字符數;返回已讀取的數據,String類型。(5)文本字符類型Write是給二進制Stream對象寫二進制數據;WriteText則是給文本Stream對象寫文本字符串。●BufferVariant類型,待寫的數據的字節組?!馜ataString類型,待寫的文本字符串?!馩ptions可選,StreamWriteEnum(枚舉)類型,表示是否在待寫文本字符串后添加行分隔符。(6)鄰近關閉一個打開的Stream對象及附屬對象,釋放相關的系統資源。2.2.2繼承對象的重要屬性(1)那就有點StreamTypeEnum(枚舉)型數據,表示Stream對象中數據類型(二進制還是文本)。(2)小型Long型數據,表示Stream以字節單位的大小,-1表示Stream的大小未知。2.3工藝文檔管理系統2.3.1基于數據庫的方法在制造企業中有各種各樣的文檔資料,如工藝圖紙文檔、結構設計文檔等,如何有效管理和控制這些文檔資料,直接影響企業研發的效率,因此,大企業都很重視文檔資料的管理。一般,文檔的維護集中在公司總部,而文檔的瀏覽分布在國內外各研究所、分公司,他們與公司總部的連接主要通過DDN專線方式,少數是通過撥號上網連接。企業內文檔數量龐大達數千個甚至上萬個,總容量超過1GB。這些文檔,還有與其緊密相關的信息,都必須不定期地進行維護和更新。企業原來有一套系統,是基于LotusNotes開發的,以前文檔數據量不多,而且訪問量較小,基本上能夠滿足用戶的需要。但隨著企業規模的迅速發展,文檔數量及訪問量大幅度增加,導致系統性能急劇下降,必須開發一套高效的文檔管理系統以適應企業發展的需求。在充分了解用戶需求的基礎上,我們采用了基于數據庫的C/S結構和B/S結構相結合的解決方案,略有不同的是此系統的WWW服務器和FTP服務器在物理上是同一臺機器,同時提供WWW和FTP服務。經實踐證明,上述方案是解決此類問題最理想的選擇,系統投入使用后,受到用戶一致好評。該系統主要由兩個模塊組成:文檔管理模塊和文檔瀏覽模塊。文檔管理模塊是在原有的MIS基礎上增加的,實現文檔資料及相關信息維護、各級領導審批、自動歸檔等功能,為了和原有的MIS系統的開發平臺保持一致,該模塊的開發平臺是VC++6.0和SQLServer2000。文檔瀏覽模塊是新增加的模塊,采用Microsoft的最新開發平臺VisualStudio.NET,Web服務器的平臺是Win2000和InternetInformationServer(5.0)。2.3.2ado的s字段因限于篇幅,本文在此只對一個含有BLOBs字段的簡單表進行操作,包括ADO的數據庫連接、C/S模式的文檔上傳和下載、B/S模式的文件下載等關鍵子模塊進行程序說明。(1)[文件保存文件數據假定我們已經在pubs數據庫中建立了一個表FileInfo。CREATETABLE[FileInfo]([FileName][nvarchar](255)COLLATEChinesePRCCIASNOTNULL,[FileData][image]NOTNULL)ON[PRIMARY]TEXTIMAGEON[PRIMARY]其中,FileName字段保存文件名稱,是表的主鍵,FileData字段存放文件數據。(2)afxol-gapp調用AfxOleInit()來初始化COM庫,通常在CWinApp::InitInstance()的重載函數中完成。示例代碼如下:BOOLCFileMagApp::InitInstance(){AfxOleInit();…接著引入ADO類型庫,在stdafx.h文件中加入語句實際的編程環境中msado15.dll不一定在這個目錄下,按實際情況進行修改。(3)基于ado的sql命令通過ADO的Connection對象建立pubs數據庫的連接。利用建立好的數據庫連接,通過ADO的Recordset對象執行SQL命令:SELECTFileName,FileDataFROMFileInfo,獲得結果記錄集mpRecordset。(4)eam對象初始化Stream對象后,我們對文檔進行操作,因此將Stream類型設置為二進制,通過Open方法打開Stream對象。StreamPtrpStream=NULL;pStream.CreateInstance(uuidof(Stream));pStream->PutType(adTypeBinary);pStream->Open(vtMissing,adModeUnknown,adOpenStreamUnspecified,bstrt(″″),bstrt(″″));(5)表1:msearchemortgage,maplechs->adaffectell通過Stream對象的LoadFromFile和Read方法,將Client端的文檔內容讀入Stream對象中,通過Recordset對象將文檔內容存入數據庫。CFileDialogmfileDlg(TRUE);if(mfileDlg.DoModal()==IDOK){CStringmstrFileName=mfileDlg.GetFileName();CStringmstrPathName=mfileDlg.GetPathName();//將文件的內容讀入Stream對象中pStream->LoadFromFile(bstrt(mstrPathName));//增加一行空白記錄mpRecordset->AddNew();mpRecordset->Fields->GetItem(variantt(″FileName″))->Value=variantt(mstrFileName);//讀取Stream對象中的數據,并給“FileData”字段賦值mpRecordset->Fields->GetItem(variantt(″FileData″))->Value=pStream->Read(adReadAll);//保存新增記錄mpRecordset->UpdateBatch(adAffectAll);mpRecordset->putrefActiveConnection(NULL);}(6)pstro統一計算公式通過Stream對象的Write和SaveToFile方法,將保存在數據庫中的文檔內容保存到Client端臨時文件目錄下。TCHARmTempPath;GetTempPath(255,mTempPath);CStringmstrFilePath=mTempPath+mstrFileName;pStream->Write(mpRecordset->Fields->GetItem(variantt(″FileData″))->Value);pStream->SaveToFile(bstrt(mstrFilePath),adSaveCreateOverWrite);ADO中對象使用完畢,必須調用Close方法來釋放內存。pStream->Close();pStream=NULL;(7)查詢結果的生成與C/S模式文件下載模塊類似,不同的是在.NET平臺上開發。在ADO.NET中,有專門面向SQLServer操作的對象,使得應用程序與SQLServer數據庫的操作更加簡單。使用FileStream類,將文檔內容寫入FTP服務器工作目錄。C#源代碼如下:publicvoidDownLoadFile(stringfpath)//fpath為FTP文件下載目錄{stringmstrcon=″server=;database=pubs;UID=sa;PWD=;″;SqlConnectionmyConnection=newSqlConnection(mstrcon);myConnection.Open();//通過SQL語句直接查詢stringmstrSQL=″SELECTFileName,FileSize,FileDataFROMFileInfo″;SqlDataAdaptermyCommand=newSqlDataAdaptermstrSQL,myConnection);//將查詢結果存放入DataSet中DataSetds=newDataSet();myCommand.Fill(ds);myConnection.Close();//關閉數據庫連接//對查詢結果進行逐行遍歷for(intindex=0;index<dt.Rows.Count;index++){//取出一行記錄DataRowdr=dt.Rows[index];longlen=((byte)dr[″FileSize″]).Length;stringfname=fpath+″\″+dr[″FileName″].ToString();/*創建FileStream對象,將“FileData”字段的數據寫入FileStream對象*/FileStreamfs=newFileStream(fname,FileMode.Create,FileAccess.Write);fs.Write((byte)dr[″FileD

溫馨提示

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

評論

0/150

提交評論