Alfresco Extensions - Introduction
The Alfresco product, including the platform repository, built in workflow engine, and the Share user interface, contains a number of so called Extension Points that can be used to customize the product to fit your domain.
Extending the platform repository is a fundamental part of any content management project, and in most cases it starts with designing and deploying a custom content model suited to a specific domain. Custom REST APIs and processes are then developed to make use of this domain specific content model.
The following list summarizes the available extension points on the Alfresco Platform/Repository side:
Content Model - describe custom metadata/properties
Data Lists - describe custom metadata/properties as lists
Actions - perform custom actions on content
Workflow - process content in a workflow
Web scripts - create custom REST APIs
Behaviors / policies - perform an action based on an event such as ‘create content’
Bootstrap content - one-off load of content into the repository
Permissions (Custom Roles) - create custom roles
MIME Types - register custom MIME Types
Content Stores - custom content stores, such as a database
Audit Log - custom auditing applications
Metadata Extractors - custom metadata/properties extraction
Admin Console Component - extend the sysadmin console
Content Transformers (and Renditions) - create custom content transformations
Scheduled jobs - execute an action on a schedule
Authentication - create custom authentications mechanisms
Subsystems - plug-in functionality that can be turned on/off, with its own Spring context
Module Components - implement custom functionality as a module, will be loaded when AMP or JAR module is loaded
Ratings - basis for rating functionality, create custom rating schemes
Form Processors - implement custom form processing
Form Processor Filters - intercept the form processing and add metadata/properties
Patches - do something (action, database update etc) once, and log the result
For more information about platform extensions, including an architecture overview see the online documentation.
Going hand-in-hand with the platform extensions are the user interface customizations. The custom content models, REST APIs, and processes all need some form of custom user interface.
The following list summarizes the available extension points on the Alfresco Share/UI side:
Share Configuration - configure forms for custom metadata and workflow, no coding
Form Controls - add custom form controls to display some specific metadata/property
Form Field Validation Handlers - custom field validation code
Evaluators - evaluators to control visibility of different parts of the UI
Site Presets - control what is displayed on an Alfresco Share site’s dashboard by default
Share Themes - custom Share themes, style the UI for company standards
Document Library - add custom actions, views, templates etc, to support custom content model
Surf Extension Modules - deploy customizations in a way that can be turned on/off during runtime
Surf Web Scripts - UI side REST APIs
Surf Pages - deprecated way of adding custom pages
Surf Dashlets - deprecated way of adding custom dashlets to site and user dashboards
Surf Widgets - adding custom UI components
Aikau Menus - add menus
Aikau Pages - add pages
Aikau Dashlets - add dashlets to site and user dashboards
Aikau Widgets - add components to be used in pages and dashlets
Modifying OOTB Surf Pages - modify out-of-the-box pages
Modifying OOTB Surf Dashlets - modify out-of-the-box dashlets
Modifying OOTB Surf Widgets - modify out-of-the-box components
Modifying OOTB Aikau Pages - modify out-of-the-box pages
Modifying OOTB Aikau Dashlets - modify out-of-the-box dashlets
Modifying OOTB Aikau Widgets - modify out-of-the-box components
Modifying OOTB Surf Web Scripts - customize out-of-the-box REST APIs
For more information about share extensions, including an architecture overview, see the online documentation.
A platform integration is any remote service, application, or client that talks to the Alfresco repository remotely over HTTP.
In most cases you would build your extensions on top of the platform application or the Share user interface. However, there are use cases that does not fit the embedded extension approach very well, and where the remote integration approach makes more sense:
- Enterprise Application Integration (EAI): providing existing enterprise applications with content management functionality - for example, a CRM system that needs to store and retrieve documents in a central repository
- WCM integration: providing files and images to a web content management system
- Mashup: a web application that uses content from many different sources and that also needs to display some file and folder information
- Custom UIs: this is the use case when the Share UI deviates too much from what the solution requires, so it makes more sense to build a new content management client from scratch
- Mobile clients: such as iOS and Android applications that manage content
The REST API lets you access content in an on-premise Alfresco repository, and in Alfresco cloud, from your own applications. The API is RESTful, which means each call is an HTTP request, so you don't even need a programming language to try it out. You can just type a URL address in a web browser.
The REST API consists of two parts, the CMIS REST API, which lets you manage and access folders and files in the repository, and the Alfresco REST API, which lets you manage Alfresco-specific features such as ratings and comments, that are not covered by the CMIS standard.
- Use the CMIS REST API to manage files and folders and their generic properties in the repository. For example, if you want to read, write, modify, create, or delete a file, then this is the API you use.
- Use the Alfresco REST API to manipulate Alfresco content features that are not part of the CMIS specification. Ratings and comments are two examples of such features, and you can find a full list here.
The quickest way to get started is to use our online REST API Explorer, based on the OpenAPI initiative. It gives you full documentation for each endpoint, and a “Try it out!” button so you can use each method.