如何修改此Alfresco查询以显示文件夹和文档

时间:2014-10-25 08:36:27

标签: drupal alfresco cmis

我正在使用Drupal模块" CMIS API"和" CMIS VIEWS"我试图列出文件和子文件夹,但目前它只显示文件。我是通过使用CMIS Views模块附带的GUI来实现这一点的,因为我没有使用Alfresco的经验。我选择包含子文件夹和文档的文件夹,但只显示文档。

这是模块针对Alfresco运行的查询:

select d.*, t.* from cmis:document as d join cm:titled as t on d.cmis:objectid = t.cmis:objectid where in_folder(d, 'cf6bfb20-5499-46c4-92ea-abe39cf9e405')

如何修改此查询以显示文件夹?

非常感谢

1 个答案:

答案 0 :(得分:2)

CMIS标准将cmis:documentcmis:folder实现为四个cmis:baseTypeId对象中的两个。即使CMIS将JOIN作为SQL语句之一,但Alfresco实现目前不支持JOIN,除非作为支持方面的扩展。此扩展名是Alfresco特定的。 这意味着您无法实现以下目标:

SELECT * FROM cmis:folder INNER JOIN cmis:document etc

因为Alfresco不会识别该查询。 您可以做的是运行两个查询:

SELECT * FROM cmis:folder F WHERE IN_TREE(F, 'workspace://SpacesStore/cf6bfb20-5499-46c4-92ea-abe39cf9e405')

    SELECT * FROM cmis:document F WHERE IN_TREE(F, 'workspace://SpacesStore/cf6bfb20-5499-46c4-92ea-abe39cf9e405')

其中workspace://SpacesStore/cf6bfb20-5499-46c4-92ea-abe39cf9e405应该是父文件夹的nodeRef。

Here您可以访问alfresco cmis浏览器和网络应用(点击Web Scripts CMIS Browser链接,访问admin / admin,然后点击query链接。这将有助于您使用并测试您的查询。

另一个解决方案是使用原生的露天cmis网页脚本(或自己开发): CMIS getFolderChildren。您可以调用Web服务并访问repo中所需的任何内容,而不是使用基于SQL的查询。

希望它有所帮助。

干杯