盛太平 孫輝
【摘 要】Domino是目前辦公自動化系統的主流開發平臺之一,Domino自帶一個非關系型數據庫即文檔型數據庫,而目前大多數集團化財務管控信息都使用諸如SQL Server、oracle等關系型數據庫,因此,集團信息化建設勢必要涉及如何把Domino導入到oracle數據庫的問題。Domino與關系數據庫之間的相互交換信息,相互融合的技術伴隨著實際應用的不斷增加,其技術也日漸成熟。本篇文章主要介紹的是Domino與oracle數據庫的融合,以這案例為模版來研究,這對Domino與關系數據庫之間在未來的交流發展上廣泛的應用前景。
【關鍵詞】Domino 關系數據 oracle數據庫 相互融合
【中圖分類號】TP311.13 【文獻標識碼】A 【文章編號】1672-5158(2013)03-0103-02
前言
Domino擁有一個文檔數據庫管理系統,擅長于存儲非結構化信息,并提供全文檢索、版本控制、留痕跡修改功能,有別于一般的關系型數據庫,如oracle、mysql、SQL server等,對單一的消息和工作流系統來說是不錯的架構,由于對關系數據處理能力非常弱,相對于關系型數據庫數據維護困難,查詢和數據統計效率就比較低下,如果想做較大規模的業務整合或者業務開發,會是困難重重,因此與關系型數據庫如何的融合是個課題。
1 Domino重要概念介紹
Domino是一種群組工作軟件。使用了Domino的服務器稱為Domino服務器。Domino的功能強大,界面豐富,主要用于輔助多人協同工作,從而突破平臺、技術、組織和地理上的限制,充分實現信息與技術方面的共享。Domino系統的的關鍵專業術語有:組織單元,人員,服務器,驗證字,驗證者,標識符,目錄,Domino域等等。組織單元(Orgnization Unit)類似就是相當于現實生活中單位內部的一個部門或者單位的一個分支機構。在Domino環境中,人員就是Domino系統的用戶。服務器(Server)是用于存放數據信息的計算機。驗證字(certificate)在Domino環境中的組織單元,人員等都必須要有自己的驗證字,才能用在互相訪問和信息交換中驗證自己的身份。驗證者(Certifier)又名證明者,證明人,在DOMINO環境中,組織和組織單元被稱為驗證者,組織驗證者是最高級別的驗證者,組織單元驗證者是由組織驗證者產生的,人員和服務器的驗證字是經過組織或組織單元驗證者驗證后產生的。標識符(ID)是把組織,組織單元,人員,服務器的驗證字有關信息,保存在一個后綴名為ID的磁盤文件中,這個文件就是組織,組織單元,人員或服務器的ID。Domino目錄用來存放組織,組織單元,人員,服務器及其配置信息的數據庫,其文件名一般是names.nsf。Domino域(Domino domain)共享同一個Domino目錄的一組Domino服務器。簡而言之就是使用同一個names.nsf的一組Domino服務器。
2 Domino 與關系數據庫的融合關鍵
關系數據庫,是建立在關系模型基礎上的數據庫,借助于集合代數等數學概念和方法來處理數據庫中的數據,標準數據查詢語言SQL就是一種基于關系數據庫的語言,關系模型是由關系數據結構、關系操作集合、關系完整性約束三部分組成。
在項目開發過程中,Domino很多功能需要Java代理及外接數據庫才好實現,核心的問題是:如何把原先的關系型數據庫中的內容全部導入Domino 中是因為企業現在的所有數據都集中在一個關系型數據庫中,因此希望domino數據庫能與舊的關系庫互操作,而不必在數據庫轉換上浪費更多資源。對于企業來說,如果企業數據存放在不止一個關系庫中,那么就需要購買若干個此類產品,而且實現過程較為復雜。
因此能否通過Lotus Script編寫一個通用的數據庫轉換程序就成為系統開發的關鍵之一。具體解決方法如下:
第一步 在控制面板——>32位ODBC數據源中建立用戶數據源
Test;
第二步 在Domino R5中新建一個數據庫Try,并建立一個空白表單Connection,此表單沒有任何內容,然后在表單上創建一個“操作”,起名為“Read”;
第三步 在“Read”操作的編程窗口中選擇編程語言為Lotus Script;
第四步 在編程窗口的對象窗口中點擊“Option”事件,并寫入如下腳本: Uselsx "*lsxodbc" // 使用Lotus Script 擴展對象中的ODBC類
第五步 選中“Declare”事件,在其中寫入:
Dim session As NotesSession Dim db As NotesDataBase
Dim doc As NotesDocument
Dim qry As ODBCQuery
Dim result As ODBCResultSet
Dim con As ODBCConnection
定義程序中使用到的各種對象。
第六步 選中“Click”事件,在其中寫入:
Sub Click(Source As Button)
Set New Value
Set session = New NotesSession
Set con = New ODBCConnection
// 新建ODBCConnection對象實例
Set qry = New ODBCQuery
// 新建ODBCQuery對象實例
Set result = New ODBCResultSet
// 新建ODBCResultSet對象實例
取得當前數據庫信息
Set db = session.CurrentDataBase
Set doc = New NotesDocument(db)
// 新建文檔 doc.form = "connection"
// 新建文檔的表單指向connection
Call con.Disconnect()
// 保證con對象當前沒有連接其他數據源
If con.ConnectTo("test") Then
// 如果連接成功
Set qry.connection = con
// 將建立好連接的con交給query對象
qry.SQL = "SELECT * FROM Table1"
// SQL 語句
Set result.Query = qry
// 將已經連接上數據源并寫好SQL
語句的query對象賦給result對象
Call result.Execute()
// 循環直到結果集為空
Call result.NextRow()
// 指針指向下一條記錄
For i = 1 To result.Numcolumns
// 根據字段的索引值得到字段的名字value = result.GetValue(field)
// 取得字段值 If Isdate(value) Then
// 將關系庫中的值寫到Notes當前庫的當前表單中
Next Call doc.save(True,True)
// 當一條記錄的所有字段都被寫入 Notes庫后保存此文檔
Set db = session.CurrentDataBase Set doc = New NotesDocument(db)
// 斷開與數據源的連接
Else Messagebox("Could not connect to server")
End If End Sub
最后,保存表單并運行,用鼠標點擊Read 操作后,關系數據庫中的信息就融入到Notes的文檔型數據庫中了。