#alfresco #alfresco-share #cmis #alfresco-webscripts
#alfresco #alfresco-поделиться #cmis #alfresco-webscripts
Вопрос:
У меня есть несколько пользовательских типов контента, и на основе индивидуального типа я могу запрашивать документы. Но мое требование заключается в том, что я хочу получить все типы документов.
Я написал запрос select * из hr:hrdoctype, потому что мой hr:hrdoctype является моим родительским типом для всех других типов. Но это не работает.
Но если я напишу select * из hr:hrReimbursment, это работает нормально.
Итак, как я могу получить все пользовательские типы документов с одним родительским типом или с одним условием. Пожалуйста, ознакомьтесь с приведенной ниже конфигурацией.
в этом случае, если я буду использовать определенный тип контента, он будет работать нормально. но я хочу получить все типы документов, используя один запрос.
Пожалуйста, помогите мне, как я могу написать запрос CMIS для этого требования.
Share-config-custom.xml:-
<type name="cm:content">
<subtype name="hr:hrdoctype" />
</type>
<type name="hr:hrdoctype">
<subtype name="hr:hrReimbursment" />
<subtype name="hr:hrMISCELLANEOUS" />
<subtype name="hr:hrWELFARE_POLICIES" />
<subtype name="hr:hrGENERAL_POLICIES" />
<subtype name="hr:hrPOLICIES_SIGNOFF_NOTES_FILE_NOTES" />
<subtype name="hr:hrPHOTOGRAPH" />
<subtype name="hr:hrPIF_PROFILE_OVERVIEW" />
<subtype name="hr:hrMPR_FORM" />
<subtype name="hr:hrPSYOMETRIC_REPORT" />
<subtype name="hr:hrTECHNICAL_TEST_ASSESSEMENT" />
<subtype name="hr:hrINTERVIEW_ASSESSEMENT_SHEET" />
</type>
Custom-content-model.xml:-
<types>
<type name="hr:hrdoctype">
<title>HR Document</title>
<parent>cm:content</parent>
<properties>
<property name="hr:employeeNumber">
<title>Employee Number</title>
<type>d:text</type>
</property>
<property name="hr:employeeName">
<title>Employee Name</title>
<type>d:text</type>
</property>
</properties>
</type>
<type name="hr:hrReimbursment">
<title>REIMBURSEMENT</title>
<parent>hr:hrdoctype</parent>
<properties>
<property name="hr:DocumentDescription">
<title>Document Description</title>
<type>d:text</type>
</property>
<property name="hr:ReimbursmentDate">
<title>Reimbursment Date</title>
<type>d:text</type>
</property>
</properties>
</type>
<type name="hr:hrMISCELLANEOUS">
<title>MISCELLANEOUS</title>
<parent>hr:hrdoctype</parent>
<properties>
<property name="hr:DocumentDescription1">
<title>Document Description</title>
<type>d:text</type>
</property>
</properties>
</type>
</types>
Комментарии:
1. Похоже, вы вставили фрагмент конфигурации общего доступа. Нам нужно увидеть вашу модель содержимого XML, чтобы показать, что каждый из этих типов действительно является подтипом hr: hrdoctype .
2. @Джефф Поттс Я отредактировал свой вопрос и добавил образец снипета моей пользовательской модели контента. Пожалуйста, проверьте это один раз. Заранее спасибо.
Ответ №1:
Я только что протестировал аналогичный случай в своем репозитории.
Существует четыре базовых типа CMIS: cmis:document
, cmis:folder
, cmis:relationship
, cmis:policy
. Types cmis:document
и cmis:folder
должны поддерживаться любым репозиторием.
В моем случае myc:xyz
тип наследуется от cmis:folder
типа.
-
Запрос CMIS с выбором всех папок:
select * from cmis:folder where cmis:name='ABCD'
возвращает папку:
{ "cmis:objectId": "5b97929c-553b-4494-91cc-2c18e50b2f1c", "cmis:objectTypeId": "F:myc:xyz", "cmis:baseTypeId": "cmis:folder", "cmis:name": "ABCD" }
-
Запрос CMIS с выбором всех
myc:xyz
папок:select * from myc:xyz where cmis:name='ABCD'
возвращает ту же папку с
myc:xyz
дополнительными свойствами некоторого типа:{ "cmis:objectId": "5b97929c-553b-4494-91cc-2c18e50b2f1c", "cmis:objectTypeId": "F:myc:xyz", "cmis:baseTypeId": "cmis:folder", "cmis:name": "ABCD", "myc:AdditionalProperty1": "1111", "myc:AdditionalProperty2": "2222" }
Надеюсь, это поможет.
Руководство разработчика OpenCMIS Client API
PS. Вы можете тестировать запросы с помощью Alfresco CMIS 1.1 «Привязка браузера». Например, это URL для запроса select * from cmis:folder where cmis:name='ABCD'
(Firefox автоматически декодирует закодированные параметры в URL, это очень удобно):
http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser/?cmisselector=queryamp;succinct=trueamp;q=select * from cmis:folder where cmis:name='ABCD'
Комментарии:
1. Я написал запрос, выберите * из cmis:document, но он выдает некоторые ненужные файлы, такие как ftl, xml и js. Здесь мое требование заключается в том, что у меня есть 72 пользовательских типа документов. и я хочу, чтобы ссылка на узел только для этих 72 типов с использованием одного родительского типа.
2. Попробуйте это, оно должно работать: выберите cmis:name, cmis:objectTypeId, cmis:baseTypeId из hr:hrdoctype
3. В моем приложении после запроса оно возвращает только первые 100 записей из репозитория. Итак, как я могу получить более 100 записей??
4. используйте параметры: amp;maxItems=10amp;skipCount=20
5. Где я могу использовать этот параметр?