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

What's hot

(Oleg zhurakousky)spring integration-scala-intro
(Oleg zhurakousky)spring integration-scala-intro(Oleg zhurakousky)spring integration-scala-intro
(Oleg zhurakousky)spring integration-scala-intro
Skills Matter Talks
 
JBoss AS7 Overview
JBoss AS7 OverviewJBoss AS7 Overview
JBoss AS7 Overview
JBug Italy
 
Scaling Rails With Torquebox Presented at JUDCon:2011 Boston
Scaling Rails With Torquebox Presented at JUDCon:2011 BostonScaling Rails With Torquebox Presented at JUDCon:2011 Boston
Scaling Rails With Torquebox Presented at JUDCon:2011 Boston
benbrowning
 

What's hot (20)

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

Viewers also liked

Alfresco in few points - Search Tutorial
Alfresco in few points - Search TutorialAlfresco in few points - Search Tutorial
Alfresco in few points - Search Tutorial
PASCAL Jean Marie
 
Alfresco 3.0 Enteprise : View by a Node
Alfresco 3.0 Enteprise : View by a NodeAlfresco 3.0 Enteprise : View by a Node
Alfresco 3.0 Enteprise : View by a Node
PASCAL Jean Marie
 
Alfresco Android - Summit 2013 Talk
Alfresco Android - Summit 2013 TalkAlfresco Android - Summit 2013 Talk
Alfresco Android - Summit 2013 Talk
PASCAL Jean Marie
 
Alfresco in few points - Node Tutorial
Alfresco in few points - Node TutorialAlfresco in few points - Node Tutorial
Alfresco in few points - Node Tutorial
PASCAL Jean Marie
 

Viewers also liked (20)

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

Similar to Developer’s intro to the alfresco platform

HTML5 Programming
HTML5 ProgrammingHTML5 Programming
HTML5 Programming
hotrannam
 
AMF Flash and .NET
AMF Flash and .NETAMF Flash and .NET
AMF Flash and .NET
Yaniv Uriel
 

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

Intro to Alfresco for Developers
Intro to Alfresco for DevelopersIntro to Alfresco for Developers
Intro to Alfresco for Developers
 
PLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring SurfPLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring Surf
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-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
Alfresco Day Brussels 2016 - Alfresco One Product Suite Update + DemoAlfresco Day Brussels 2016 - Alfresco One Product Suite Update + Demo
Alfresco Day Brussels 2016 - Alfresco One Product Suite Update + Demo
 
Flex alfresco
Flex   alfrescoFlex   alfresco
Flex alfresco
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
 
Intro To Alfresco Part 1
Intro To Alfresco Part 1Intro To Alfresco Part 1
Intro To Alfresco Part 1
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
 
(DAT309) Scaling Massive Content Stores with Amazon Aurora
(DAT309) Scaling Massive Content Stores with Amazon Aurora(DAT309) Scaling Massive Content Stores with Amazon Aurora
(DAT309) Scaling Massive Content Stores with Amazon Aurora
 
WCM Roadmap Versions 3 3 And 4 0
WCM Roadmap Versions 3 3 And 4 0WCM Roadmap Versions 3 3 And 4 0
WCM Roadmap Versions 3 3 And 4 0
 
Alfresco Day Roma 2015: Platform Update
Alfresco Day Roma 2015: Platform UpdateAlfresco Day Roma 2015: Platform Update
Alfresco Day Roma 2015: Platform Update
 
Cfalfresco
CfalfrescoCfalfresco
Cfalfresco
 
HTML5 Programming
HTML5 ProgrammingHTML5 Programming
HTML5 Programming
 
Bee con2016 presentation_20160125004_installing
Bee con2016 presentation_20160125004_installingBee con2016 presentation_20160125004_installing
Bee con2016 presentation_20160125004_installing
 
Laravel 4 presentation
Laravel 4 presentationLaravel 4 presentation
Laravel 4 presentation
 
201511 - Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
201511 -  Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...201511 -  Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
201511 - Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
 
CMIS: An Open API for Managing Content
CMIS: An Open API for Managing ContentCMIS: An Open API for Managing Content
CMIS: An Open API for Managing Content
 
AMF Flash and .NET
AMF Flash and .NETAMF Flash and .NET
AMF Flash and .NET
 
Alfresco CMS (ECMS) - Businessware Technologies
Alfresco CMS (ECMS) - Businessware TechnologiesAlfresco CMS (ECMS) - Businessware Technologies
Alfresco CMS (ECMS) - Businessware Technologies
 

More from Alfresco Software

More from Alfresco Software (20)

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

Recently uploaded

Recently uploaded (20)

Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
The architecture of Generative AI for enterprises.pdf
The architecture of Generative AI for enterprises.pdfThe architecture of Generative AI for enterprises.pdf
The architecture of Generative AI for enterprises.pdf
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 

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!