Как программно делиться/отменять контент alfresco в OpenCMIS

Мне нужно поделиться и отменить общий доступ к контенту на открытом воздухе с помощью OpenCMIS, я прочитал документацию здесь для Apache Chemistry, но я не нахожу эту функцию API для совместного использования и отмены совместного использования документов.

Итак, как я могу сделать это программно?


person user2758757    schedule 11.09.2013    source источник
comment
что вы имеете в виду в деталях? Вам нравится использовать функцию общедоступного общего доступа Alfresco Share или вам нравится изменять разрешения узла?   -  person alfrescian    schedule 11.09.2013
comment
посмотрите, когда я делюсь контентом и просматриваю общий контент в общедоступной функции общего доступа, любой может видеть этот контент без каких-либо разрешений, поэтому мне нужно управлять общим ресурсом в моем веб-приложении с общим доступом и отказом от общего доступа и получить сгенерированный идентификатор общего контента затем отобразите его в http://localhost:8080/share/s/"theSharedContentIdAutoGenerated"   -  person user2758757    schedule 11.09.2013
comment
Хм, все еще довольно туманно. Реальная потребность в общедоступном обмене заключается в том, что каждый может получить к нему доступ! Вы можете просто использовать методы OpenCMIS ACL для установки необходимых вам разрешений. И тогда пользователи смогут получить доступ к контенту, на который у них есть разрешение.   -  person Tahir Malik    schedule 11.09.2013


Ответы (1)


Я интерпретирую ваше требование следующим образом: вы хотите использовать функцию «Quick Share» Alfresco Share, доступную в Alfresco Community 4.2 и Alfresco Cloud.


Alfresco Share использует следующий внутренний API (REST/Webscript) для запуска Quick Share:

POST /api/internal/shared/share/{store_protocol}/{store_id}/{node_id}

которые возвращают сгенерированный идентификатор быстрого доступа в виде json:

{
   "sharedId": "IHR65hlGT9yOTKwqPYMbRw"
}

WebScript реализован как WebScript на основе Java. Контроллер

org.alfresco.repo.web.scripts.quickshare.ShareContentPost

который использует следующую службу:

org.alfresco.repo.quickshare.QuickShareServiceImpl

Как видите, здесь эта служба генерирует UUID (идентификатор ссылки) и устанавливает значение как свойство qshare:sharedId (аспект qshare:shared):

 UUID uuid = UUIDGenerator.getInstance().generateRandomBasedUUID();
 sharedId = Base64.encodeBase64URLSafeString(uuid.toByteArray()); // => 22 chars (eg. q3bEKPeDQvmJYgt4hJxOjw)
  Map<QName,Serializable> props = new HashMap<QName,Serializable>(2);
  props.put(QuickShareModel.PROP_QSHARE_SHAREDID, sharedId);
  props.put(QuickShareModel.PROP_QSHARE_SHAREDBY, AuthenticationUtil.getRunAsUser());
  nodeService.addAspect(nodeRef, QuickShareModel.ASPECT_QSHARE, props);

Вы должны иметь возможность сделать это через CMIS, но эта служба также устанавливает атрибут через AttributeService (сохраняет все общие идентификаторы для каждого арендатора):

attributeService.setAttribute(tenantNodeRef, ATTR_KEY_SHAREDIDS_ROOT, sharedId)

Я не уверен, для какой цели это используется, и если это ДОЛЖНО быть для вашего требования.

person alfrescian    schedule 12.09.2013