如何使用Documentum中的DQL获取机柜中已删除的文档列表?

问题描述

我试图在很少情况下找到使用DQL删除文档列表,但是我需要找到仅属于特定机柜的列表。我无法使用audittrailr_object_iddm_cabinet来构成查询

也许是这样吗?

select distinct a.r_object_id,a.event_name,a.user_name,a.audited_obj_id,a.time_stamp from dm_audittrail a,dm_document d where a.event_name='dm_destroy' and a.time_stamp > date(today) and (a.current_state = 'Effective' or a.current_state='Approved') and d.i_cabinet_id='0c0033xxxx...';

请帮助我。

解决方法

在Documentum中删除对象后,它实际上会被删除(至少其元数据中的文档内容会一直保留,直到执行dm_clean作业为止)。没有像其他DMS系统(例如Nuxeo)那样的垃圾回收功能。这就是为什么来自dm_audittrail且在dm_document上具有join的SELECT查询无法返回预期信息的原因。

但是,如果您还将 dm_link 事件记录到审计跟踪中,则有一种方法来做到这一点。然后您可以使用像这样的查询:

SELECT * FROM dm_audittrail d,dm_audittrail l 
  WHERE d.event_name = 'dm_destroy' 
  AND l.event_name = 'dm_link' 
  AND d.audited_obj_id = l.audited_obj_id
  AND (l.id_1 = '0c00ad3f80000106' 
    OR l.id_1 IN (SELECT r_object_id FROM dm_folder WHERE CABINET(ID('0c00ad3f80000106'),DESCEND)))

它从审计跟踪中找到有关已删除文档的信息,并将其与链接该文档的信息也从审计跟踪中合并在一起,该审计跟踪中包含id_1中的父文件夹ID。

但是请记住,当您也使用文件夹删除文档时,使用此查询将无法使用此功能,并且您还必须遍历已删除文件夹的审核记录。