使用 LEI 將 Domino 附件移至 RDBMS,無需編寫腳本

Lotus Enterprise Integrator (LEI) 6.x 可以將附件從 Domino 數據庫移到 RDBMS 表中,從而可以從 RDBMS 內讀取這些附件。最好的是,可以快速進行此操作,而無需編寫一行腳本代碼!

許多人將帶有附件的文檔傳送到他們的 REBMS 系統,以供其他 RDBMS 應用程序訪問。可以通過 LoutsScropt 進行此操作,但其實有一種更簡單的方法。本文說明了 Lotus Enterprise Integrator (LEI) 6.x 如何將附件從 Domino 數據庫移到 RDBMS 表中,從而想在 RDBMS 中查看這些附件的任何人都可以讀取它們。如果目的是執行一次傳輸,則比較安全的作法是對 RDBMS 系統中存儲的文件具有讀/寫權限。如果目的是繼續從 Domino 訪問 RDBMS 系統中的附件,則對於 RDBMS 應用程序來說,RDBMS 系統中的附件應該是隻讀的。

本文假設您熟悉 Lotus Enterprise Integrator 和 Domino。

步驟

對於有經驗的 LEI 用戶,將附件移至 RDBMS 表的步驟很簡單,對於沒有經驗的用戶,也不是很難。這些步驟如下所示(我們將在本文後面對每一步進行說明):

  1. 使用選擇性複製公式複製 Domino 數據庫,其包含所有設計元素,但是不包含數據文檔。
  2. 在 RDBMS(本例中使用 DB2 UDB)中創建表,存儲 Domino 文檔的數據字段。
  3. 在 LEI 中創建 Virtual Documents 活動,在 RDBMS 中創建 External Key 表(用於支持 Virtual Documents)以及在 RDBMS 中創建 Attachments 表(在其中存儲二進制附件)。
  4. 啓動 Virtual Documents 活動。
  5. 從副本數據庫刪除選擇性複製公式(允許複製所有文檔,包括數據文檔),並用新的副本複製原始數據庫。
完成最後一步後,就向副本數據庫傳輸了數據文檔,這些文檔與它們附件一起虛擬化到 RDBMS 表中。然後,其他 RDBMS 應用程序可以讀取 Attachments 表中字段的內容。然而,這些字段不能更新,因爲這樣會中斷 Virtual Documents 活動。External Keys 表中存儲的字段也知道這些文件,僅 Notes C API 提供對那裏存儲的這些數據結構的訪問權。

 

如果設置 Domino 定期複製這兩個 Domino NSF 文件,則 Virtual Documents 活動可以保持 RDBMS 表包含最新信息。可以決定不再需要原始源 Domino 數據庫,僅使用虛擬數據庫就可以滿足所有需要。

我們儘量保持例子的簡單。下面是 Domino 數據庫中的一個示例文檔,基於表單 ATTACH:



圖 1. 帶有附件的文檔
帶有附件的文檔

注意該文檔僅有三個字段:

  • DOCID 存放查找文檔的關鍵字。
  • AUTHOR 列出文檔的作者。
  • ATTACH 是富文本字段,文件可以附加在其中。

 





回頁首


創建副本

要創建僅有設計而沒有數據的新的選擇性副本,從 Notes 工作臺選擇要創建副本的數據庫,然後選擇 File - Replication - New Replica。在 Create Replica for Database 對話框中,單擊 More Settings。在 Replication Settings 對話框中,單擊 Advanced 選項卡來輸入選擇性複製公式:



圖 2. 複製設置
複製設置

選中 Documents by selection formula 選項,輸入公式 SELECT Form = "foo"。因爲表單沒有命名爲 foo,所以不復制數據文檔。單擊 OK,使用 Notes 客戶機強制現在進行復制。





回頁首


創建 RDBMS 表

然後需要定義 RDBMS 表來存儲表單 ATTACH 的數據字段。

Column name Type schema Type name Length Scale Nulls
DOCID SYSIBM INTEGER 4 0 No
AUTHOR SYSIBM CHARACTER 200 0 Yes
ATTACHMENT SYSIBM VARCHAR for bit data 32000 0 Yes

可以將列 ATTACHMENT 定義爲 BLOB,但是因爲此字段僅存儲附件的圖標和相關文本,而不是實際附件,所以不需要這麼大。使用 VARCHAR for bit data 可以使 DB2 在處理此表中的記錄時執行得更好。





回頁首


創建 LEI Virtual Documents 活動

現在有了 RDBMS 表和 Domino 數據庫(副本),所以可以創建 LEI Virtual Documents 活動了。(LEI Virtual Fields 活動還支持虛擬附件,可以用於替代 Virtual Documents 來將附件移至 RDBMS 數據庫。)要進行此操作,首先必須定義 RDBMS 系統連接。對於 DB2,該連接如下所示:



圖 3. DB2 表單連接
DB2 表單連接

該連接將要訪問的 DB2 數據庫指定爲在 DB2 客戶機中定義的數據庫。它還列出連接此數據庫的用戶名和密碼。實際上您不再需要其他任何信息。通過將其他字段保留爲空,此連接將成爲數據庫的通用 DB2 連接,從而允許此連接文檔提供對數據庫中所有可用表的訪問權。

下面是一個 Virtual Documents 活動:



圖 4. Virtual Documents Activity 表單
Virtual Documents Activity 表單

圖 4 顯示了活動的名稱,在本例中是 Documents with Attachments。表單的左邊列出了要使用的 Domino 應用程序。此數據庫必須在安裝了 LEI 的服務器本地(這對於 LEI 中的所有 RealTime 功能都正確)。選擇副本數據庫後,從要監視的數據庫選擇表單(本例中是 ATTACH)。

選擇此表單右邊的 Lotus Connection。數據源是 DB2 連接文檔的標題。因爲在該文檔連接中沒有選擇任何表,所以系統將提示您選擇一個表。在本例中,該表是前面講述的表 DB2ADMIN.DOCIDS。

然後必須映射字段,它們具有類似的名稱。ATTACH 表單中的每個字段都映射到 DB2 表中的一列。





回頁首


創建 External Key 表

External Key 表存儲讓 LEI 虛擬化數據所需的字段。(還可以使用集成關鍵字來獲得期望的結果。有關 Virtual Documents 的 Integrated 和 External Keys 的完整描述,請參閱 LEI 用戶指南。)使用 LEI Virtual Documents 表單中提供的按鈕創建此表:



圖 5. LEI Virtual Documents 表單
LEI Virtual Documents 表單

在 Key Table Option 字段中,選中 Use External Key Table 選項。然後輸入新表的名稱(本例中是 DB2ADMIN.DOCID_KEYS)並選擇 Key Field。此字段用於連接 External Key Table 中的記錄和表 DB2ADMIN.DOCIDS 中的記錄。然後單擊 Create External Key Table 按鈕,會顯示對話框來確認選擇並創建表。下面是在 DB2 中創建的表:

Column name Type schema Type name 長度 Length Nulls
DOCID SYSIBM INTEGER 4 0 No
EINOTEID SYSIBM INTEGER 4 0 Yes
EIUNID SYSIBM CHARACTER 32 0 Yes
EIMODIFIED SYSIBM TIMESTAMP 10 0 Yes
EINOTEPROPS SYSIBM VARCHAR for bit data 10240 0 Yes

此表允許存儲描述 Domino note 實際情況所需的其他信息。





回頁首


創建 Attachments 表

設置此活動的最後一步是開啓 Virtual Attachments。我們在 Options - Virtual Attachments 選項卡下進行此操作:



圖 6. Virtual Attachments 選項卡
Virtual Attachments 選項卡

在字段 Attachments 中,選中 Virtualize Attachments 選項。然後輸入此新表的名稱。現在單擊 Create Virtual Attachment Table 按鈕。對 DB2 進行此操作會顯示下面這個對話框:



圖 7. Create Attachment Table 對話框
Create Attachment Table 對話框

更改此處的默認設置,定義存儲附件的 DB2 表僅支持一個 Notes 數據庫。還可以將 Max attachment size 從 100 MB 改爲 10 MB。單擊 OK 在 DB2 中創建表。

下面是在 DB2 中定義的示例表:

Column name Type schema Type name Length Scale Nulls
EIDBID SYSIBM CHARACTER 16 0 Yes
EIFILEID SYSIBM INTEGER 4 0 No
EIFILESIZE SYSIBM INTEGER 4 0 Yes
EIUNID SYSIBM CHARACTER 32 0 No
EIFILENAME SYSIBM VARCHAR 256 0 Yes
EICONTENTS SYSIBM BLOB 10485760 0 Yes

現在正確定義了此活動,所以將其保存。接着在 LEI 中開啓該活動。

對於 Domino 數據庫,在工作臺中有兩個堆疊的圖標:一個有數據,一個沒有數據。對於沒有數據的副本(Virtual Documents 活動監視的數據庫),刪除選擇性複製公式,從而可以複製數據文檔。然後,使用 Notes(或從 Domino 服務器控制檯發出複製命令)複製這兩個數據庫。

好,完成!現在用虛擬副本數據庫複製了原始數據庫中的數據文檔及它們的附件,將所有數據放入了 RDBMS 中。任何其他 RDBMS 應用程序現在可以從存儲附件的表中讀取這些數據了。如果願意,它們可以連接 DOCID 表以獲取其他信息。需要編寫多少腳本?一個也不要!從頭開始構建此簡單例子需要多長時間?就我們而言,大概花了 20 分鐘,不過,其間我們還打了一個電話。





回頁首


結束語

當我們具有與此類似的任務時,LEI 完全可以使我們的工作更輕鬆些。我們可能需要做一次這些操作,也可能需要設置這些操作以進行持久同步。如果還沒有訪問 Lotus Enterprise Integration Web page 來查看 LEI,則值得訪問一下。從那裏可以獲得演示版本並找到大量閱讀資料。同時,Enterprise Integration forum 也是一個發佈問題和獲得專業答案的好地方。祝好運和幸福與您相伴!

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章