2017 R1

For DevelopersPermanent link for this heading

If you want to write your own CMIS client, profound knowledge about the CMIS standard is mandatory. As a starting point the OpenCMIS client examples may be helpful: http://chemistry.apache.org/java/examples/

Note: Apache Chemistry does not support aspects.

Available RepositoriesPermanent link for this heading

The available repositories can be configured the following way:

  • The desk of the user is a repository by default.
  • The repositories defined in the CMIS configuration (see chapter “Configuration of the Fabasoft Integration for CMIS”).
  • The repositories that are returned by the use case FSCCMIS@1.1001:CMISFilterRepositories.

Syntax

override CMISFilterRepositories{
  variant User {
    impl = expression {
      RepositoryFilterType repo1 = coort.CreateAggregate(#RepositoryFilterType);
      repo1.repositorybaseurl = "http://s1.fabasoft.com/fsc/cmis";
      repo1.repositoryid = "root";
      repo1.repositoryname = "S1";

      RepositoryFilterType repo2 = coort.CreateAggregate(#RepositoryFilterType);
      repo2.repositorybaseurl = "http://s2.fabasoft.com/fsc/cmis";
      repo2.repositoryid = "root";
      repo2.repositoryname = "S2";

      repositories += repo1;
      repositories += repo2;
    }
  }
}

The “aspect” ParameterPermanent link for this heading

The aspect parameter can be used to retrieve all properties of an object that are defined on a specified form and that contain a value. Additionally the standard properties atom:icon, cmis:baseTypeId and cmis:createdBy are available.

Usage:

To get a list of all child objects following URL can be used:

http://<webserver>/<vdir>/cmis/<repository>/<object>/children?aspect=<action>

To get the values of all available properties (that contain a value) following URL can be used:

http://<webserver>/<vdir>/cmis/<repository>/<object>/entry?aspect=<action>

The value of the aspect parameter is matched with the value of the Action property. The Action property can be defined on the desired object class, on the “User Interface” tab in the Forms property. The matching action determines the used form. The form contains form pages. All properties of a basic type (string, integer, date, contents and so on) that are assigned to the form pages and that contain a value are included in the response XML. Properties that contain no value are not included in the XML due to performance reasons.

In the following example properties of the form that matches the COOATTREDIT@1.1:EditObjectAttributes action are returned.

Example

http://localhost/fsc/cmis/COO.1.3285.1.1346/COO.1.3285.4.945/entry?aspect=
COOATTREDIT@1.1:EditObjectAttributes

In the following example the properties objname and objversmaxnr of the object COO.1.3285.4.945 are set.

Example

curl.exe -X PUT -uuser:passwd "http://localhost/fsc/cmis/COO.1.3285.1.1346/COO.1.3285.4.945/entry?aspect=
COOATTREDIT@1.1:EditObjectAttributes" -d @changeprops.xml

changeprops.xml

<?xml version="1.0" encoding="utf-8"?>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:cmisra="http://docs.oasis
open.org/ns/cmis/restatom/200908/" xmlns:cmis="http://docs.oasis
open.org/ns/cmis/core/200908/">

  <cmisra:object>
    <cm
is:properties>
      <cmis:propertyString propertyDefinitionId="COOSYSTEM@1.1:objname">
        <cmis:value>My object name</cmis:value>
      </cmis:propertyString>

      <cmis:propertyInteger propertyDefinitionId="COOSYSTEM@1.1:objversmaxnr">
        <cmis:value>3</cmis:value>
      </cmis:propertyInteger>

    </cmis:properties>

  </cmisra:object>

</entry>

In the following example a Microsoft Word document is created directly on the desk. The name “My document” and the subject “My subject” are set.

Example

curl.exe -X POST -uuser:passwd "http://localhost/fsc/cmis/COO.1.3285.1.1346/COO.1.3285.1.1346/children?aspect=
COOATTREDIT@1.1:EditObjectAttributes" -d @createdoc.xml

createdoc.xml

<?xml version="1.0" encoding="utf-8"?>

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:cmisra="http://docs.oasis
open.org/ns/cmis/restatom/200908/" xmlns:cmis="http://docs.oasis
open.org/ns/cmis/core/200908/">

  <cmisra:object>
    <cmis:properties>

      <cmis:propertyString propertyDefinitionId="cmis:name">
        <cmis:value>My document</cmis:value>
      </cmis:propertyString>

      <cmis:propertyId propertyDefinitionId="cmis:objectTypeId">
        <cmis:value>COOMSOFFICE@1.1:WinWordObject</cmis:value>
      </cmis:propertyId>

      <cmis:propertyId propertyDefinitionId="cmis:baseTypeId">
        <cmis:value>cmis:document</cmis:value>
      </cmis:propertyId>

      <cmis:propertyString propertyDefinitionId="COOSYSTEM@1.1:objsubject">
        <cmis:value>My subject</cmis:value>
      </cmis:propertyString>

    </cmis:properties>

  </cmisra:object>

</entry>

In the following example an object should be created in a folder that consists of several object lists. The document should be created in the folder COO.1.3285.4.934 in the object list COO.1.1.1.1907.

Example

curl.exe -X POST -uuser:passwd "http://localhost/fsc/cmis/COO.1.3285.1.1346/COO.1.3285.4.934$COO.1.1.1.1907/
children?aspect=COOATTREDIT@1.1:EditObjectAttributes" -d @createdoc.xml

aspect=truePermanent link for this heading

The aspect=true parameter is only for internal use. It reduces the amount of data that is transferred to the client (the response XML contains only the most important information). This setting does not conform to the CMIS specification.

Note: The URL pointing to the PDF overview is included for objects without content.

Update of PropertiesPermanent link for this heading

The CMIS service “updateProperties” can be used to modify properties that are defined in the aspect.

SOAP Message ExamplePermanent link for this heading

The following example shows how to use the aspect parameter in a SOAP message.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:fsc="http://www.fabasoft.com/">
  <soapenv:Header/>

   <soapenv:Body>

      <ns:getChildren>

         <ns:repositoryId>
COO.1.506.1.215</ns:repositoryId>
         <ns:folderId>
COO.1.506.1.345</ns:folderId>
         <ns:extension>

           <fsc:aspect>true</fsc:aspect>

         </ns:extension>

      </ns:getChildren>

   </soapenv:Body>

</soapenv:Envelope>

QuotaPermanent link for this heading

If a user quota is defined for a Fabasoft Folio Domain, the data is also available in the response XML of following call:

http://<webserver>[<port>]/<vdir>/cmis

  • fsc:maxquota
    Maximal available storage space (in MB) for the user.
  • fsc:curquota
    Currently used storage space (in KB) by the user.
  • fsc:maxobjcount
    Maximal available number of objects for the user.
  • fsc:curobjcount
    Number of objects created by the user.
  • fsc:maxcontsize
    Maximal size (in bytes) of a single document.

Example:

<fsc:properties>
  <cmis:property propertyDefinitionId="fsc:maxquota">
   <cmis:value>10240</cmis:value>
  </cmis:property>

  <cmis:property propertyDefinitionId="fsc:maxobjcount">
    <cmis:value>10000</cmis:value>
  </cmis:property>

  <cmis:property propertyDefinitionId="fsc:curobjcount">
   <cmis:value>115</cmis:value>
  </cmis:property>

  <cmis:property propertyDefinitionId="fsc:curquota">
    <cmis:value>1701483</cmis:value>
  </cmis:property>

  <cmis:property propertyDefinitionId="fsc:maxcontsize">
    <cmis:value>2147483647</cmis:value>
  </cmis:property>
</fsc:properties>

Synchronized CollectionPermanent link for this heading

Following URL can be used to get a collection of all objects that are marked as synchronized from a user:

http://<webserver>[<port>]/<vdir>/cmis/<repository>/-/synchronize

Additional PropertiesPermanent link for this heading

Following properties are available:

  • The property fsc:objTeamRoom returns the Teamroom (COO address) of a document or folder.
  • The property fsc:objDeleted returns true if the object is in the wastebasket.
  • The property fsc:canSetContentStream determines whether the object can be modified.
  • The property fsc:contentStreamEncryption determines the encryption method of the object.

The properties canSetContentStream and contentStreamEncryption are only included in the response XML, if the object can be modified or the object is encrypted.

Example:

<cmis:propertyBoolean propertyDefinitionId="fsc:canSetContentStream">
  <cmis:value>true</cmis:value>

</cmis:propertyBoolean>

<cmis:propertyString propertyDefinitionId="fsc:contentStreamEncryption">
  <cmis:value>AES 256 CBC</cmis:value>
</cmis:propertyString>

Providing DocumentsPermanent link for this heading

Which document types are available is defined in the Web Service Configuration:

  • Object Classes for Newly Created Content Objects
    Objects of object classes in this list are included.
  • Object Classes Allowed in Web Folders
    Objects of object classes in this list are included. If Show PDF Summary is set to “Yes” a PDF overview is generated. Additionally for objects not in this list (and that are not excluded) a PDF overview is generated.
  • Object Classes Not Allowed in Web Folders
    Objects of object classes in this list are excluded.

PerformancePermanent link for this heading

Keep in mind that some operations like getting the folder tree of a large structure may exceed the system resources.