intro to alfresco for developers
DESCRIPTION
Extremely high-level overview of some of the major components and sub-systems of the Alfresco platform for content management. Delivered to the Red Hat Summit/JBoss World Campground session on 5/4/2011.TRANSCRIPT
A Developer’s Intro to the Alfresco Platform
JBoss World 2011
Agenda
• Extremely High-Level Alfresco Overview• Alfresco Architecture• Alfresco Development Model• Alfresco User Interface• Alfresco App Examples
EXTREMELY HIGH-LEVEL OVERVIEW
source: flyfshrmn98
Alfresco Overview
• Alfresco is an Enterprise Content Management platform• Can manage any kind of file• Stores the file and metadata about
the fileo Metadata model is extensible
• All content and metadata is searchable• Files can be secured to specific users
and groups
Alfresco Overview (Cont’d)
• 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, IMAP, etc.• Community Edition (Community
supported)• Enterprise Edition (Alfresco
supported for a paid subscription)
Origins
• Founded in 2005o 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
Core Products
• Repository• Explorer Client• Share Client• Web Content Management• Records Management
Add-ons
• WCM QuickStart• Sharepoint integration• Google Docs integration• Facebook integration• Plus many add-ons and extensions available from
the communityo Alfresco Forgeo Google Codeo Githubo Alfresco Wikio Alfresco Community Committer Program
(ACCP)
What can I do with it?
• Out-of-the-boxo Document Managemento Web Content Managemento Team/Project Collaborationo Records Managemento Imaging/Digital Asset Managemento Sharepoint Replacement
• Custom content-centric applicationso Lots of options hereo API’s discussed later
Source: craig rodway
Obtaining Alfresco
• Requirementso An operating system that can run Javao A servlet container such as Tomcat or JBosso A Hibernate-compliant database
• Where to get ito Alfresco home pageo Public SVN for Community sourceo Alfresco Customer/Partner site for Enterprise
binarieso Private SVN for Enterprise source
Obtaining Alfresco (cont’d)
• Distributiono Repository (bundled with Tomcat or WAR-only)
• Includes Alfresco Explorer and Alfresco Share
o SDKo WCM add-ono WCM FSR deployment processo Source includes all of the above
Installing Alfresco
• Alfresco deploys as a web application
• Alfresco-Tomcat bundleo Unzip, update the startup script (if needed) and
runo If no specific database is provided, an
embedded database will be used
• Alfresco WAR fileo Deploys like any other WARo By default, looks for MySQL db alfresco/alfresco
ALFRESCO ARCHITECTURE
source: phil romans
High-level Architecture
Plus:• IMAP• SharePoint
High-level Custom Front-End
AlfrescoSurfDrupal
Spring Surf Framework
Spring Surf’s Two-Tier MVC Architecture
Presentation Tier
Repository Tier
Spring
Connectors
REST
Web Scripts
FreeMarker
Dis
pa
tcher
Surf
Model Objects
PagesTemplates
ComponentsThemes
Associations
JSON
Web Scripts
RepositoryCMIS
SocialUI
JSON
Content Graph
DocumentsFoldersAssociationsAspects
The Beauty of
?
Presentation Tier
Content Services Tier
?Enterprise Apps Tier
Fast, flexible, modular user interface
Open, scalable repository, metadata, versioning, workflow
REST SOAP
Major Sub-systems
• Authentication• Workflow
o JBoss jBPM• Scheduler• Auditing• Renditions
o ImageMagicko OpenOffice
HIGH-LEVEL DEVELOPMENT MODEL
Sou
rce:
thom
as
haw
k
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
Forms/UI Config
• Forms are modeled in XML• Form Service
o Processes and persists form datao Filters for intercepting form data before and
after form submito RESTful API for retrieving form model as JSON
Form Config Example
<field id=”sc:itemShortDescription" label-id="label.shortDescription" description-id="description.shortDescription" set="header" mandatory="true”> <control template="controls/textfield.ftl”> <control-param name="maxLength">100</control-param> </control></field>
<field id=”sc:itemSku" label-id="label.sku" description-id="description.sku" set="header" />
<field id=”sc:solutionSections" label-id="label.solutionSections” description-id="description.solutionSections" set="sections”> <control template="/org/alfresco/components/form/controls/sc-association.ftl”> <control-param name="showTargetLink">true</control-param> <control-param name="allowOtherAssocs">false</control-param> </control></field>
Queries
• Alfresco isn't relational• Lucene• CMIS queries (SQL-like)• Xpath• Apache Solr Coming Soon!
SQL
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
Security - Authorization
• Users & Groups• Access Control Lists• Permissions• Hierarchical
What is the Web Script Framework?
• Web Script Framework used to declare a URL, bind it to logic, provide viewso Model-View-Controller patterno Controller implemented in JavaScript or Javao Views implemented in FreeMarker
• Deployed to the repository or the classpath• Part of the Spring Surf Project
http://springsurf.org/
What is Spring Surf?
• Web application development framework built on web scripts• Essentially web scripts++
o Page definitiono Declarative handshakes to HTTP end pointso Page, page type, and object dispatching
• Includes built-in hooks for talking to Alfresco and loading objects from the repository
What is CMIS?
• OASIS standardo Alfresco, IBM, Microsoft, Oracle, FileNet supporto Alfresco was first to production with CMIS
• Two partso Interoperability through standard SOAP and
Atom Pub bindingso SQL-based query language for rich content
repositories
• New JSON binding coming soon
What is CMIS? (Cont’d)
• Think of it as a language-independent, repository-independent API for content managemento CRUD functions for nodeso Check-in/check-outo Associationso Permissions (Access Control Lists)o Policieso Querieso Repository traversal
Demo/Code
For More Information…
• Alfresco Communityo http://www.alfresco.org
• Alfresco Forumso http://forums.alfresco.com
• Alfresco Wikio http://wiki.alfresco.com
• Alfresco Blogrollo http://blogs.alfresco.com/planet/
• ECM Architecto http://ecmarchitect.com
THANK YOU!Tweet me with questions/feedback @jeffpotts01