我正在编写一个与Alfresco社区4.2交互的自定义应用程序。我集成了一个自定义数据模型,并且令我非常恼火的是,我无法使用CMIS复制文档,因为无法识别自定义方面(如this issue中所述)。我想可以通过复制所有属性并适当设置类型来手动完成此操作,但是我想到了使用内置复制操作来完成任务的想法,并通过REST API调用了该操作。似乎这应该正确复制自定义类型,不是吗?
1)这听起来不错吗?
2)如何通过REST调用复制动作?我什至无法弄清楚我应该为此使用的URL。我看过一些文档,但是还没有整理出来。
谢谢!
最佳答案
您使用的是4.2.e,因此,正如Gagravarr所说,使用Alfresco的OpenCMIS扩展在CMIS 1.0中支持方面。并且在4.2.e中受支持的CMIS 1.1中,作为secondaryType(方面的同义词)。
需要注意的重要一点是,在4.2中,CMIS URL已更改。如果要使用CMIS 1.0 AtomPub,则URL为:
http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.0/atom
如果要使用CMIS 1.1 AtomPub,则URL为:
http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom
给定这些URL,Alfresco 4.2.e,OpenCMIS 0.10.0和OpenCMIS扩展0.7,以下是运行此代码的结果:
Document sourceDoc = (Document) cmisSession.getObjectByPath("/Someco/Whitepapers/whitepaper2.txt");
Folder targetFolder = (Folder) cmisSession.getObjectByPath("/destinationFolder");
sourceDoc.copy(targetFolder);
其中whitepaper2.txt是具有多个自定义方面和自定义元数据集的文档:
CMIS 1.0 AtomPub,无OpenCMIS扩展名:没有自定义方面,复制成功。
CMIS 1.0 AtomPub,OpenCMIS扩展:复制失败,并带有IllegalArgumentException。
CMIS 1.1,没有OpenCMIS扩展(不需要):复制成功完成所有自定义方面,并且
属性值保持不变。
因此,答案是在针对4.2.x运行时使用CMIS 1.1支持。
关于java - 带有方面的Alfresco复制/REST API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22164147/