我需要使用OpenCMIS在alfresco中共享和取消共享内容,我阅读Apache Chemistry的文档here,但我找不到此API功能来共享和取消共享文档。
那我怎么能以编程方式呢?
答案 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;如果它必须满足您的要求。