SlideShare a Scribd company logo
What Every New Developer
Should Know About
Alfresco
Jeff Potts
Chief Community Officer
CoffeeShopbyBbunchofpants
Content Models
The rough equivalent to Data
Definition Language in Alfresco
Everything is a node, nodes
are typed
Content Model is expressed in XML
• Defines
types, aspects, properties, associations, const
raints
• Cold-deploy most common, hot deploy
possible
Hierarchical
• Types inherit from super types
Extend the out-of-the-box model with your
own
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
Rules
You can automate a lot of content
processing using rules that trigger rule
actions
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
Web Scripts
Roll your own REST API using this
MVC framework or leverage the out-
of-the-box URLs
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
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
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
CMIS
CMIS is the preferred API for
integrating with Alfresco
The Beauty of CMIS
My Custom Application Third-Party Systems
CMIS API
Standard
integration
Standard
integration
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
• http://localhost:8080/alfresco/cmisatom (4.x)
For Java, Python, .NET, PHP, Objective-
C, Android libraries see Apache Chemistry
Extensions
Avoid changing files included with the
Alfresco distribution
Use AMPs to package
extensions
An AMP is a ZIP with a special folder
structure, a manifest, and a funny 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_An
d_Deploying_Extensions
Debugging
Use the source, turn up logging
verbosity, leverage one of many
consoles
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
Asking for Help
Help the Alfresco community help you
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
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/alfre
sco-api-java-examples/
https://github.com/jpotts/alfresc
o-developer-series
Full list at:
http://www.alfresco.com/resources/doc
umentation/getting-started
Thank You!
Jeff Potts
@jeffpotts01
http://ecmarchitect.com

More Related Content

PPT
Intro To Alfresco Part 1
PPTX
Alfresco 5.0 Technology Review
PPTX
Intro to Alfresco for Developers
PPT
Intro To Alfresco Part 3
PPT
Intro To Alfresco Part 2
PPTX
Building Content-Rich Java Apps in the Cloud with the Alfresco API
PDF
BP-7 Share Customization Best Practices
PPT
Alfresco Architecture
Intro To Alfresco Part 1
Alfresco 5.0 Technology Review
Intro to Alfresco for Developers
Intro To Alfresco Part 3
Intro To Alfresco Part 2
Building Content-Rich Java Apps in the Cloud with the Alfresco API
BP-7 Share Customization Best Practices
Alfresco Architecture

What's hot (20)

PPTX
Getting Started With CMIS
PPTX
Alfresco: The Story of How Open Source Disrupted the ECM Market
PPTX
201511 - Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
PPTX
Moving Gigantic Files Into and Out of the Alfresco Repository
PPTX
Moving From Actions & Behaviors to Microservices
PDF
Alfresco Day Milano 2016 - Demo Data
PDF
Installing and Getting Started with Alfresco
PPTX
201408 - Alfresco Tech Talk Live - Maven SDK 2.0
PDF
PDF
Hidden gems in cf2016
PPTX
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
PDF
Fuse technology-2015
PDF
Securing applications
PPTX
The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora - Benchmark ...
PDF
JBoss Fuse - Fuse workshop EAP container
PPTX
Debugging the Web with Fiddler
PPTX
10 Reasons ColdFusion PDFs should rule the world
PDF
Integrating Alfresco @ Scale (via event-driven micro-services)
 
PDF
Node.js to the rescue
PDF
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
Getting Started With CMIS
Alfresco: The Story of How Open Source Disrupted the ECM Market
201511 - Alfresco Day - Platform Update and Roadmap - Gabriele Columbro - Bo...
Moving Gigantic Files Into and Out of the Alfresco Repository
Moving From Actions & Behaviors to Microservices
Alfresco Day Milano 2016 - Demo Data
Installing and Getting Started with Alfresco
201408 - Alfresco Tech Talk Live - Maven SDK 2.0
Hidden gems in cf2016
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Fuse technology-2015
Securing applications
The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora - Benchmark ...
JBoss Fuse - Fuse workshop EAP container
Debugging the Web with Fiddler
10 Reasons ColdFusion PDFs should rule the world
Integrating Alfresco @ Scale (via event-driven micro-services)
 
Node.js to the rescue
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
Ad

Viewers also liked (6)

PDF
Could Alfresco Survive a Zombie Attack?
PPT
0910 cagliari- spring surf and cmis - the dynamic duo
PPT
Alfresco Records Management
PDF
Alfresco Day Milano 2016 - Alfresco Product Update
PDF
CMIS and Apache Chemistry (ApacheCon 2010)
PPTX
Alfresco Day Benelux Inholland studentendossier
Could Alfresco Survive a Zombie Attack?
0910 cagliari- spring surf and cmis - the dynamic duo
Alfresco Records Management
Alfresco Day Milano 2016 - Alfresco Product Update
CMIS and Apache Chemistry (ApacheCon 2010)
Alfresco Day Benelux Inholland studentendossier
Ad

Similar to Alfresco: What every developer should know (20)

PDF
What Every New Developer Should Know About Alfresco (Jeff Potts)
PDF
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
PPTX
Relational Won't Cut It: Architecting Content Centric Apps
PPT
Alfresco As SharePoint Alternative - Architecture Overview
PPT
Learning Your Way Around Alfresco [A Developer's Intro, Part 1. by Jeff Potts]
PDF
BP-6 Repository Customization Best Practices
PPTX
Alfresco overview EDM
PPTX
CMIS: An Open API for Managing Content
PDF
Spring In Alfresco Ecm
PDF
BP-9 Share Customization Best Practices
PPTX
Alfresco Tech Talk Live 106
PPTX
Apache Chemistry in Action
PDF
Developer’s intro to the alfresco platform
PPTX
Apache Chemistry in Action: Using CMIS and your favorite language to unlock c...
PPTX
Apache Chemistry in Action: Using CMIS and your favorite language to unlock c...
PDF
Integrating Alfresco with SharePoint & Drupal Using CMIS
PDF
PLAT-7 Spring Web Scripts and Spring Surf
PDF
PLAT-7 Spring Web Scripts and Spring Surf
PPT
Alfresco Web Content Management Roadmap - 3.2 and Beyond
PPT
2 Magma Introduction
What Every New Developer Should Know About Alfresco (Jeff Potts)
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Relational Won't Cut It: Architecting Content Centric Apps
Alfresco As SharePoint Alternative - Architecture Overview
Learning Your Way Around Alfresco [A Developer's Intro, Part 1. by Jeff Potts]
BP-6 Repository Customization Best Practices
Alfresco overview EDM
CMIS: An Open API for Managing Content
Spring In Alfresco Ecm
BP-9 Share Customization Best Practices
Alfresco Tech Talk Live 106
Apache Chemistry in Action
Developer’s intro to the alfresco platform
Apache Chemistry in Action: Using CMIS and your favorite language to unlock c...
Apache Chemistry in Action: Using CMIS and your favorite language to unlock c...
Integrating Alfresco with SharePoint & Drupal Using CMIS
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
Alfresco Web Content Management Roadmap - 3.2 and Beyond
2 Magma Introduction

More from Jeff Potts (16)

PPTX
No Docker? No Problem: Automating installation and config with Ansible
PPTX
Flexible Permissions Management with ACL Templates
PPTX
Connecting Content Management Apps with CMIS
PPTX
The Challenges of Keeping Bees
PPTX
Join the Alfresco community
PPTX
Intro to the Alfresco Public API
PPTX
Alfresco Community Survey 2012 Results
PPTX
Getting Started with CMIS
PPTX
Alfresco SAUG: State of ECM
PPTX
Alfresco SAUG: CMIS & Integrations
PDF
Should You Attend Alfresco Devcon 2011
PPTX
2011 Alfresco Community Survey Results
PPTX
Good Chemistry: Alfresco, JBoss and CMIS
PPT
Co-Editing Complex Documents from Alfresco Share
PPT
Alfresco from an agile framework perspective
PPTX
The Power of Drupal and Alfresco Together
No Docker? No Problem: Automating installation and config with Ansible
Flexible Permissions Management with ACL Templates
Connecting Content Management Apps with CMIS
The Challenges of Keeping Bees
Join the Alfresco community
Intro to the Alfresco Public API
Alfresco Community Survey 2012 Results
Getting Started with CMIS
Alfresco SAUG: State of ECM
Alfresco SAUG: CMIS & Integrations
Should You Attend Alfresco Devcon 2011
2011 Alfresco Community Survey Results
Good Chemistry: Alfresco, JBoss and CMIS
Co-Editing Complex Documents from Alfresco Share
Alfresco from an agile framework perspective
The Power of Drupal and Alfresco Together

Recently uploaded (20)

PPTX
Cloud computing and distributed systems.
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Encapsulation theory and applications.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Machine learning based COVID-19 study performance prediction
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
Cloud computing and distributed systems.
Programs and apps: productivity, graphics, security and other tools
Encapsulation theory and applications.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Review of recent advances in non-invasive hemoglobin estimation
Machine learning based COVID-19 study performance prediction
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Big Data Technologies - Introduction.pptx
MIND Revenue Release Quarter 2 2025 Press Release
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Spectral efficient network and resource selection model in 5G networks
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
The AUB Centre for AI in Media Proposal.docx
20250228 LYD VKU AI Blended-Learning.pptx
MYSQL Presentation for SQL database connectivity
“AI and Expert System Decision Support & Business Intelligence Systems”

Alfresco: What every developer should know

  • 1. What Every New Developer Should Know About Alfresco Jeff Potts Chief Community Officer
  • 3. Content Models The rough equivalent to Data Definition Language in Alfresco
  • 4. Everything is a node, nodes are typed Content Model is expressed in XML • Defines types, aspects, properties, associations, const raints • Cold-deploy most common, hot deploy possible Hierarchical • Types inherit from super types Extend the out-of-the-box model with your own
  • 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. Rules You can automate a lot of content processing using rules that trigger rule actions
  • 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. Web Scripts Roll your own REST API using this MVC framework or leverage the out- of-the-box URLs
  • 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. 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. 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. CMIS CMIS is the preferred API for integrating with Alfresco
  • 13. The Beauty of CMIS My Custom Application Third-Party Systems CMIS API Standard integration Standard integration
  • 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 • http://localhost:8080/alfresco/cmisatom (4.x) For Java, Python, .NET, PHP, Objective- C, Android libraries see Apache Chemistry
  • 15. Extensions Avoid changing files included with the Alfresco distribution
  • 16. Use AMPs to package extensions An AMP is a ZIP with a special folder structure, a manifest, and a funny 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_An d_Deploying_Extensions
  • 17. Debugging Use the source, turn up logging verbosity, leverage one of many consoles
  • 18. 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
  • 19. Asking for Help Help the Alfresco community help you
  • 20. 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
  • 21. 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/alfre sco-api-java-examples/ https://github.com/jpotts/alfresc o-developer-series Full list at: http://www.alfresco.com/resources/doc umentation/getting-started

Editor's Notes

  • #3: This is not an exhaustive or very detailed list. This is basically what I’d tell someone just getting started with Alfresco if we had just enough time for a coffeePHOTO CREDIT: Coffee Shop by bunchofpants, cc by-nc-sa, http://www.flickr.com/photos/bunchofpants/100442520/
  • #5: Look for model management tools on http://addons.alfresco.comAt a bare minimum, you need a model-context.xml and a model.xml file. Most people will also have a UI config file for Share. See http://ecmarchitect.com for a tutorial.
  • #8: See http://ecmarchitect.com for a rule actions tutorial.
  • #10: See http://ecmarchitect.com for a web scripts tutorial.
  • #12: Emphasize the different set of objects point. This trips up a lot of people.A side-note, somewhat related is that JavaScript exists in both tiers and in the browser. So when you are debugging JavaScript or asking someone a question, it usually saves time if you clarify exactly where your JavaScript is running.
  • #13: See CMIS & Apache Chemistry in Action, by Florian Mueller, Jay Brown, and Jeff Potts, Manning (2013)
  • #15: Ruby, Perl, C++ libraries available elsewhere, not in Apache Chemistry (yet)
  • #16: Use a standard extension mechanism instead.