4. Alfresco Overview
• Open source platform for Enterprise
Content Management
• Can manage any kind/size of file
• Stores the file and metadata about
the file
o Files live on the file system, metadata in the db
o Metadata model is extensible
• Indexes all content and metadata for
search
5. Alfresco Overview (Cont’d)
• Secures files to specific users and
groups
• Transforms many types of documents
• Provides versioning and check-in/
check-out
• Has a built-in workflow engine
• Can be accessed through a browser
or from desktop applications via CIFS,
WebDAV, FTP, SMTP, IMAP, SharePoint
6. Origins
• Founded in 2005
o John Newton
• Founding developer of Ingres
• Co-founded Documentum
o John Powell
• COO of Business Objects
• President of Oracle UK
o Lots of Engineers from Documentum, Interwoven,
Vignette
• Assembled from Open Source
components
8. Add-Ons
• Web Quick Start
• SharePoint integration
• Google Docs integration
• Facebook integration
• Plus many add-ons and extensions available from
the community
o Alfresco Forge
o Google Code
o SourceForge.net
o Github
o Alfresco Wiki
9. Available in 3 Editions
• Enterprise
o Commercial support available from Alfresco
o Clustering, JMX, commercial DB & app server
support
• Team
o Same software as Enterprise, with a lower price
point
o Meant for departmental and SMB deployments
o User- and content volume-limited license
• Community
o Community- or self-supported
10. What can I do with Alfresco?
• Out-of-the-box
o Document Management
o Web Content Management
o Team/Project Collaboration
o Records Management Source: craig rodway
o Imaging/Digital Asset Management
o SharePoint Replacement
• Custom content-centric applications
o Lots of options here
o API’s discussed later
11. Obtaining Alfresco
• Requirements
o An operating system that can run Java
o A servlet container such as Tomcat or JBoss
o A JDBC-compliant database
• Where to get it
o Alfresco home page
o Public SVN for Community source
o Alfresco Customer/Partner site for Enterprise
binaries
o Private SVN for Enterprise source
12. Obtaining Alfresco (cont’d)
• Distribution
o Repository (binary installer or WAR-only)
• Includes Alfresco Explorer and Alfresco Share
o SDK (includes most source)
o WCM
• Web Quick Start
• “AVM” style
100% of the source code is
available in SVN. Not necessarily
needed for your project, though.
13. Installing Alfresco
• Alfresco deploys as a web application
• Binary installer
o Available for all operating systems
o Linux installer does not require a GUI
o Uses PostgeSQL if you do not already have a db
• Alfresco WAR file
o Deploys like any other WAR
o By default, looks for MySQL db alfresco/alfresco
15. High-level Architecture
Major
Browsers
Alfresco WAR Share WAR
CIFS
Surf
Workflow Search
Frame
WebDAV Engine Engine
work
JSON, XML
FTP
Transfor Web Web
mation Script Script
SMTP Engine Engine Engine
Thick Clients
IMAP
Library Forms Forms
Services Engine Engine
SharePoint
DB LDAP Files
16. High-level Custom Front-End
Custom App
Users
Drupal
SSO
SOAP HTTP/S
Web Services Web Scripts
LDAP
Web Client
CIFS
Content
Managers &
Administrators
17. The Beauty of
Presentation Fast, flexible, modular
Tier user interface
REST SOAP
Open, scalable
Content
Services Tier ? repository, metadata,
versioning, workflow
Enterprise
Apps Tier ?
18. Major Sub-systems
• Authentication
• Workflow
o JBoss jBPM
• Scheduler
• Auditing
• Renditions
o ImageMagick
o OpenOffice
• Email
20. Extensions Mechanism
• Don’t touch Alfresco’s files
Source: Martin Deutsch
• Use “extension” directory for
alfresco WAR
• Use “web-extension”
directory for share WAR
• Both must live on classpath
o I prefer copying into an exploded
WAR
o Some prefer using Tomcat shared dir
21. Development Environment
• Any IDE
o Eclipse or SpringSource Tool Suite most common
• Ant-based builds
o Maven archetypes exist for Community edition
• Sun JDK 1.6
• Alfresco SDK
24. Data Modeling
• Repository is a collection of nodes
• Everything is a node, nodes are typed
• Content Model is expressed in XML
o Cold-deploy most common, hot deploy possible
• Types, aspects, properties,
associations, constraints
• Hierarchical
o Types inherit from super types
25. Forms/UI Config
• Forms are modeled in XML
o Explorer: web-client-config-custom.xml
o Share: share-config-custom.xml
• Form Service
o Processes and persists form data
o Filters for intercepting form data before and after
form submit
o RESTful API for retrieving form model as JSON
27. Queries
• Alfresco isn't relational
o So don’t try to build highly-relational systems
using only the Alfresco repo
• Lucene
• Alfresco FTS
• CMIS queries (SQL-like)
• Xpath
• Apache Solr
o Coming with the next major release (“Swift”)
28. Security - Authentication
• Spring Security Framework (ACEGI)
under the covers
• Alfresco can handle it or pass it off to
others
• ActiveDirectory
• LDAP
• Kerberos
• NTLM
• SSO
• Custom
Source: roo reynolds
29. Security - Authorization
• Users & Groups
• Access Control Lists
• Permissions
• Hierarchical
o By default, child nodes inherit ACL of their parent
o Inheritance can be turned off for a given node
30. Alfresco APIs (1 of 2)
• Java Foundation API
o Explorer client, actions, behaviors, web script
controllers, workflow logic
• Server-side JavaScript API
o Web script controllers, utility scripts, workflow
logic
• Freemarker
o Web script views, Surf templates, email templates
• Client-side JavaScript API
o Share client-side logic
31. Alfresco APIs (2 of 2)
• RESTful API (Web Script Framework)
o Remote clients, Share customizations
• Web Services API (SOAP)
o Remote clients
• CMIS API
o Remote clients (Both ATOM Pub and SOAP)
• JCR API
o Embedded repo, remote clients via RMI
32. What is the Web Script Framework?
• Web Script Framework used to declare
a URL, bind it to logic, provide views
o Model-View-Controller pattern
o Controller implemented in JavaScript or Java
o Views implemented in FreeMarker
• Deployed to the repository or the
classpath
• Part of the Spring Surf Project
http://springsurf.org/
33. What is Spring Surf?
• Web application development
framework built on web scripts
• Essentially web scripts++
o Page definition
o Declarative handshakes to HTTP end points
o Page, page type, and object dispatching
• Includes built-in hooks for talking to
Alfresco and loading objects from the
repository
34. What is CMIS?
• OASIS standard
o Alfresco, IBM, Microsoft, Oracle, FileNet support
o Alfresco was first to production with CMIS
• Two parts
o Interoperability through standard SOAP and
Atom Pub bindings
o SQL-based query language for rich content
repositories
• New JSON binding coming soon
35. What is CMIS? (Cont’d)
• Think of it as a language-independent,
repository-independent API for content
management
o CRUD functions for nodes
o Check-in/check-out
o Associations
o Permissions (Access Control Lists)
o Policies
o Queries
o Repository traversal
36. Alfresco & Apache Chemistry
• Chemistry is the home of several client-
side CMIS libraries as well as server-side
reference implementations
• Alfresco employs the Chemistry project
chair and multiple committers
• OpenCMIS, the Java API for CMIS, is
used within the product
• Chemistry lets you access your Alfresco
repo from Java, PHP, Python, & .NET
38. Much More to Explore on Your Own
• Alfresco Explorer & • Authentication
Share Customization against LDAP
• Behaviors • Web Services API
• Metadata • AMPs
Extractors • Import/Export
• Transformers • Web Content
• Advanced Management
Workflow (JBoss • Share Forms
jBPM, Activiti) • Share Themes
• Permissions • Share Dashlets