Your SlideShare is downloading. ×
0
A Developer’s Intro tothe Alfresco Platform                         Jeff Potts                         July 2011
Agenda•  Extremely High-Level Overview•  Alfresco Architecture•  Developer Setup•  Alfresco Development Model•  Demo•  Q & A
source: flyfshrmn98EXTREMELY HIGH-LEVELOVERVIEW
Alfresco Overview•  Open source platform for Enterprise   Content Management•  Can manage any kind/size of file•  Stores t...
Alfresco Overview (Cont’d)•  Secures files to specific users and   groups•  Transforms many types of documents•  Provides ...
Origins•  Founded in 2005  o    John Newton        •  Founding developer of Ingres        •  Co-founded Documentum  o    J...
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 ...
Available in 3 Editions•  Enterprise  o    Commercial support available from Alfresco  o    Clustering, JMX, commercial DB...
What can I do with Alfresco?•    Out-of-the-box     o  Document Management     o  Web Content Management     o  Team/Proje...
Obtaining Alfresco•  Requirements  o    An operating system that can run Java  o    A servlet container such as Tomcat or ...
Obtaining Alfresco (cont’d)•  Distribution  o    Repository (binary installer or WAR-only)        •  Includes Alfresco Exp...
Installing Alfresco•  Alfresco deploys as a web application•  Binary installer  o    Available for all operating systems  ...
ALFRESCO ARCHITECTURE                        source: phil romans
High-level Architecture                                                   Major                                           ...
High-level Custom Front-End                                                   Custom App                                  ...
The Beauty of Presentation                          Fast, flexible, modular     Tier                              user int...
Major Sub-systems•    Authentication•    Workflow      o  JBoss jBPM•    Scheduler•    Auditing•    Renditions      o  Ima...
DEVELOPER SETUP                  Source: thomas hawk
Extensions Mechanism•  Don’t touch Alfresco’s files                                             Source: Martin Deutsch•  U...
Development Environment•  Any IDE  o    Eclipse or SpringSource Tool Suite most common•  Ant-based builds  o    Maven arch...
Optional Tools•  Apache Directory Studio (LDAP)•  Apache Chemistry Workbench (CMIS)•  Apache James (SMTP)•  Workflow model...
HIGH-LEVEL DEVELOPMENTMODEL
Data Modeling•  Repository is a collection of nodes•  Everything is a node, nodes are typed•  Content Model is expressed i...
Forms/UI Config•  Forms are modeled in XML  o    Explorer: web-client-config-custom.xml  o    Share: share-config-custom.x...
Form Config Example<field id=”sc:itemShortDescription" label-id="label.shortDescription" description-id="description.short...
Queries•  Alfresco isnt relational  o    So don’t try to build highly-relational systems       using only the Alfresco rep...
Security - Authentication•  Spring Security Framework (ACEGI)   under the covers•  Alfresco can handle it or pass it off t...
Security - Authorization•  Users & Groups•  Access Control Lists•  Permissions•  Hierarchical  o    By default, child node...
Alfresco APIs (1 of 2)•  Java Foundation API  o    Explorer client, actions, behaviors, web script       controllers, work...
Alfresco APIs (2 of 2)•  RESTful API (Web Script Framework)  o    Remote clients, Share customizations•  Web Services API ...
What is the Web Script Framework?•  Web Script Framework used to declare a URL, bind it to logic, provide views  o    Mode...
What is Spring Surf?•  Web application development   framework built on web scripts•  Essentially web scripts++  o    Page...
What is CMIS?•  OASIS standard  o    Alfresco, IBM, Microsoft, Oracle, FileNet support  o    Alfresco was first to product...
What is CMIS? (Cont’d)•  Think of it as a language-independent, repository-independent API for content management  o    CR...
Alfresco & Apache Chemistry•  Chemistry is the home of several client-   side CMIS libraries as well as server-side   refe...
Demo/Code
Much More to Explore on Your Own•  Alfresco Explorer &     •  Authentication     Share Customization        against LDAP• ...
For More Information…•  Alfresco Community •  Documentation  http://www.alfresco.org        http://docs.alfresco.com•  Alf...
Tweet me with questions/feedback @jeffpotts01THANK YOU!
Upcoming SlideShare
Loading in...5
×

Developer’s intro to the alfresco platform

4,560

Published on

Slide deck to accompany Jeff Potts' webinar introducing new developers to the Alfresco platform

Published in: Technology

Transcript of "Developer’s intro to the alfresco platform"

  1. 1. A Developer’s Intro tothe Alfresco Platform Jeff Potts July 2011
  2. 2. Agenda•  Extremely High-Level Overview•  Alfresco Architecture•  Developer Setup•  Alfresco Development Model•  Demo•  Q & A
  3. 3. source: flyfshrmn98EXTREMELY HIGH-LEVELOVERVIEW
  4. 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. 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. 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. 7. Core Products•  Repository•  Explorer Client•  Share Client•  Web Content Management•  Records Management
  8. 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. 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. 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. 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. 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. 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. 14. ALFRESCO ARCHITECTURE source: phil romans
  15. 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 EngineThick Clients IMAP Library Forms Forms Services Engine Engine SharePoint DB LDAP Files
  16. 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. 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. 18. Major Sub-systems•  Authentication•  Workflow o  JBoss jBPM•  Scheduler•  Auditing•  Renditions o  ImageMagick o  OpenOffice•  Email
  19. 19. DEVELOPER SETUP Source: thomas hawk
  20. 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. 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. 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
  23. 23. HIGH-LEVEL DEVELOPMENTMODEL
  24. 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. 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. 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. 27. Queries•  Alfresco isnt 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  37. 37. Demo/Code
  38. 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. 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. 40. Tweet me with questions/feedback @jeffpotts01THANK YOU!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×