documentum - 如何在 Documentum 中获取虚拟文档的子级
问题描述
我正在尝试使用下面的查询来获取特定虚拟文档的子级
select * from dm_document in document ID('virtual document id') descend with any r_version_label='CURRENT'
我能够获取特定虚拟文档的子项,但我希望通过单个 dql 查询获得所有虚拟文档的所有子项(仅当前版本)
任何人都可以帮助我进行 dql 查询以获取 docbase 中存在的所有虚拟文档的所有子文档吗?
而且,虚拟文档的直接和间接组成部分是什么意思?
更新:我正在使用的查询是
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 是否将所有组件提供到叶级别(最高深度)或者我们必须在查询中使用下降?
如果我们必须使用descend,那么我们必须在我正在使用的dql查询中在哪里包含descend?
请帮我。
提前致谢。
解决方案
此请求的问题在于,可能存在具有非当前 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
在大多数情况下,您将在第 2 列和第 3 列获得相同的值,因为子项将链接到当前版本,但有时您可以获得不同的值。对于第 1 列和第 3 列,由于 VD 的第一个组件是父文档,因此您还将获得某些记录的相同值。实际上,您应该查看 dmr_containment 对象表并了解这一点以获得所需的输出。
希望这可以帮助。