In July, Alfresco released a new Angular 2 framework which promises to deliver developers a new modern way to develop custom Alfresco applications. This post will cover what we’ve learned about this new framework.
Watch a quick demo of the new Angular Interface.
When releasing this framework, Alfresco is actually releasing three different independent pieces. Let’s dive into each:
Angular 2 Components
Alfresco Share, the default user interface for Alfresco deployments, is built on top of the Aikau and Surf frameworks. These custom-built platforms are highly extensible and customizable – but do require significant developer effort to work within these frameworks. If a customization was too much effort to be built into Share, the only other option was to build a custom interface and leverage either the internal Alfresco APIs or an externally available API such as CMIS. The Angular 2 Component library is meant to serve as a jump-start into building a custom Alfresco application. The list of available prebuilt components includes login, uploader, document list, search, document viewer, and more. These components are intended to be building blocks for a developer – some simple applications may be able to stitch a few of these components together and be called complete, whereas others may use the existing components as a starting point to build more complex specialized applications. Alfresco has additionally released a Yeoman application builder that allows a user to spin up a demo project with various components in a few quick steps.
Javascript Client REST API
The Angular 2 component library utilizes the new Alfresco Javascript API Client to interact with the repository. The current 1.1.1 version release includes authentication, standard CRUD document management, file and folder manipulation, renditioning, and custom webscript calls for the primary repository services. BPM activities are supported as well, and include listing, completing, deleting, and reporting on workflow processes and definitions.
Alfresco Repository REST API
The Javascript Client REST API calls directly to the new and improved Alfresco REST API. Note that this API is new to Alfresco 5.2 and there are not currently any plans to backport support to existing general releases.
Our Take
In our evaluation of the toolset, we spun up a new environment and had a sample application up and running within a couple hours using Jeff Pott’s helpful instructions found here. From that point, we created a proof of concept OpenAnnotate integration where a simple document list could be browsed then documents could be annotated from the same window. The ease of development on this platform is not to be discounted, and will score big points with developers for working within the incredibly popular JavaScript frameworks of today. Angular 2 is one of the most popular JavaScript frameworks today (20,194 stars on Github when this article was written) and has a strong chance of attracting developers to contribute back to the open source codebase.
We were surprised, however, at how limited the JavaScript API is in its initial state. Basic BPM methods such as delegating or reassigning a workflow task are not present, nor are associations other than file/folder exposed. In order for developers to be capable of writing more than basic client applications, Alfresco is going to need to expand the JavaScript API to cover more functionality that is currently exposed in its CMIS and internal APIs.
At the end of the day, our recommendation to clients is to wait and see. As Alfresco 5.2 has not been released for Enterprise yet, Angular 2 is not yet release candidate ready, and the JavaScript framework is still young, the Alfresco Angular 2 framework is currently a great looking, highly promising proof of concept on Alfresco Community. We look forward to the future expansion of the JavaScript framework and Enterprise support.
[…] We’ve already discussed using OpenAnnotate within ADF, in our initial review of the Alfresco Application Development Framework and Angular. This post will describe in more detail the integration as well as provide a quick video showing […]