Alfresco CMIS查询返回包含分号和版本的objectId

时间:2014-09-11 08:37:23

标签: java alfresco cmis opencmis

我正在使用带有OpenCMIS java客户端库CMIS 1.1的alfresco 4.2。

    String serviceUrl = "http://URL/alfresco/api/-default-/public/cmis/versions/1.1/atom"; // Uncomment for Web Services binding

    // default factory implementation
    SessionFactory factory = SessionFactoryImpl.newInstance();
    Map<String, String> parameter = new HashMap<String, String>();
    // user credentials
    parameter.put(SessionParameter.USER, "admin");
    parameter.put(SessionParameter.PASSWORD, "admin");
    // connection settings
    parameter.put(SessionParameter.ATOMPUB_URL, serviceUrl); // Uncomment for Atom Pub binding
    parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value()); // Uncomment for Atom Pub binding

    // Set the alfresco object factory
    // Used when using the CMIS extension for Alfresco for working with aspects
    List<Repository> repositories = factory.getRepositories(parameter);
    Session session = repositories.get(0).createSession();

    // Get some repository info
    System.out.println("Repository Name: "+session.getRepositoryInfo().getName());
    System.out.println("Repository ID: "+session.getRepositoryInfo().getId());
    System.out.println("CMIS Version: "+session.getRepositoryInfo().getCmisVersion());

    List<String> cmisObjectId = new ArrayList<String>();

    StringBuilder sb = new StringBuilder();
    sb.append("select * from ged:document m");

    // execute query
    ItemIterable<QueryResult> results = session.query(sb.toString(), false);

    for (QueryResult qResult : results) {

        PropertyData<?> propData = qResult.getPropertyById("cmis:objectId");
        String objectId = (String) propData.getFirstValue();
        cmisObjectId.add(objectId);
        System.out.println(objectId);
    }

结果是:

e8137d5d-cf50-41c4-844a-ec98a44ee73a;1.0
f86557af-89c3-4287-85c4-381e47896c1a;1.0
d56b4e1e-e1dc-4514-9bd2-24080b7879a8;1.0
59a0a9a8-8309-43b6-8040-bb3e9e448171;1.0

但我希望没有版本号的节点的id用于REST API调用。

感谢。

1 个答案:

答案 0 :(得分:4)

CMIS对象ID被定义为不透明字符串。存储库实现之间的格式不同,并且存储库的版本可能不同。

如果你想要Alfresco NodeRef,并且你确定要与Alfresco服务器通话,那么你想要的属性是alfcmis:nodeRef

如果使用Apache Chemistry CMIS Workbench连接到您的存储库,您可以看到它报告的属性,并从那里看到类似的内容

Workbench showing it