如何使用CMIS从Alfresco存储库查询所有类型的文档

时间:2016-10-07 09:51:23

标签: alfresco alfresco-share cmis alfresco-webscripts

我有多个自定义内容类型,并根据个人类型我能够查询文档。但我的要求是我想获得所有类型的文件。

我从hr:hrdoctype写了查询select *,因为我的hr:hrdoctype是我所有其他类型的父类型。但它不起作用。

但如果我从hr:hrReimbursment写下select *,这工作正常。

那么如何获得具有单父类型或单一条件的所有所有自定义类型的文档。 请参阅下面的配置。

在这种情况下,如果我将使用特定的内容类型,那么它的工作正常。但我想使用单个查询获取所有类型的文档。

请帮助我如何为此要求编写CMIS查询。

分享-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>

定制内容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 个答案:

答案 0 :(得分:3)

我刚刚在我的存储库中测试过simillar案例。

有四种基本CMIS类型:cmis:documentcmis:foldercmis:relationshipcmis:policy。任何存储库都必须支持 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"
    }
    
  3. 希望这有帮助。

    OpenCMIS Client API Developer's Guide

    PS。您可以使用Alfresco CMIS 1.1 "The Browser binding"测试查询。 例如,这是查询select * from cmis:folder where cmis:name='ABCD'的URL(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'