使用API​​在java中设置documentum ACL的所有者?

时间:2016-09-15 04:04:19

标签: java acl documentum dfc

我正在做一个连接到Documentum数据存储的java项目。我正在尝试使用API​​类手动创建ACL。以下是我的代码:

            StringBuilder newAcl = new StringBuilder();
            newAcl.append(selectedItem.getName());
            newAcl.append(selectedItem.getId());
            newAcl.append("_acl");
            IDfACL acl = (IDfACL)_session.newObject("dm_acl");

            acl.setObjectName(newAcl.toString());
            acl.setDescription(newAcl.toString());

            acl.save();

            IDfPermit permit = new DfPermit();

            permit.setAccessorName(newAcl.toString());
            permit.setPermitType(IDfPermit.DF_ACCESS_PERMIT);
            permit.setPermitValue(IDfACL.DF_XPERMIT_CHANGE_FOLDER_LINKS_STR);
            permit.setPermitValue(IDfACL.DF_PERMIT_READ_STR);
            acl.grantPermit(permit);

            acl.save();

问题是我可以成功地创建ACL,我试图创建它,并且可以从dm_acl表对象中检索它。我唯一关注的是如何设置所有者,因为我从未在我的代码中指定过,而且一旦我检查了dm_acl表,它就说明了所有者是dm_admin。知道怎么解决这个问题?除了我可以在dm_acl中成功创建ACL,但我也得到一个错误:

  

[DM_ACL_E_USER_NOT_EXIST]错误:" owner_name或accessor_name   ' China InvestmentsCIL_acl' ACL' China InvestmentsCIL_acl'   不存在。"

2 个答案:

答案 0 :(得分:0)

您遇到的[DM_ACL_E_USER_NOT_EXIST]错误可能是因为在某些时候您在创建ACL时拥有该所有者/组,同时它被删除了。现在,当您更新dm_acl对象时,您将面临此问题。

答案 1 :(得分:0)

问题是您的代码中没有正确定义ACL访问器。从消息中你可以看到 您想要将ACL的名称设置为访问者的名称。

permit.setAccessorName(newAcl.toString());

它应该是您要为其设置权限的现有用户/组的名称。