2016-10-07 15 views
1

У меня есть несколько пользовательских типов контента, и на основе индивидуального типа я могу запрашивать документы. Но моим требованием я хочу получить все типы документов.Как запросить все типы документов из репозитория Alfresco, используя CMIS

Я написал запрос select * from hr: hrdoctype, потому что мой hr: hrdoctype является моим родительским типом для всех других типов. Но это не работает.

Но если я напишу select * from hr: hrReimbursment, это нормально работает.

Итак, как я могу получить все все типы документов с одним родительским типом или с одним условием. См. Ниже конфигурацию.

В этом случае, если я буду использовать определенный тип контента, то его рабочий штраф. но я хочу получить весь тип документа, используя один запрос.

Пожалуйста, помогите мне, как я могу написать запрос CMIS для этого требования.

Share-конфиг-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> 

заказ контента 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>     
+0

Похоже, вы вставили в фрагменте Share конфигурации. Нам нужно увидеть, что ваша модель контента XML показывает, что каждый из этих типов действительно является подтипом hr: hrdoctype. –

+0

@Jeff Potts Я отредактировал свой вопрос и добавил образец snipet моей модели пользовательского контента. Пожалуйста, проверьте его один раз. Заранее спасибо. –

ответ

3

Я просто проверял на случай предложения этого типа моего репозитория.

Есть 4 основных CMIS-типов: cmis:document, cmis:folder, cmis:relationship, cmis:policy. Типы cmis:document и cmis:folder должен поддерживаться любым репозиторием.

I мой случай myc:xyz тип наследует от cmis:folder типа.

  1. КМИС запроса, выбрав все папки:

    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. КМИС запрос выбора всех myc:xyz папки:

    select * from myc:xyz where cmis:name='ABCD' 
    

    возвращение того же Fol дер с дополнительными свойствами некоторых 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 Developer's Guide

PS. Вы можете проверить запросы с помощью Alfresco CMIS 1.1 "The Browser binding". Например, это URL для запроса select * from cmis:folder where cmis:name='ABCD' (Firefox автоматически декодирования кодированных параметров в URL, это очень удобно):

http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser/?cmisselector=query&succinct=true&q=select * from cmis:folder where cmis:name='ABCD' 
+0

Я написал запрос, выберите * из cmis: document, но его дает некоторые ненужные файлы, такие как ftl, xml и js. Здесь мое требование: у меня есть 72 пользовательских типа документов. и я хочу ссылку на узлы только тех 72 типов, которые используют один родительский тип. –

+1

Попробуйте это, он должен работать: select cmis: name, cmis: objectTypeId, cmis: baseTypeId from hr: hrdoctype – wildloop

+0

Спасибо за ответ. Теперь он работает :) –