2016-09-15 4 views
0

Я делаю проект java, связанный с хранилищем данных Documentum. Я пытаюсь создать ACL вручную, используя класс API. Ниже мой код:Установить владельца документа ACL в java с помощью API?

  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(); 

Дело в том, что я могу successully создать ACL Я пытаюсь создать, и это извлекаемый из dm_acl объекта таблицы. Единственное, что я застрял, - это установить владельца, поскольку я никогда не указывал его в своем коде, и как только я проверю таблицу dm_acl, он говорит, что владелец - dm_admin. Любая идея, как я могу это исправить? Кроме хотя я могу создать ACL успешно dm_acl, но я получаю сообщение об ошибке, а говоря:

[DM_ACL_E_USER_NOT_EXIST]error: "The owner_name or accessor_name 'China InvestmentsCIL_acl' given in the ACL 'China InvestmentsCIL_acl' does not exist."

+1

Я предполагаю, что владелец ACL косвенно установлен из владельца сеанса, который создает объект dm_acl. Почему вы хотите изменить его? – Miki

+1

Попробуйте следующее: acl.setString ("owner_name", "dm_dbo"); acl.save(); – KarolBe

+0

@KarolBe Спасибо, что выработали;) –

ответ

0

Ошибка [DM_ACL_E_USER_NOT_EXIST] вы столкнулись, вероятно, потому, что в какой-то момент времени вы имели, что владелец/группа при создании ACL и тем временем как-то удалили. Теперь, когда вы обновляете свой объект dm_acl, вы сталкиваетесь с этим.

0

Проблема в том, что в вашем коде вы не определяете аксессуар ACL правильно. Из сообщения вы можете видеть, что вы связываете, чтобы установить имя ACL в качестве имени аксессора.

permit.setAccessorName(newAcl.toString());

И это должно быть имя существующего пользователя/группы, для которой вы устанавливаете разрешения.