CMIS session.queryObjects не возвращает аспекты

1

У меня есть пара тестовых функций, которые я написал, чтобы проиллюстрировать проблему (или, по крайней мере, некоторое поведение, которое я не понимаю). Я просто делаю некоторые основные запросы CMIS в репозитории сообщества Alfresco 4.2.e, но получаю неожиданные результаты в зависимости от того, использую ли я session.query() или session.queryObjects(). В частности, объекты queryObject не возвращают свойства для настраиваемых аспектов. Оба возвращают отношения/ассоциации в порядке. Я что-то делаю неправильно, или это ошибка? Я использую opencmis 0.10 и URL CMIS 1.1.

private static Collection<Document> testCmisObjectQuery(Session session) {
    List<Document> rv = new LinkedList<>();
    OperationContext opCon = session.createOperationContext();
    opCon.setLoadSecondaryTypeProperties(true);
    opCon.setIncludeRelationships(IncludeRelationships.BOTH);

    ItemIterable<CmisObject> cmisObjs = 
            session.queryObjects("D:af:insuringFormInstance", null, false, opCon);
    for (CmisObject o : cmisObjs) {
        Document d = (Document) o;
        rv.add(d);
        printDocProps(d);
    }
    return rv;
}

private static Collection<Document> testCmisQuery(Session session) {
    List<Document> rv = new LinkedList<>();
    String queryString = "SELECT cmis:objectId FROM af:insuringFormInstance";
    OperationContext opCon = session.createOperationContext();
    opCon.setIncludeRelationships(IncludeRelationships.SOURCE);
    ItemIterable<QueryResult> results = session.query(queryString, false);
    for (QueryResult qResult : results) {
        String objectId = qResult.getPropertyValueByQueryName("cmis:objectId");
        Document doc = (Document)   session.getObject(session.createObjectId(objectId),opCon);
        printDocProps(doc);
        rv.add(doc);
    }
    return rv;
}
Теги:
opencmis
cmis
apache-chemistry
alfresco

1 ответ

2

Похоже, у вас отсутствует соединение, как в

select d.*, o.* from cmis:document as d join cm:ownable as o on d.cmis:objectId = o.cmis:objectId

Посмотрите на https://wiki.alfresco.com/wiki/CMIS#Aspect_Query для получения дополнительной информации.

  • 0
    Спасибо, но пример session.query (то есть, со строкой cql) работает нормально. Запрос просто получает objectId, а затем я извлекаю объект из этого. Тем не менее, объектный запрос, который вообще не включает в себя оператор cql, не имеет аспектов. Возможно, вы правы в том, что этот запрос не выполняет базовое соединение, необходимое для извлечения всех свойств аспекта / вторичного типа. Если я не понимаю, что вы сказали ...
  • 0
    Именно так. Попробуйте tcpdump или что-то подобное, чтобы увидеть, что выполняется под крышками и что отправляется по проводам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню