In this article we will offer a panoramic of Alfresco and its main features from the point of view of integration. Alfresco is a fully fledged CMS with an intuitive web interface, advanced document authoring and publishing features as well as a process (workflow) manager. We will not discuss the latter feature in this document.
All content in Alfresco is typed and customizable and can roughly be divided in:
- Folder: represent content which does not have a file stream associated but that can contain other content.
- Document: represents content with a file stream, that cannot contain other content. Can be versioned, depending on the specific subtype.
- Item: a document without file stream, is used for comments, tags, users and can represent complex properties.
All types have a number of properties, representing document metadata, that can be defined when creating a type. All types inherit from an abstract type containing basic metadata like:
- Document name;
- Document title;
- Creation and modification information
Properties are themselves typed and can be only simple types, i.e. they do not have internal structure, besides being lists (aggregation of values of the same type). Optionally defaults and constraints can be added on the property value, most notably enumeration.
Types can in general be abstract, or non instantiable, but any document instance can be decorated with groups of properties similar to the concept of “mixin” as in the JCR specification or common functional programming metamodels. These mixins take the name of Aspects and are for all purposes like abstract types. An Alfresco data model can define constrains regarding Aspects, either making them mandatory or conditional.
At a glance, Alfresco supports:
- Versionable Document descendant: versions can differ in content and/or metadata. Versioning relationships takes more customization effort;
- Multifiling: a file can have more than one parent folder;
- Peer relationships: like the references to other documents in a bibliography.
- A fine grained access control.
The Alfresco connector is based on the CMIS 1.1 standard as implemented in the Apache Chemistry library. Please refer to the Apache Chemistry official documentation on https://chemistry.apache.org/ and to the CMIS 1.1 specification on https://docs.oasis-open.org/cmis/CMIS/v1.1/CMIS-v1.1.html
The connector depends on the Cmis Xill plugin, providing constructs for the underlying integration features of the Chemistry library.
The Plugin supports extraction and import of all types of content, versioning, ACL, relationships, aspects. Many internal configuration elements of the Alfresco server, repository and model are accessible via the data dictionary on the Share web app.
The plugin does support type introspection but not type creation or modification, which can be done using the standard Alfresco XML model packages.
Workflows are not supported.