Earlier this year we wrote about comparing Alfresco Share to OpenContent Management Suite. As part of that comparison series, we mentioned that Share has garnered some concerned attention from Alfresco customers this year when Alfresco announced that Share would be deprecated in future. In moving away from Share, Alfresco has been heavily promoting their Application Development Framework (ADF) as the primary approach for building a modern user interface for the Alfresco platform. For this post, we will briefly discuss backgound on ADF as well as compare the Alfresco REST web services that underpin ADF to OpenContent Web Services.
What is ADF?
It’s a bit unfair to compare ADF to our OpenContent Management Suite (OCMS) given that ADF is a development framework and OCMS is a user-facing configurable application. Instead, we thought we’d do a more apples-to-apples comparison and look at comparing the REST services that underpin ADF and the OpenContent Web Services that underpin OCMS. For many long-time Alfresco clients, the new REST services augment/replace current CMIS services. See here for more information on Alfresco CMIS. Additionally, see our post on Building a Service Layer for Alfresco – When is CMIS not enough for additional detail on some of the gaps of CMIS.
Alfresco REST Services
Alfresco’s REST Services documentation can be found here. While looking at the documentation, it’s important to note that most of the services have documentation that indicate the endpoint is only available in Alfresco version 5.2 or newer. For clients implementing Alfresco for the first time, this is not a problem. However, for clients that have existing Alfresco implementations earlier than 5.2, it is definitely something to note that an upgrade would be required to leverage the REST services.
From the standpoint of building an ECM application, some of the notable Alfresco services are:
- Nodes service – provides basic CRUD (Create, Read, Update, Delete) operations for documents in the folder as well as operations for copy, lock, retrieve parent/children, as well as target and source associations.
- Renditions service – provides the ability to create and retrieve document renditions. When talking about out of the box Alfresco Renditions, it’s important to know that renditions are document associations in Alfresco. These associations are node-to-node, not version-to-version. What this means is that out of the box Renditions in alfresco are only available on the latest version of the document. It’s impossible to have separate renditions on two or more versions of a document. See this post on Alfresco versioning for more information.
- Versions service – provides the ability to retrieve a node’s version history
- Queries service – provides the ability to execute queries against the repository to find nodes, people, or Share sites.
- Activities service – provides the ability to retrieve a list of a user’s tasks. Note that at the time of this writing, the REST API does not provide a way to complete workflow tasks or start new workflow processes.
OpenContent REST Services
OpenContent Services have been around since 2008 originally developed for Documentum and Alfresco with Hadoop added in 2015. In the beginning, TSG built the OpenContent services layer using the SOAP protocol, but started switching to REST in 2012. While the SOAP layer has been removed from OpenContent Services for a number of years, the long history of OpenContent being used in real-world client projects for 10 years provides insight into why the services are so extensive. View the latest version of the OpenContent REST Documentation here. While the basic ECM content functionality can be found in the Content Service and Query Service that are comparable to Alfresco, there are several notable services and endpoints that are not currently available in Alfresco’s REST API:
- Annotation and Transformation Services – These services are used by OpenAnnotate to provide document annotations as well as the ability to transform content for viewing in it’s pure browser interface. The transformation service can also be used to request renditions or check to see if a document is currently being renditions.
- Lifecycle Service – As noted in our Alfresco vs. Documentum Whitepaper, Alfresco doesn’t currently have a repository concept for document lifecycle. This is a very common requirement for our clients, and as such the OpenContent Services layer was built to support lifecycles in a repository agnostic manner.
- Workflow Service – We would expect that the activities service in the Alfresco REST API will be expanded in the near future to include more than simply retrieving a user’s task list. Since the OpenContent Management Suite supports full workflow functionality, the Workflow Service in OpenContent includes the full API one would expect (get tasks, acquire task, complete task, cancel workflow, etc.)
- Dictionary Service – this service allows the client application read-only access to the underlying content model to read items like document types, attributes, aspects, etc.
- Email Service – allows calling code to send emails from the repository and store the resulting email. This is often used in case management scenarios where it’s desirable to store emails in the case folder along side case documents.
- OpenContent Actions – the Actions service in OpenContent gives client applications access to the full Action Framework. Example actions available are:
- Combine PDF – combine multiple documents into one PDF. The resulting PDF can be downloaded to the user’s machine or stored in the repository.
- Split PDF – Split a single PDF into multiple documents, stored in the repository. This is often used in case management scenarios where many documents are scanned in as a single PDF.
Be sure to check out the OpenContent REST documentation for more.
As noted above, many of the Alfresco REST services are new in Alfresco 5.2. We would anticipate that over the next few years Alfresco will be adding more services to bulk up the REST API. OpenContent adds additional capabilities to the core services offered by Alfresco.
Look for future posts on how interface components of ADF differ from interface components of the OpenContent Management Suite.