Alfresco: een toolkit voor Content Management

“Alfresco is the Open Source Alternative for Enterprise Content Management” is de zin waar je niet omheen komt op de alfresco.com site. Rondkijkend op de site krijg je het gevoel dat het product helemaal af is, maar dat is helemaal niet het geval. De community installatie geeft alleen maar een document management systeem dat zeer goed kan concurreren met de rest. Daarna moet je van alles configureren en soms programmeren om het precies te laten doen wat jouw organisatie wil. Maar ja, het is ook jammer om niet alle extensiepunten te gebruiken die de ontwikkelaars van Alfresco met veel zorg erin hebben gezet.


Voor de mensen die Alfresco nog niet kennen.

De standaard community editie, die via een installatie wizard te installeren is, is een document management system dat zeer snel te gebruiken is door eindgebruikers. Alfresco biedt een aantal interfaces die zeer bekend zijn bij de meeste mensen.

  • Virtual File System – deze vervangt de netwerkschijven en biedt dezelfde mogelijkheden. Dit kan via
    • CIFS (Common Internet File System) beter bekend als windows share.
    • WebDAV extensie op het http protocol om bestanden te bewerken en beheren
  • Email–like Rules - Door regels in te stellen kunnen veel handmatige acties op folders en documenten worden geautomatiseerd.
  • Google–like Search - Alle documenten kunnen doorzocht worden door net zoals in google trefwoorden in te vullen. De zoekmachine ondersteund OpenSearch waardoor Firefox en IE7 direct kunnen zoeken in de documenten vanuit de zoekbalk.
  • Yahoo-like Browsing - Alfresco vult automatisch metadata velden en categoriseert de documenten.
  • SmartSpaces - Een folder is niet alleen een plek waar iets wordt neergezet, maar kan ook acties ondernemen voor workflow processen of notificaties via email en RSS versturen.

Voor de ontwikkelaars die Alfresco nog niet kennen.

Alfresco is gebouwd met veel bekende open source frameworks zoals Spring, Hibernate, Lucene en Java Server Faces. De kern van Alfresco bestaat uit een JSR-170 compliant Content Repository met daar boven op een heel aantal communicatie interfaces. Voorbeelden hiervan zijn een Web Client, WebDAV, WebServices, REST, CIFS, FTP en RMI.

Intern wordt er in Alfresco niet gesproken over folders en documenten. Deze zijn alleen maar bekend binnen het document management content model. Zo zijn er ook content modellen voor record management, knowledge management, web content management, etc. De content repository van Alfresco heeft het maar over een paar termen:

  • Store – Een store is een logische partitie binnen de repository. Een store bestaat uit een hiërarchische structuur van nodes.
  • Node – Een node is een speciaal object met properties en metadata (type, aspects)
  • Type – Elke node heeft één type in de repository. Deze types zijn gedefinieerd in één van de content modellen van de repository
  • Aspect – Elke node kan nul of meer aspects hebben. Een aspect groepeert metadata. Een aspect kan op elk moment worden toegewezen aan of verwijderd worden van een node. Op basis van aspects kunnen regels acties uitvoeren op de content.
  • Properties – Een node bevat meerdere properties (eigenschappen). Deze properties worden gedefinieerd door de types en aspects. Standaard properties van Alfresco zijn: title, description, creator en modification date.

De kracht van Alfresco is niet alleen het abstracte model in de content repository. Bijna alles is geconfigureerd via spring beans. De spring configuratie heeft voor elk functioneel component een bestand waardoor instellingen goed terug te vinden zijn. Doordat alles te configureren is kunnen alle wensen die een enterprise omgeving heeft ingewilligd worden. Als Alfresco nog niet een standaard bean heeft hiervoor dan is die zelf toe te voegen. Alfresco heeft een duidelijke mening over hoe de configuratie aangepast en uitgebreid moet worden. Via een extension folder kun je alle beans overschrijven en opnieuw instellen. Het grote voordeel hiervan is dat je nooit de bestanden van de Alfresco distributie aanpast. Hierdoor is het makkelijk om een upgrade naar een nieuwe versie te doen zonder eindeloos te zoeken naar wijzigingen in configuratie.

Naast de uitgebreide spring configuratie heeft Alfresco een Module Package (AMP) gedefinieerd waardoor eigen functionaliteit makkelijk te installeren is. Binnen een AMP kun je een eigen object model definiëren met eigen types en aspects. Via de spring module-context.xml kun je eigen java functionaliteit initialiseren. Dit kan bijvoorbeeld een eigen MetadataExtractor zijn.

Binnen de Alfresco source code wordt niet alleen veel gebruik gemaakt van spring maar ook van Aspect Oriented Programming (AOP). Op verschillende plekken zijn extensiepunten geïmplementeerd die te gebruiken zijn om te reageren op acties op content. Hierdoor kun je een eigen Aspect implementeren in java die reageert als er content wordt ge-update. Het voordeel van deze extensiepunten is dat je geen vreemde classes moet extenden of rare work-arounds moet verzinnen. Deze extensiepunten worden ook door Alfresco zelf gebruikt in bijvoorbeeld het versioneringssysteem. Door een versionable toe te voegen aan een node wordt deze automatisch door het Version Apsect opgepikt en geversioneerd.

Conclusie

Het basis product van Alfresco is zeer goed in Content Management en specifiek document management. Het product is te configureren/aan te passen zodat het te integreren is in een veeleisende enterprise omgeving. Het mooiste van allemaal is dat het open source is waardoor je kan meekijken wat ze doen en je eigen creativiteit kan loslaten. De zin die prominent aanwezig is op de Alfresco site vat dit heel goed samen.


Reageer

RSS feed for comments on this post · TrackBack URI