Аспектный запрос CMIS с путем

Мне нужно запросить определенную папку в репозитории с помощью планировщика на основе Java в alfresco.

Мне нужно проверить, присутствует ли свойство пользовательского аспекта или нет.

Ниже запрос работает для меня, когда я не использую запрос пути.

select * from myType:caseDoc as d join myAspect:caseId as s on d.cmis:objectId = s.cmis:objectId

Проблема с приведенным выше запросом заключается в том, что он ищет все содержимое в репозитории, но я хочу настроить таргетинг на определенную папку.

Когда я пытаюсь поместить CONTAINS в приведенный выше запрос, это не удается.

select * from cch:caseDoc as d
join cch:caseId as s on d.cmis:objectId = s.cmis:objectId WHERE CONTAINS('PATH:"//app:company_home/cm:FWED/cm:CDO/cm:CAB-DROP-FOLDER/*"')

Это дает ниже исключение. Селектор должен быть указан, когда есть два или более селектора.

Спасибо


person Sam    schedule 17.03.2017    source источник
comment
Похоже, вам может не хватать одного аргумента в CONTAINS(). Вы пробовали что-то подобное? выберите * из cch:caseDoc как d, присоедините cch:caseId как s к d.cmis:objectId = s.cmis:objectId, ГДЕ СОДЕРЖИТ(d,'PATH://app:company_home/cm:FDLE/cm:CCH/cm: CCH-DROP-ПАПКА/*')   -  person luiscolorado    schedule 17.03.2017
comment
почему вы не получаете папку с методом java, так как вы используете CMIS   -  person Yagami Light    schedule 17.03.2017
comment
Если я получаю папку с помощью метода java, мне нужно получить все ее дочерние элементы и отфильтровать их, зациклив их. Я думаю, что это будет очень затратный процесс с точки зрения памяти и времени.   -  person Sam    schedule 17.03.2017
comment
@luiscolorado это сработало хорошо Спасибо! Я просто борюсь с такой мелочью, как строковое значение, когда я вижу его в CMIS Workbench. но когда я ставлю условие в конце, любое из приведенных ниже не работает. И p.acc:cNumber ‹› '' дает Ошибка запроса 500 eroror 02170080 Ошибка запроса 500 /solr4/alfresco/cmis?wt=json&fl=DBID%2Cscore&rows= 100&df=TEXT&start=0&locale=en&alternativeDic=DEFAULT_DICTIONARY&cmisVersion=CMIS_1_1&fq=%7B%21afts%7DAUTHORITY_FILTER_FROM_JSON&fq=% AND p.acc:cNumber НЕ НУЛЕВ (возвратить строку с пустым cNumber)   -  person Sam    schedule 17.03.2017
comment
Сэм, я бы предложил выделить эту проблему в отдельный вопрос. Два апострофа или одна кавычка?   -  person luiscolorado    schedule 21.03.2017
comment
Да я это сделал. Спасибо! Stackoverflow .com/questions/42903935/   -  person Sam    schedule 21.03.2017


Ответы (2)


Похоже, вам может не хватать одного аргумента в CONTAINS(). Вы пробовали что-то подобное?

select * 
  from cch:caseDoc as d 
    join cch:caseId as s 
    on d.cmis:objectId = s.cmis:objectId 
WHERE CONTAINS(d,'PATH:"//app:company_home/cm:FDLE/cm:CCH/cm:CCH-D‌​ROP-FOLDER/*"')

(Я просто помещаю свой комментарий в качестве ответа)

person luiscolorado    schedule 21.03.2017

Ну а если вас волнует путь, то стоит поставить

CONTAINS('PATH:"/app:company_home/cm:FWED/cm:CDO/cm:CAB-DROP-FOLDER/*"')

С одним единственным / в начале пути, если вы ищете только прямые дочерние элементы по этому пути или:

CONTAINS('PATH:"/app:company_home/cm:FWED/cm:CDO/cm:CAB-DROP-FOLDER//*"')

для выполнения поиска во всей базовой иерархии!

Однако я думаю, что предоставленный вами запрос и описанное вами поведение не соответствуют друг другу!

person Younes Regaieg    schedule 17.03.2017