在Domino的數據庫屬性的 “高級” 附簽(選擇文件->數據庫->屬性),選中“允許軟刪除”,這樣我們就啟用了軟刪除功能,當一個文檔沒有刪除的時候我們可以使用NotesDatabase的GetDocumentByID(NoteID)和GetDocumentByUNID(UNID)方法來得到該文檔,如果我們將該文檔軟刪除后,我們在使用GetDocumentByUNID來獲取該文檔就會報如下錯誤:
---------------------------
Invalid universal id (4091 ) at line 14
---------------------------
當然你使用GetDocumentByUNID獲取硬刪除和不存在的文檔也是報同樣的錯誤。
這時我們只能使用GetDocumentByUNID來得到該文檔。我們可以使用NotesDocument的IsDeleted屬性來判斷該文檔是否已經軟刪除。
當軟刪除過期后,文檔就被硬刪除了,這個時候文檔的刪除存根仍然存在。
當文檔的存根都不在了,這個時候使用GetDocumentByID訪問就會報4270的錯誤,下面是測試的代碼:
Sub Initialize() On Error GoTo TrapError Dim CurrentDB As NotesDatabase Dim Doc As NotesDocument Dim InvalidNoteID As Integer Dim Session As New NotesSession CurrentDB = Session.CurrentDatabase InvalidNoteID = 0 'Set Doc = CurrentDB.GetDocumentByID ("15BB2" ) Doc = CurrentDB.GetDocumentByUNID("889D30CE3CEE82F2482575520009CB1E") If InvalidNoteID = 0 Then If Doc Is Nothing Then Msgbox("Deletion stub") ElseIf Doc.IsDeleted Then Msgbox("Soft deletion") Msgbox(doc.Subject(0)) Else Msgbox("Active message") Msgbox(doc.Subject(0)) End If Else Msgbox("No message") End If Exit Sub TrapError: Select Case Err Case 4270 Msgbox("4270") InvalidNoteID = 1 Resume Next Case Else Msgbox Error + " (" + Cstr (Err) + " ) at line " + Cstr (Erl) End End Select End Sub
被刪除的文檔在它們的軟刪除過期之前都可以被恢復。直到數據庫視圖被刷新(通過點擊F9鍵,選擇視圖->刷新,或者關閉數據庫)之前,被標記軟刪除的文檔不會出現在您的廢紙簍文件中。
為了查看或者恢復這些被刪除的文檔,您需要在數據庫中創建以下視圖:
1.啟動Domino Designer,打開要設置軟刪除的數據庫
2. 在主菜單中,選擇”創建“ -> “視圖”
3.在 ”視圖名稱“ 中輸入視圖名稱(可以給此視圖賦予任何一個名稱)
4. 在 “視圖類型” 中選擇 “共享,包含已刪除的文檔”
以上操作在數據庫中創建一個可供用戶查看所有軟刪除的文檔。現在您可以訪問標記為軟刪除的文檔。
5. 為了恢復這些文檔,創建一個操作/編輯標簽/按鈕或者代理來包含如下命令:
@UndeleteDocument
這個命令可以把已經標記為軟刪除狀態的文檔恢復為正常的狀態。