如何在OpenCMIS中共享/取消共享露天内容的程序化

时间:2013-09-11 06:16:03

标签: alfresco alfresco-share opencmis

我需要使用OpenCMIS在alfresco中共享和取消共享内容,我阅读Apache Chemistry的文档here,但我找不到此API功能来共享和取消共享文档。

那我怎么能以编程方式呢?

1 个答案:

答案 0 :(得分:1)

我将把您的要求解释如下: 您想使用Alfresco Share的“快速分享”功能,该功能可在Alfresco Community 4.2& Alfresco Cloud。


Alfresco Share使用以下内部API(REST / Webscript)来触发快速共享:

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

将生成的快速共享ID返回为json:

{
   "sharedId": "IHR65hlGT9yOTKwqPYMbRw"
}

WebScript是以Java支持的WebScript实现的。控制器是

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

使用以下服务:

org.alfresco.repo.quickshare.QuickShareServiceImpl

正如您所见,here此服务生成UUID(链接ID)&将值设置为属性qshare:sharedId(Aspect 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设置属性(存储每个租户的所有共享ID):

attributeService.setAttribute(tenantNodeRef, ATTR_KEY_SHAREDIDS_ROOT, sharedId)

我不确定使用的是什么用途&amp;如果它必须满足您的要求。