AlfStream, is an Alfresco Add-On that enables users to scale their operations from one Alfresco instance to many, through synchronization.
Alfstream is an effort to turn the Alfresco database into a more transactional event-driven system.â€‚â€‚This can be seen as a form of stream processing, or an application of the Event Sourcing design pattern.
What Alfstream is at its core is a way to subscribe to a stream of events that occur in Alfresco: creates, reads, updates and deletes, which can be synchronised with another system.â€‚â€‚ Every time an change is taken within Alfresco, an event is triggered, so that anything observing these events can act upon them accordingly.
Rather than define upfront what systems can observe events from Alfresco, we instead have created an Apache Camel Component, which allows us to decouple and apply Enterprise Integration Patterns so that it can be integrated into virtually any external line of business application or other system.
So we don't have system administrators cover common ground, or invest a lot of time in configuration, we do include some of the most used and battle-tested scenarios, such as syncing to a file system and two-way replication.
How does it work?
Alfstream is divided up into an AMP (Alfresco Module Package) that is installed within the Alfresco repository, and a camel component that can be installed and used within a Camel Runtime, such as Apache Karaf.
Alfstream presents two main Restful API calls in Alfresco:â€‚â€‚The events webscript which displays the list of events in JSON format, and the update webscript, which will receive updates in the form of multipart/form-data and change Alfresco accordingly.
We include a number of example Camel route blueprints, including the following common scenarios: