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



我正在做一个java项目连接到Documentum数据存储。我试图使用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_acle_user_not_exist]error: "The owner_name or accessor_name . txt'China InvestmentsCIL_acl'在ACL 'China InvestmentsCIL_acl'中给出不存在。"

您面临的[DM_ACL_E_USER_NOT_EXIST]错误可能是因为在某个时间点,当您创建ACL时,您拥有该所有者/组,同时以某种方式将其删除。现在,当你更新你的dm_acl对象时,你面对的是这个。

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

permit.setAccessorName(newAcl.toString());

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

最新更新