SlideShare a Scribd company logo
A Developer’s Intro to
the Alfresco Platform




                         Jeff Potts
                         July 2011
Agenda


•  Extremely High-Level Overview
•  Alfresco Architecture
•  Developer Setup
•  Alfresco Development Model
•  Demo
•  Q & A
source: flyfshrmn98




EXTREMELY HIGH-LEVEL
OVERVIEW
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
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
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
Core Products


•  Repository
•  Explorer Client
•  Share Client
•  Web Content Management
•  Records Management
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
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
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
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
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.
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
ALFRESCO ARCHITECTURE




                        source: phil romans
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
High-level Custom Front-End

                                                   Custom App
                                                      Users




                                         Drupal
                                                          SSO
                          SOAP                   HTTP/S

                          Web Services     Web Scripts
                                                          LDAP
             Web Client

                 CIFS
  Content
 Managers &
Administrators
The Beauty of


 Presentation                          Fast, flexible, modular
     Tier                              user interface

                 REST   SOAP


                                       Open, scalable
   Content
 Services Tier                 ?       repository, metadata,
                                       versioning, workflow




  Enterprise
  Apps Tier                        ?
Major Sub-systems

•    Authentication
•    Workflow
      o  JBoss jBPM
•    Scheduler
•    Auditing
•    Renditions
      o  ImageMagick
      o  OpenOffice
•    Email
DEVELOPER SETUP




                  Source: thomas hawk
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
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
Optional Tools


•  Apache Directory Studio (LDAP)
•  Apache Chemistry Workbench (CMIS)
•  Apache James (SMTP)
•  Workflow modeler Eclipse plug-in
   (JBoss GPD, Activiti)
•  cURL
•  Firebug Firefox Add-on
•  Tamper Data Firefox Add-on
HIGH-LEVEL DEVELOPMENT
MODEL
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
  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
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
  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”)
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
  o    By default, child nodes inherit ACL of their parent
  o    Inheritance can be turned off for a given node
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
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
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/
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
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
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
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
Demo/Code
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
For More Information…


•  Alfresco Community •  Documentation
  http://www.alfresco.org        http://docs.alfresco.com
•  Alfresco Forums             •  Freenode IRC
  http://forums.alfresco.com     #alfresco
•  Alfresco Wiki               •  Twitter
  http://wiki.alfresco.com       @alfresco
•  Alfresco Blogs              •  Code Examples
  http://blogs.alfresco.com/     http://code.google.com/p/
  planet/                        share-extras
•  ECM Architect                 http://code.google.com/p/
                                 alfresco-developer-guide
  http://ecmarchitect.com
Tweet me with questions/feedback @jeffpotts01

THANK YOU!

More Related Content

PDF
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
PDF
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
PDF
JBoye Presentation: WCM Trends for 2010
PDF
Getting to know alfresco 4
PDF
(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing
PDF
Service-Oriented Design and Implement with Rails3
PDF
Alfresco 5.2 REST API
 
PPTX
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
JBoye Presentation: WCM Trends for 2010
Getting to know alfresco 4
(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing
Service-Oriented Design and Implement with Rails3
Alfresco 5.2 REST API
 
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)

What's hot (20)

PDF
RadPHP XE Datasheet
PPTX
SPSDenver - Wrapping Your Head Around the SharePoint Beast
PPT
Seamless Integrations between WebCenter Content, Site Studio, and WebCenter S...
KEY
Introduction to eXo ECM Suite
PDF
(Oleg zhurakousky)spring integration-scala-intro
PDF
TorqueBox
PPTX
Building a SharePoint Platform That Scales
PDF
Web Clients for Ruby and What they should be in the future
KEY
WordPress Filters and Actions
PDF
Interoperability Ms Sap
ODP
Zimbra - BlanKonf Semarang
PDF
Social Content Management
PPTX
Get ready for alfresco 4
KEY
JBoss AS7 Overview
PDF
Alfresco 4 launch keynote (Rome)
PPTX
A Succesful WebCenter Upgrade: What You Need to Know
KEY
Scaling Rails With Torquebox Presented at JUDCon:2011 Boston
PDF
Jsp Tutorial
PPTX
Developing Apps with CA Plex + CM WebClient
PPT
Deep Dive: Oracle WebCenter Content Tips and Traps!
RadPHP XE Datasheet
SPSDenver - Wrapping Your Head Around the SharePoint Beast
Seamless Integrations between WebCenter Content, Site Studio, and WebCenter S...
Introduction to eXo ECM Suite
(Oleg zhurakousky)spring integration-scala-intro
TorqueBox
Building a SharePoint Platform That Scales
Web Clients for Ruby and What they should be in the future
WordPress Filters and Actions
Interoperability Ms Sap
Zimbra - BlanKonf Semarang
Social Content Management
Get ready for alfresco 4
JBoss AS7 Overview
Alfresco 4 launch keynote (Rome)
A Succesful WebCenter Upgrade: What You Need to Know
Scaling Rails With Torquebox Presented at JUDCon:2011 Boston
Jsp Tutorial
Developing Apps with CA Plex + CM WebClient
Deep Dive: Oracle WebCenter Content Tips and Traps!
Ad

Viewers also liked (20)

PDF
Apache Chemistry: The Alfresco Open Source Implementation of CMIS
PPT
Alfresco As SharePoint Alternative - Architecture Overview
PDF
Spring In Alfresco Ecm
PPTX
Sizing your alfresco platform
PDF
Alfresco in few points - Search Tutorial
PPT
Introduction to Alfresco Surf Platform
PDF
Activiti v6 UI (Activiti Community Day Paris 2015)
PPTX
Alfresco architecture-overview
PPT
Alfresco Architecture
PDF
PFE Scan (2)
PDF
Alfresco Day Amsterdam 2015 - Alfresco One Product Suite Update + Demo
PDF
JM.PASCAL - This is my way...
PDF
Alfresco 3.0 Enteprise : View by a Node
PDF
Alfresco Android - Summit 2013 Talk
PDF
Launching Activiti v6 (Activiti Community Day Paris 2015)
PPT
ECM - Simple Definition ENG
PDF
Alfresco in few points - Node Tutorial
PDF
Overview of the AngularJS framework
PDF
Alfresco Security Best Practices 2012
PPTX
Mise en place d’un module de génération du Simpl-IS pour L’ERP ODOO (ex. Open...
Apache Chemistry: The Alfresco Open Source Implementation of CMIS
Alfresco As SharePoint Alternative - Architecture Overview
Spring In Alfresco Ecm
Sizing your alfresco platform
Alfresco in few points - Search Tutorial
Introduction to Alfresco Surf Platform
Activiti v6 UI (Activiti Community Day Paris 2015)
Alfresco architecture-overview
Alfresco Architecture
PFE Scan (2)
Alfresco Day Amsterdam 2015 - Alfresco One Product Suite Update + Demo
JM.PASCAL - This is my way...
Alfresco 3.0 Enteprise : View by a Node
Alfresco Android - Summit 2013 Talk
Launching Activiti v6 (Activiti Community Day Paris 2015)
ECM - Simple Definition ENG
Alfresco in few points - Node Tutorial
Overview of the AngularJS framework
Alfresco Security Best Practices 2012
Mise en place d’un module de génération du Simpl-IS pour L’ERP ODOO (ex. Open...
Ad

Similar to Developer’s intro to the alfresco platform (20)

PPTX
Intro to Alfresco for Developers
PDF
PLAT-8 Spring Web Scripts and Spring Surf
PDF
PLAT-7 Spring Web Scripts and Spring Surf
PDF
PLAT-7 Spring Web Scripts and Spring Surf
PDF
Alfresco Day Brussels 2016 - Alfresco One Product Suite Update + Demo
PDF
Flex alfresco
PPTX
Building Content-Rich Java Apps in the Cloud with the Alfresco API
PPT
Intro To Alfresco Part 1
PDF
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
 
PDF
WCM Roadmap Versions 3 3 And 4 0
PDF
Alfresco Day Roma 2015: Platform Update
PPTX
Cfalfresco
PPTX
HTML5 Programming
PDF
Bee con2016 presentation_20160125004_installing
PDF
Laravel 4 presentation
PPTX
201511 - Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
PPTX
CMIS: An Open API for Managing Content
PPTX
AMF Flash and .NET
PDF
Alfresco CMS (ECMS) - Businessware Technologies
PPT
Intro To Alfresco Part 3
Intro to Alfresco for Developers
PLAT-8 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
Alfresco Day Brussels 2016 - Alfresco One Product Suite Update + Demo
Flex alfresco
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Intro To Alfresco Part 1
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
 
WCM Roadmap Versions 3 3 And 4 0
Alfresco Day Roma 2015: Platform Update
Cfalfresco
HTML5 Programming
Bee con2016 presentation_20160125004_installing
Laravel 4 presentation
201511 - Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
CMIS: An Open API for Managing Content
AMF Flash and .NET
Alfresco CMS (ECMS) - Businessware Technologies
Intro To Alfresco Part 3

More from Alfresco Software (20)

PPTX
Alfresco Day Benelux Inholland studentendossier
PPTX
Alfresco Day Benelux Hogeschool Inholland Records Management application
PPTX
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
PPTX
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
PPTX
Alfresco Day BeNelux: The success of Alfresco
PDF
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
PDF
Alfresco Day BeNelux: Digital Transformation - It's All About Flow
PDF
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
PDF
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
PDF
Alfresco Day Vienna 2016: Alfrescos neue Rest API
PDF
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
PDF
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
PDF
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
PDF
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
PDF
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
PDF
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
PDF
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
PDF
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
PDF
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
PDF
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business

Recently uploaded (20)

PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
A Presentation on Artificial Intelligence
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
A comparative analysis of optical character recognition models for extracting...
Network Security Unit 5.pdf for BCA BBA.
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Reach Out and Touch Someone: Haptics and Empathic Computing
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Encapsulation_ Review paper, used for researhc scholars
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
NewMind AI Weekly Chronicles - August'25-Week II
Programs and apps: productivity, graphics, security and other tools
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Chapter 3 Spatial Domain Image Processing.pdf
Review of recent advances in non-invasive hemoglobin estimation
Spectral efficient network and resource selection model in 5G networks
Building Integrated photovoltaic BIPV_UPV.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Diabetes mellitus diagnosis method based random forest with bat algorithm
MYSQL Presentation for SQL database connectivity
A Presentation on Artificial Intelligence
The AUB Centre for AI in Media Proposal.docx
A comparative analysis of optical character recognition models for extracting...

Developer’s intro to the alfresco platform

  • 1. A Developer’s Intro to the Alfresco Platform Jeff Potts July 2011
  • 2. Agenda •  Extremely High-Level Overview •  Alfresco Architecture •  Developer Setup •  Alfresco Development Model •  Demo •  Q & A
  • 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
  • 7. Core Products •  Repository •  Explorer Client •  Share Client •  Web Content Management •  Records Management
  • 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
  • 14. ALFRESCO ARCHITECTURE source: phil romans
  • 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
  • 19. DEVELOPER SETUP Source: thomas hawk
  • 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
  • 22. Optional Tools •  Apache Directory Studio (LDAP) •  Apache Chemistry Workbench (CMIS) •  Apache James (SMTP) •  Workflow modeler Eclipse plug-in (JBoss GPD, Activiti) •  cURL •  Firebug Firefox Add-on •  Tamper Data Firefox Add-on
  • 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
  • 26. 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>
  • 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
  • 39. For More Information… •  Alfresco Community •  Documentation http://www.alfresco.org http://docs.alfresco.com •  Alfresco Forums •  Freenode IRC http://forums.alfresco.com #alfresco •  Alfresco Wiki •  Twitter http://wiki.alfresco.com @alfresco •  Alfresco Blogs •  Code Examples http://blogs.alfresco.com/ http://code.google.com/p/ planet/ share-extras •  ECM Architect http://code.google.com/p/ alfresco-developer-guide http://ecmarchitect.com
  • 40. Tweet me with questions/feedback @jeffpotts01 THANK YOU!