2009-02-26 183 views
3

我正在使用Lotus Notes 6.5.1 Java API讀取.nsf文件。 .nsf文件中的每個文檔都有多個文檔歷史記錄。在使用Lotus Notes Java API遍歷.nsf文件中的文檔時,我將所有文檔版本作爲單獨的文檔。使用Java API讀取Lotus Notes文檔

如何確保Lotus Notes只檢索每個文檔的最新版本?有沒有一種方法可以唯一標識一個文檔及其所有版本歷史記錄作爲其子代?

回答

3

在Notes Domino中有一個用於版本控制文檔的內置功能。取決於它在數據庫設計中的配置(假設數據庫開發者沒有推出自己的版本),版本將是對原始父代的響應,或者反過來,新版本成爲父代,舊版本爲響應。

但是,所有這些都會在編輯文檔時自動爲您設置數據庫中的響應層次結構。數據庫設計的其餘部分如何與這個層次交互取決於開發者。

您可能想要做的是創建一個視圖,該視圖僅顯示響應層次結構頂部的文檔。然後,您可以遍歷該視圖,並知道從它獲得的文檔是最新版本。

所以,如果你有一個窗體「文章」創建的文件視圖選擇公式將是。

SELECT form*="Article" & [email protected]($ref) 

這會選擇所有不是回覆的文章文檔。現在在代碼中,您可以簡單地打開視圖並遍歷視圖。

一旦你通過

doc.getResponses() 

有一個文件,你可以得到它的直接子響應的處理這個返回DocumentCollection您可以遞歸下找到對響應作出響應。您無法直接獲取父文檔。您首先需要與doc.getParentDocumentUNID()聯繫,然後致電db.getDocumentByUNID()。當然,你可以結合是:

db.getDocumentByUNID(doc.getParentDocumentUNID()) 

在任何情況下,你將不得不看看你的數據庫實際上是幹什麼的,它是怎麼最初的設計和適應這一點。

相關問題