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