Intro to Alfresco for Developers


Published on

Extremely high-level overview of some of the major components and sub-systems of the Alfresco platform for content management. Delivered to the Red Hat Summit/JBoss World Campground session on 5/4/2011.

Published in: Technology, Education
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Intro to Alfresco for Developers

  1. 1. A Developer’s Intro to the Alfresco Platform<br />JBoss World 2011<br />
  2. 2. Agenda<br />Extremely High-Level Alfresco Overview<br />Alfresco Architecture<br />Alfresco Development Model<br />Alfresco User Interface<br />Alfresco App Examples<br />
  3. 3. Extremely high-level overview<br />source: flyfshrmn98<br />
  4. 4. Alfresco Overview<br />Alfresco is an Enterprise Content Management platform<br />Can manage any kind of file<br />Stores the file and metadata about the file<br />Metadata model is extensible<br />All content and metadata is searchable<br />Files can be secured to specific users and groups<br />
  5. 5. Alfresco Overview (Cont’d)<br />Provides versioning and check-in/check-out<br />Has a built-in workflow engine<br />Can be accessed through a browser or from desktop applications via CIFS, WebDAV, FTP, IMAP, etc.<br />Community Edition (Community supported)<br />Enterprise Edition (Alfresco supported for a paid subscription)<br />
  6. 6. Origins<br />Founded in 2005<br />John Newton<br />Founding developer of Ingres<br />Co-founded Documentum<br />John Powell<br />COO of Business Objects<br />President of Oracle UK<br />Lots of Engineers from Documentum, Interwoven, Vignette<br />Assembled from Open Source components<br />
  7. 7. Core Products<br />Repository<br />Explorer Client<br />Share Client<br />Web Content Management<br />Records Management<br />
  8. 8. Add-ons<br />WCM QuickStart<br />Sharepoint integration<br />Google Docs integration<br />Facebook integration<br />Plus many add-ons and extensions available from the community<br />Alfresco Forge<br />Google Code<br />Github<br />Alfresco Wiki<br />Alfresco Community Committer Program (ACCP)<br />
  9. 9. What can I do with it?<br />Out-of-the-box<br />Document Management<br />Web Content Management<br />Team/Project Collaboration<br />Records Management<br />Imaging/Digital Asset Management<br />Sharepoint Replacement<br />Custom content-centric applications<br />Lots of options here<br />API’s discussed later<br />Source: craigrodway<br />
  10. 10. Obtaining Alfresco<br />Requirements<br />An operating system that can run Java<br />A servletcontainer such as Tomcat or JBoss<br />A Hibernate-compliant database<br />Where to get it<br />Alfresco home page<br />Public SVN for Community source<br />Alfresco Customer/Partner site for Enterprise binaries<br />Private SVN for Enterprisesource<br />
  11. 11. Obtaining Alfresco (cont’d)<br />Distribution<br />Repository (bundled with Tomcat or WAR-only)<br />Includes Alfresco Explorer and Alfresco Share<br />SDK<br />WCM add-on<br />WCM FSR deployment process<br />Source includes all of the above<br />
  12. 12. Installing Alfresco<br />Alfresco deploys as a web application<br />Alfresco-Tomcat bundle<br />Unzip, update the startup script (if needed) and run<br />If no specific database is provided, an embedded database will be used<br />Alfresco WAR file<br />Deploys like any other WAR<br />By default, looks for MySQL db alfresco/alfresco<br />
  13. 13. Alfresco Architecture<br />source: philromans<br />
  14. 14. High-level Architecture<br />Plus:<br /><ul><li>IMAP
  15. 15. SharePoint</li></li></ul><li>High-level Custom Front-End<br />Alfresco<br />Surf<br />Drupal<br />
  16. 16. Spring Surf Framework<br />
  17. 17. Spring Surf’s Two-Tier MVC Architecture<br />Presentation Tier<br />Dispatcher<br />Spring<br />FreeMarker<br />Web Scripts<br />Surf<br />REST<br />Repository Tier<br />Model ObjectsPagesTemplatesComponentsThemesAssociations<br />Connectors<br />JSON<br />JSON<br />Web ScriptsRepositoryCMISSocialUI<br />Content GraphDocumentsFoldersAssociationsAspects<br />
  18. 18. The Beauty of<br />Fast, flexible, modular user interface<br />Presentation Tier<br />REST<br />SOAP<br />Open, scalable repository, metadata, versioning, workflow<br />Content Services Tier<br />?<br />?<br />Enterprise Apps Tier<br />
  19. 19. Major Sub-systems<br />Authentication<br />Workflow<br />JBossjBPM<br />Scheduler<br />Auditing<br />Renditions<br />ImageMagick<br />OpenOffice<br />Email<br />
  20. 20. High-level development model<br />Source: thomas hawk<br />
  21. 21. Data Modeling<br />Repository is a collection of nodes<br />Everything is a node, nodes are typed<br />Content Model is expressed in XML<br />Cold-deploy most common, hot deploy possible<br />Types, aspects, properties, associations, constraints<br />Hierarchical<br />Types inherit from super types<br />
  22. 22. Forms/UI Config<br />Forms are modeled in XML<br />Form Service<br />Processes and persists form data<br />Filters for intercepting form data before and after form submit<br />RESTful API for retrieving form model as JSON<br />
  23. 23. Form Config Example<br /><field id=”sc:itemShortDescription" label-id="label.shortDescription" description-id="description.shortDescription" set="header" mandatory="true”><br /> <control template="controls/textfield.ftl”><br /> <control-param name="maxLength">100</control-param><br /> </control><br /></field> <br /><field id=”sc:itemSku" label-id="label.sku" description-id="description.sku" set="header" /><br /><field id=”sc:solutionSections" label-id="label.solutionSections” description-id="description.solutionSections" set="sections”><br /> <control template="/org/alfresco/components/form/controls/sc-association.ftl”><br /> <control-param name="showTargetLink">true</control-param><br /> <control-param name="allowOtherAssocs">false</control-param><br /> </control><br /></field><br />
  24. 24. Queries<br />Alfresco isn't relational<br />Lucene<br />CMIS queries (SQL-like)<br />Xpath<br />Apache Solr Coming Soon!<br />SQL<br />
  25. 25. Security - Authentication<br />Spring Security Framework (ACEGI) under the covers<br />Alfresco can handle it or pass it off to others<br />ActiveDirectory<br />LDAP<br />Kerberos<br />NTLM<br />SSO<br />Custom<br />Source: rooreynolds<br />
  26. 26. Security - Authorization<br />Users & Groups<br />Access Control Lists<br />Permissions<br />Hierarchical<br />
  27. 27. What is the Web Script Framework?<br />Web Script Framework used to declare a URL, bind it to logic, provide views<br />Model-View-Controller pattern<br />Controller implemented in JavaScript or Java<br />Views implemented in FreeMarker<br />Deployed to the repository or the classpath<br />Part of the Spring Surf Project<br />
  28. 28. What is Spring Surf?<br />Web application development framework built on web scripts<br />Essentially web scripts++<br />Page definition<br />Declarative handshakes to HTTP end points<br />Page, page type, and object dispatching<br />Includes built-in hooks for talking to Alfresco and loading objects from the repository<br />
  29. 29. What is CMIS?<br />OASIS standard<br />Alfresco, IBM, Microsoft, Oracle, FileNet support<br />Alfresco was first to production with CMIS<br />Two parts<br />Interoperability through standard SOAP and Atom Pub bindings<br />SQL-based query language for rich content repositories<br />New JSON binding coming soon<br />
  30. 30. What is CMIS? (Cont’d)<br />Think of it as a language-independent, repository-independent API for content management<br />CRUD functions for nodes<br />Check-in/check-out<br />Associations<br />Permissions (Access Control Lists)<br />Policies<br />Queries<br />Repository traversal<br />
  31. 31. Demo/Code<br />
  32. 32. For More Information…<br />Alfresco Community<br /><br />Alfresco Forums<br /><br />Alfresco Wiki<br /><br />Alfresco Blogroll<br /><br />ECM Architect<br /><br />
  33. 33. Thank you!<br />Tweet me with questions/feedback @jeffpotts01 <br />