電子公文管理系統設計與實現
通過分析比較,系統采用了一個折中方案:對于除正文以外的其它元素,如標題、發文機關、年份等,在數據庫中分別在不同字段中分離存儲,以方便用戶的查詢;同時又將文檔本身進行存儲,以便于公文的恢復。該方案以一定的存儲開銷為代價,較好地照顧了查詢操作和公文恢復操作。因為除正文以外的其它元素內容很少,通過數據庫中的日期型字段、 varchar字段等即可滿足要求,因此引入的額外開銷非常小。實驗部分證明了該方法的有效性。
公文文檔存放在oracle中的blob字段中,具體是通過delphi中tblobfield類的loadfromfile()和savetofile()方法實現了數據庫的存入和讀出。
3.2 公文內容的自動解析和批量歸檔
為了解決在公文歸檔過程中手工輸入各種元素信息的效率問題,系統實現了公文內容的自動解析。根據公文格式規定,通過程序對指定的公文進行自動分析,解析出各種元素的內容,然后自動填入數據庫。
delphi提供了兩個類:twordapplication和tworddocument[3]。前者可以連接到ms word應用程序中,后者可以連接到一個word文檔。公文中的每一段、每一行以及每一個表格,都可以通過tworddocument對應的如paragraph、line
以及table對象等獲得。根據公文承辦規定中對相關元素位置、格式的定義,配合識別元素的關鍵詞信息,通過逐段逐行分析,就可以解析得到元素內容。
實現了對一個公文的解析功能,再配合findfirst、findnext以及findclose等windows的api函數的遞歸調用,就可以查找指定路徑下(包括子目錄)的所有word文檔,然后逐一對之進行解析并將分析結果入庫,就可以實現公文批量歸檔的功能。
公文內容自動解析及批量歸檔功能的實現,簡化了公文歸檔的工作量,用戶只需指定文件或者路徑,系統即可自動完成剩余工作,大大提高了公文歸檔的效率。
3.3 基于內容的全文檢索查詢
指定通過公文標題、發文機關等元素內容,查找滿足條件的公文,是基本的數據庫查詢操作,比較容易實現。但是在公文的查找中存在一類需求,即用戶只記得公文的大致內容,如公文內容中包含的幾個關鍵詞,但是關于公文更詳細的內容如發文時間、發文機關名稱等并不清除。在這種情況下需要對公文進行基于內容的全文檢索查詢。
該功能的實現流程如圖2所示。對數據庫中的每條記錄,均先將對應的word文檔保存到本地,然后用delphi的tworddocument類打開。tworddocument類的content屬性為range對象,調用其find.execute()方法可以在該范圍內進行文本查找,功能與word應用程序中調用“編輯-查找”功能菜單一樣,不僅可以進行基本的查找,還可以通過參數控制在查找過程中是否區別大小寫、是否使用通配符等。如果匹配成功,則該方法返回true,系統為該條記錄做好標記,作為查詢結果中的一條進行顯示。當數據庫中所有的記錄都處理完后,查詢處理結束,所有被標記的記錄均為滿足條件的結果,即內容中包含指定關鍵詞的公文。
3.4 文檔版本控制
“臨時公文管理”模塊主要是將正在撰寫尚未正式定稿的公文存放到數據庫中進行備份,同時支持同一稿件在撰寫修改過程中產生的多個不同版本維護功能。文檔修改前后的比較、版本控制是這一模塊的主要技術點。