【问题标题】:Set the owner of documentum ACL in java using the API?使用API​​在java中设置documentum ACL的所有者?
【发布时间】:2016-09-15 04:04:19
【问题描述】:

我正在做一个连接到 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 table object 中检索它。我唯一坚持的是如何设置所有者,因为我从未在我的代码中指定过,一旦我检查 dm_acl 表,它就会说所有者是 dm_admin 。知道如何解决吗?此外,虽然我可以在 dm_acl 中成功创建 ACL,但我也收到一条错误消息:

[DM_ACL_E_USER_NOT_EXIST]错误:“所有者名称或访问者名称 ACL“China InvestmentsCIL_acl”中给出的“China InvestmentsCIL_acl” 不存在。”

【问题讨论】:

  • 我假设 ACL 所有者是从创建 dm_acl 对象的会话所有者间接设置的。为什么要改?
  • 试试这个:acl.setString("owner_name", "dm_dbo"); acl.save();
  • @KarolBe 感谢工作;)

标签: java acl documentum dfc


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    permit.setAccessorName(newAcl.toString());

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 2019-07-17
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多