Как запросить все типы документов из репозитория Alfresco с помощью CMIS

#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 типа.

  1. Запрос 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"
    }
      
  2. Запрос 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. Где я могу использовать этот параметр?