摘要: 該文介紹了Lotus Domino/Notes與關系型數據庫的一種通用連接方法。通過在瀏覽器端的動態配置,提取關系型數據庫中的數據,可以協助開發人員或系統管理員在WEB方式下實時地發布信息。
關鍵詞:動態接口;Lotus Domino/Notes;RDBMS;ODBC
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)27-1879-02
The Designing of General Purpose Interface Between Domino/Notes and RDBMS
ZHAO Lei1, HU Ai-jun1,2, XIANG Feng-hong1
(1.Faculty of Information Engineering and Automation,Kunming University of Science and Technology,Kunming 650051,China;2.Yunnan Copper CO.,Ltd.,Kunming 650102,China)
Abstract: This paper introduces a general purpose interface between Domino/Notes and RDBMS. The designers and administrators can dynamically get data in RDBMS and issue information based on WEB by configuring in the browser.
Key words: general purpose interface; Lotus Domino/Notes; RDBMS; ODBC
1 前言
隨著計算機技術和通訊技術的不斷發展、完善,各種信息系統得到廣泛應用。在這些系統中,如信息管理系統(MIS)、企業資源計劃系統(ERP)、客戶關系管理系統(CRM)等系統大多基于關系型數據庫,難以處理非結構化數據,如表格、文本和多媒體信息等;而基于Domino/Notes為開發標準辦公自動化系統,擅長處理工作流和非結構化數據,但對數據的分析、統計能力較弱[1]。
因此,設計人員需要設計二者的接口程序以便結合二者優點實現企業的信息共享。出于實際需要,企業往往先開發基于關系型數據庫的信息系統后設計辦公自動化系統,所以接口是Domino/Notes開發環境下設計的。這個過程中,這種接口只針對某一具體的關系數據庫、數據庫中的某個表及表中某幾個字段設計報表。如果要分別提取多個關系數據庫中的數據則要重新設計程序。除此以外,如果在開發過程中發生需求變更或者進行系統升級,設計人員需根據所變化數據的內容再次編寫代碼并調整報表內容。
如此程序缺乏可移植性,造成大量的人力、物力的浪費。在解決上述問題中,作者基于Domino/Notes環境,構造一個適用于不同關系數據庫接口并使之能夠根據用戶的需求由用戶靈活定義獲取數據內容。
2 接口設計
2.1 設計思路
該接口能夠讓用戶在瀏覽器端自行選擇數據庫,并按照選中的數據庫提取其中的表及其相關的多個字段名。通過這些信息的靈活選擇,用戶能夠在一個指定文檔的RTF域中生成一個動態的報表。由此,該接口滿足了隨用戶業務發生變化報表也跟隨發生變化的要求。
2.2 Domino/Notes與關系數據庫連接的方法
Domino/Notes與關系數據庫的連接一般可分為用可視化工具連接或編程連接。可視化工具通常有LEI(企業連接器)、DESC(Domino企業連接服務)等[1]。然而結合企業的實際情況,應用這些工具需要再次投入資金和人力,并且在WEB方式下難于根據用戶需求進行設計。與上面可視化工具相比,編程的方式應用靈活、功能強大,可以按用戶具體要求使用多種開發語言,如LotusScript和Java類進行程序設計。
LotusScript是一種面向對象的程序設計語言,作者在開發過程主要用到NotesSession類(當前數據庫會話類)、NotesDatabase類(文檔數據庫類)、NotesDocument類(數據庫文檔類)和與ODBC數據源關聯的類:ODBCConnection類(用于拆除、建立與ODBC的連接,訪問數據庫)、ODBCQuery類(ODBC數據庫查詢類,定義SQL語句)、ODBCReslutSet類(執行并返回ODBC數據庫查詢結果集)[2]。
2.3 數據源連接
Domino/Notes支持HTML、XML、JavaScript等語言與Domino/Notes元素混合使用,參與對瀏覽器端的頁面進行設計[3]。通過Domino/Notes自身的公式語言:@Command([ToolsRunMacro]; \"代理名稱\") 在服務器端調用代理,在瀏覽器端提取相應變量,與關系型數據庫進行數據的交互。
1) 數據源名稱提取
在Web頁面調用代理,通過Domino服務器訪問ODBC數據源,把數據源中的所有數據源名稱存儲在當前Domino數據庫相應的“Dbsource”文檔中。主要代碼如下:
dsnList=con.ListDataSources '//con 為ODBCConnection類
For n = Lbound(dsnList) To Ubound(dsnList)
subdsnList=dsnList(n)
Set doc = New NotesDocument(db)
doc.form = \"Dbsource\"
doc.DbSourceName=dsnList(n)
Call doc.save(True,False)
Next
2) 表名、字段名提取
同理,根據主文檔中數據源名稱,輸入對應數據庫的用戶名稱、密碼,提取出該數據庫中的所有表名。并選中其中一個表,把需要的字段名稱選擇出來。表名的數據儲存在“Dbsource”文檔的“答復文檔”中,即“Table”文檔。而字段名稱的數據則儲存在“答復的答復文檔”中,即“Field”文檔。
3) 與數據源的連接
最后用創建一個與ODBC數據源的連接“Connect”視圖,可以在Web頁面中通過用@DBcolumn和@Dblookup調用“Connect”視圖中的數據,配置與ODBC數據源的動態連接。
2.4 報表設計
上述動態ODBC數據源連接配置成功后,用戶根據業務要求,連接數據庫并對所需的數據庫中的表、字段自行提取,選擇完畢后自動生成相應的Web報表。以下是連接數據庫后提取數據生成報表的一個代碼樣例。
Set a = New NotesRichTextItem(doc,\"result_list\")
Do
Call result.NextRow()
num = num + 1
a.AppendText(\"[<tr v align=middle bgcolor=#FFFFFF>]\")
i = 0
Do While i<n
FieldName(i)=doc.getitemvalue(\"FieldName\")(i)
a.AppendText(\"[<td>]\" result.GetValue(FieldName(i)) \"[</td>]\")
i=i+1
Loop
LoopUntil result.IsEndOfData
Call con.Disconnect()
a.AppendText(\"[<tr v align=middle bgcolor=#FFFFFF>]\")
a.AppendText(\"[<td height=30 colspan=6>][<div align=right>]合計:共有 [<font color=#FF0000>]\" num \"[</font>] 條記錄 [</font>][</div>][</td>]\")
a.AppendText(\"[</tr>]\")
在ODBC數據源連接以后,程序按照用戶對報表的定義查詢出相關的數據并加以統計,然后以HTML的形式生成報表并存放在一個RTF域中。
3 在實際中的應用
通過以上設計,即可根據用戶的需要實現文檔型數據庫和關系型數據庫中的數據連接,并動態地把報表以Web的方式發布在網頁上。
如圖1是按照某電力公司的要求從電力營銷系統中提取變壓器數據導入業擴報裝系統生成的報表。通過這種方法節約的設計時間,并且使兩個基于不同數據庫先后開發的系統緊密的結合為一體,方便了用戶的使用和以后的功能擴展。

當該報表需要公文流轉時,用戶可以按照標準的公文流轉的步驟對報表進行查看、審批,實現對報表的文件留痕。而開發人員可以利用ACL(存取控制列表)對該接口的使用者進行權限控制,賦予企業中信息部門對報表的設計權限,在對報表信息發生變更時,用戶可以自行設計報表內容。由此滿足了對系統的遠程管理,可以使辦公自動化系統同時與多個基于關系型數據庫信息系統進行數據交互,提高了工作效率,降低軟、硬件的投入成本。
4 結束語
企業信息化集成過程可以采取多種技術路線,本文提供了一種基于Domino/Notes的接口技術。該項技術針對多個關系型數據庫的連接問題,充分結合Domino/Notes的公式語言、LotusScript與JavaScript的各自優勢,通過自身的固定域和控制域傳遞數據信息,實現了在瀏覽器端對關系型數據庫中數據的動態提取、報表的動態變更。使設計人員能夠在以Domino為平臺的辦公系統或企業網站上充分利用現有資源發布動態信息。
參考文獻:
[1] 陳山.Lotus Domino Designer 6 企業應用程序高級開發[M].北京:中國水利水電出版社,2004:56.
[2] 林琳,年軼.政府辦公與信息處理系統的設計與實現[J].微機發展,2007(11).
[3] 李勝利,林文華.Html在基于Web辦公自動化系統的應用[J].哈爾濱理工大學學報,2006(6).