What Every New Developer Should Know About Alfresco (Jeff Potts)


Published on

Presentation from Alfresco Moscow Meetup
Record of the speech (with russian subs): https://www.youtube.com/watch?v=r_8imv40bZU

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

No notes for slide

What Every New Developer Should Know About Alfresco (Jeff Potts)

  1. 1. What Every New Developer Should Know About Alfresco Jeff Potts Chief Community Officer
  2. 2. CoffeeShopbyBbunchofpants
  3. 3. Content Models The rough equivalent to Data Definition Language in Alfresco
  4. 4. Everything is a node, nodes are typed Content Model is expressed in XML •  Defines types, aspects, properties, associations, constraints •  Cold-deploy most common, hot deploy possible Hierarchical •  Types inherit from super types Extend the out-of-the-box model with your own
  5. 5. Forms Forms are modeled in XML •  Explorer: web-client-config-custom.xml •  Share: share-config-custom.xml Form Service •  Processes and persists form data •  Filters for intercepting form data before and after form submit •  RESTful API for retrieving form model as JSON
  6. 6. Rules You can automate a lot of content processing using rules that trigger rule actions
  7. 7. Rules save time Defined in the UI by end-users If this (criteria) then that (action) Associated with a folder •  Can optionally be applied to sub-folders Can easily add your own custom actions to the list
  8. 8. Web Scripts Roll your own REST API using this MVC framework or leverage the out- of-the-box URLs
  9. 9. Roll your own REST API Web Script Framework used to declare a URL, bind it to logic, provide views •  Model-View-Controller pattern •  Controller implemented in server-side JavaScript or Java •  Views implemented in FreeMarker Deployed to the repository or the classpath Can also have web scripts on the Share tier
  10. 10. Out-of-the-box URLs Web script console lists all web scripts •  http://localhost:8080/alfresco/service/index •  http://localhost:8080/share/service/index Pay attention to the lifecycle •  Lifecycle “internal” may change without warning Use CMIS or public API whenever possible
  11. 11. Web Scripts run in both tiers Web scripts exist in both tiers They access different sets of objects They communicate over HTTP/S Code running in the browser can invoke web scripts in either tier (not shown) XML/JSON over HTTP/S Apache Tomcat Spring Surf Web Script Framework alfresco.war Spring Surf Web Script Framework share.war
  12. 12. CMIS CMIS is the preferred API for integrating with Alfresco
  13. 13. The Beauty of CMIS My Custom Application Third-Party Systems CMIS API Standard integration Standard integration
  14. 14. Use CMIS for CRUD functions Important ECM industry specification managed by OASIS Alfresco uses OpenCMIS, the de facto standard implementation of the spec •  Available at http://chemistry.apache.org All you need is a service URL For Java, Python, .NET, PHP, Objective-C, Android libraries see Apache Chemistry
  15. 15. Service URLs by Version Alfresco Version CMIS Service URL 3.2r2 - 3.4 http://localhost:8080/alfresco/service/cmis (ATOM) http://localhost:8080/alfresco/cmis (SOAP) 4.0 http://localhost:8080/alfresco/cmisatom http://localhost:8080/alfresco/cmis (SOAP) 4.2.d/e/f, 4.2 Enterprise http://localhost:8080/alfresco/api/-default-/cmis/versions/1.0/atom http://localhost:8080/alfresco/api/-default-/cmis/versions/1.1/atom http://localhost:8080/alfresco/api/-default-/cmis/versions/1.1/browser http://localhost:8080/alfresco/cmis (SOAP)
  16. 16. Extensions Avoid changing files included with the Alfresco distribution
  17. 17. Use AMPs to package extensions An AMP is a ZIP with a special folder structure, a manifest, and a strange name The MMT is used to deploy (merge) your AMPs with alfresco.war and share.war Use AMPs even when you do not intend to publicly distribute your customizations https://wiki.alfresco.com/wiki/ Packaging_And_Deploying_Extensions
  18. 18. Debugging Use the source, turn up logging verbosity, leverage one of many consoles
  19. 19. Developer, heal thyself Configure Eclipse for remote debugging Turn up logging in log4j.properties Turn on the server-side JavaScript debugger Use a client-side JavaScript debugger Use Florian Maul’s JavaScript Console Use the Node Browser Use the OpenCMIS Workbench Use SurfBug if you are doing Share custs
  20. 20. Asking for Help Help the Alfresco community help you
  21. 21. Help us help you The community welcomes everyone Invest some sweat equity •  Read the docs •  Search the web •  Try a few things before asking for help Be specific Be polite Pay it forward
  22. 22. Resources Alfresco Forums http://forums.alfresco.com Alfresco Wiki http://wiki.alfresco.com Alfresco Blogs http://blogs.alfresco.com CMIS Resources http://cmis.alfresco.com ECM Architect Blog http://ecmarchitect.com Documentation http://docs.alfresco.com Freenode IRC #alfresco Code Examples http://code.google.com/p/ share-extras https://code.google.com/p/ alfresco-api-java-examples/ https://github.com/jpotts/ alfresco-developer-series Full list at: http://www.alfresco.com/resources/ documentation/getting-started
  23. 23. Thank You! Jeff Potts @jeffpotts01 http://ecmarchitect.com