似乎有许多与Documentum接口的选项; WDK,DMCL,DFC,DFS,DQL等
那里还有什么?什么时候你使用哪个界面?对于.NET开发人员,对于Java开发人员?
我想从一个文件柜(称为“Wombat Insurance Co”)中检索所有文件。目前我正在使用这个 DQL 查询:
select r_object_id, object_name from dm_document(all)
where folder('/Wombat Insurance Co', descend);
Run Code Online (Sandbox Code Playgroud)
这是可以的,除了它最多只返回 100 个结果。如果文件柜中有 5000 个文件,我想获得所有 5000 个结果。有没有办法使用分页来获得所有结果?
我试过这个查询:
select r_object_id, object_name from dm_document(all)
where folder('/Wombat Insurance Co', descend)
ENABLE (RETURN_RANGE 0 100 'r_object_id DESC');
Run Code Online (Sandbox Code Playgroud)
旨在以 100 个文件为增量获得结果,但是当我尝试执行该查询时,它给了我一个错误。错误是这样说的:
com.emc.documentum.fs.services.core.CoreServiceException: "QUERY" action failed.
java.lang.Exception: [DM_QUERY2_E_UNRECOGNIZED_HINT]error:
"RETURN_RANGE is an unknown hint or is being used incorrectly."
Run Code Online (Sandbox Code Playgroud)
我想我正确地使用了 RETURN_RANGE 提示,但也许我没有。任何帮助,将不胜感激!
我也尝试过使用提示,ENABLE(FETCH_ALL_RESULTS 0)
但这仍然最多只返回 100 个结果。
澄清一下,我的问题是:如何从机柜中获取所有文件?
在DFC中,可以使用该IDfSession.apiExec()
方法直接执行SQL(绕过DQL).问题是该方法在DFC API的当前(6.x,7.x)版本中被标记为已弃用.
以下是使用弃用方法的一些示例代码:
IDfSession session;
(...)
String sql = "UPDATE dm_sysobject_s SET r_modifier = 'hacker' WHERE r_object_id = '<some_id>'";
session.apiExec("execsql", sql);
Run Code Online (Sandbox Code Playgroud)
这工作正常,但已经提到过apiExec
不推荐使用.
我也尝试了另一种方法:
(...)
IDfQuery query = new DfQuery(sql);
query.execute(session, IDfQuery.DF_EXEC_QUERY);
Run Code Online (Sandbox Code Playgroud)
据我所知,这应该有效,但我不断收到以下信息:
[DM_QUERY_E_REG_TABLE_PERMIT_IN]error: "You have insufficient privilege to UPDATE the dbo.dm_sysobject_s table."
Run Code Online (Sandbox Code Playgroud)
我在使用时收到相同的错误消息IDfQuery.DF_QUERY
,但无论如何DF_EXEC_QUERY是应该工作的那个 - 或者?我当然是用超级用户帐户来尝试这个,所以我不知道我缺少哪些权限.
是否有一种好的,不推荐的方式从DFC中执行原始SQL语句?
我还想补充一点,我是非常清楚的原始SQL是强烈反对,因为它绕过的Documentum的安全模型.我也知道我可以@SuppressWarnings("deprecation")
在我的Java代码中使用,但这并没有使该方法不再被弃用.
DQL
由于锁定,我无法更新记录。是否可以解锁记录,更新并再次锁定?
我正在idql64.exe
内容服务器上运行以下代码。
UPDATE dm_document objects SET keywords = 'D' WHERE r_object_id = '90000000000000001'
GO
Run Code Online (Sandbox Code Playgroud)
[DM_SYSOBJECT_E_LOCKED]错误:
“ sysobject上的操作未成功,因为它已被用户锁定
Documentum示例代码从未被深深评论过,所以我的问题是:
这条线是什么意思?
IDfQuery query = DfcUtils.getClientX().getQuery();
Run Code Online (Sandbox Code Playgroud) 如果我们提供相应文件的object_id,任何人都可以提供Documentum查询语言的解决方案来访问从documentum检出的文件的文件夹详细信息.谢谢.......
是否有用于将Documentum XML文件转换为SDL Tridion内容的工具或实用程序?
我更喜欢相关的XSL示例或XSLT文件,用于系统之间的XML-XML转换.
有人可以建议我进行DQL查询,以找到Documentum中存储库中的活动用户数。
以下是我正在使用的查询,但没有给出正确的结果,有人可以建议吗?
select count(user_name) from dm_user u , dm_group g where any g.i_all_users_names = u.user_name and u.user_state=0
Run Code Online (Sandbox Code Playgroud) 我们从Java progream(使用dfc.jar)连接到documentum服务器来提取文档.为了连接到服务器,它要求我们在类路径中提供dfc.properties.我们已经有一个主属性文件,所以要避免再有一个.相反,我们希望将属性放在其他属性文件中,然后在连接到documentum服务器时使用它们.我可以找到如何使用来自Java代码的docbroker主机和端口,即使用IDfTypedObject.
IDfLoginInfo loginInfoObj = clientX.getLoginInfo();
loginInfoObj.setUser(user);
loginInfoObj.setPassword(pwd);
IDfClient client = new DfClient();
IDfTypedObject cfg = client.getClientConfig();
cfg.setString("primary_host", "myhost");
cfg.setInt("primary_port", myport);
IDfSession docbase_session = client.newSession(docbase, loginInfoObj);
Run Code Online (Sandbox Code Playgroud)
就像在代码中设置primary_host和primary_port一样,有没有办法设置代码,dfc.properties中的以下属性?dfc.globalregistry.repository dfc.globalregistry.username dfc.globalregistry.password
我们总是可以通过语法从表中找到一个相应的表属性(select*from table_name),有没有办法反之亦然我的意思是有没有办法找到带有属性名的表名?