如何通过 CMIS 获取露天数据列表名称?

How get alfresco data List name via CMIS?

这是一个代码示例:

Folder dataLists = (Folder) session.getObjectByPath("/sites/swsdp/dataLists");
        Joiner joiner = Joiner.on("\t");
        for (Folder cmisObject : (Iterable<Folder>) ((Iterable) dataLists.getChildren())) {
            System.out.println(
                    joiner.join(
                            cmisObject.getId(),
                            cmisObject.getName(),
                            cmisObject.getDescription(),
                            cmisObject.getClass()
                    ));
            System.out.println("==============================");
        }

输出为:

a534356f-8dd6-4d9a-8ffb-dc1adb140c01    71824d77-9cd8-44c3-b3e4-dbca7e17dc49    Project issues  class org.apache.chemistry.opencmis.client.runtime.FolderImpl

好的,可以通过getDescription()方法打印描述,但是如何获取列表名称?为什么我得到的是 UUID 而不是 Issue Log? (Issue Log 是列表在列表列表中的显示方式)。

首先,您应该通过使用节点浏览器导航到数据列表来查看数据列表的结构。这将使 object.

的结构更加清晰。

如果这样做,您将了解到数据列表的名称实际上存储在 cm:title 属性 中。 cm:title 属性定义在一个方面,CMIS调用"secondary types".

如果您使用的是 Alfresco 4.2.x 或更高版本以及 CMIS 1.1 端点,您应该能够使用代码获取 cm:title 属性:

cmisObject.getPropertyValue("cm:title")

此外,如果您更愿意走查询路线,请注意您要查询的类型不是 cm:folder,而是 dl:dataList。您可以使用 cm:titled 方面进行连接,以这种方式获取数据列表标题 属性,如下所示:

SELECT t.cm:title FROM dl:dataList as d join cm:titled as t on d.cmis:objectId = t.cmis:objectId