如何在Documentum中获得虚拟文档的子代

时间:2018-06-20 10:37:19

标签: documentum documentum6.5 documentum-dfs documentum-dfc documentum7.3

我正在尝试通过使用以下查询来获取特定虚拟文档的子代

select * from dm_document in document ID('virtual document id') descend with any r_version_label='CURRENT' 

我能够获取特定虚拟文档的子级,但是我希望通过单个dql查询获得所有虚拟文档的所有子级(仅当前版本)

有人可以通过dql查询帮助我,以获取文档库中存在的所有虚拟文档的所有子元素吗?

虚拟文档的直接和间接组件是什么意思?

更新:我正在使用的查询是

select e.*,C.r_object_id as folder_id,C.r_folder_path from dm_folder_r C,
(
select A.*,A.i_folder_id from dm_document A,
(
 SELECT r_object_id,object_name FROM dm_document 
     WHERE i_chronicle_id 
    IN (select component_id,version_label from dmr_containment where parent_id in (select r_object_id from dm_document where r_is_virtual_doc=1 or r_link_cnt>0))
   )d 
where d.r_object_id=A.r_object_id 
)e where e.i_folder_id=C.r_object_id and C.r_folder_path is not null  

如果虚拟文档中的组件也是虚拟文档(嵌套的虚拟文档),那么dmr_containment是否提供了嵌套虚拟文档的组件?我的意思是dmr_containment是否使所有组件都达到了叶级别(最高深度),还是我们必须在查询中使用下降?

如果必须使用降序,那么我们必须在哪里使用降序在dql查询中?

请帮助我。

谢谢。

1 个答案:

答案 0 :(得分:1)

此请求的问题在于,可能存在虚拟文档,其子文档由非当前ID引用。但是您仍然可以获得列表...

尝试一下:

SELECT 
  pa.r_object_id, ch.r_object_id, cu.r_object_id
FROM
  dm_document pa,
  dm_document (ALL) ch ,
  dm_document cu,
  dmr_containment r
WHERE
  pa.r_is_virtual_doc = 1
  and r.parent_id = pa.r_object_id
  and r.component_id = ch.r_object_id
  and cu.i_chronicle_id = ch.i_chronicle_id

在大多数情况下,由于子级将链接到当前版本,因此您在第二和第三列将获得相同的值,但有时您会获得不同的值。 对于第一列和第三列,由于VD的第一个组件是父文档,因此对于某些记录,您还将获得相同的值。 确实,您应该查看dmr_containment对象表并了解这一点以获得所需的输出。

希望这会有所帮助。