Alfresco as a platform Thoughts for discussion | March, 2007 What is a platform? Set of services that developers can leverage to build applications The services that are important vary by solution User interface/presentation layer Data model/persistance layer Library services Transactions Security Workflow/BPM Integration hooks Scheduler Server-side API Development (config, customize, extend, manage, deploy) model Solution-specific services such as search, transformation Marketing guys want to sell platforms • Infinity: “It's not an automobile, it is a sound studio on wheels.” 2 Platform or not? These are examples of platforms • Lotus Notes/Domino • ATG/Dynamo • Vignette • Zope • Documentum These are examples of tools, frameworks, and niche solutions • LAMP, PHP, Symfony • J2EE, Tomcat, JBoss, Spring • Most mid-market ECM solutions Does it matter? 3 So is Alfresco a platform? Yes. Alfresco is a platform for content-centric solutions. It provides all of the services mentioned earlier... User interface/presentation layer: Spring/MyFaces Data model/persistance layer: Extensible content model Library services: Check-in/check-out, versioning Transactions: Configurable via Spring Security: Authenticate against LDAP, define custom roles Workflow/BPM: Simple workflows or embedded JBPM Integration hooks: Write your own actions or policies that will call other apps with Java; Other apps integrate with Alfresco via JCR or Web Services Scheduler: Leverages Quartz scheduler Server-side API: Via the Rhino JavaScript engine Development (config, customize, extend, manage, deploy) model: Create light extensions through Freemarker, heavier customizations via Java Solution-specific services such as search, transformation: Lucene handles search; Some content Okay, transformers OOTB; Addbut for whatprovided types of solutions? 4 ons for things like records management Four Alfresco patterns Straight Alfresco • Use cases: Typical ECM: Document management, imaging, records management • Client: Web client UI is acceptable OOTB or with minor customizations; Office suites • Process: Simple to complex processes • Content: Document-centric Alfresco as a Repository • Use cases: NGI applications, portals • Client: Custom; leverage a framework such as Symfony (PHP), Liferay (Java), or Jboss Portal (Java) • Process: Simple to complex; may have integration requirements • Content: Content-centric 5 Four Alfresco patterns Alfresco for Traditional WCM • Use cases: Enable non-technical users to manage mostly static web sites • Client: Web client • Process: Simple • Content: XML-centric Alfresco for Dynamic WCM • Use cases: Enable both technical and non-technical users to work together to maintain a dynamic web site (application) • Client: Web client, Eclipse and other tools • Process: Simple to complex processes • Content: XML-centric 6 Alfresco anti-patterns An issue of “could you” versus “should you” • You could use Alfresco to develop a CRM application but should you? Alfresco as the portal or community • Alfresco is not there yet, but watch for developments in this area Alfresco as a platform for non-document- or noncontent-centric solutions • Alfresco is built to handle content, not as a replacement to Hibernate Source code management [Brought up by one of the meet-up participants] • Until Alfresco supports the SVN protocol, developers probably will not be willing to give up their current tools to use Alfresco for source code management Others? 7 Contact info Jeff Potts, Optaros Personal blog: http://ecmarchitect.com Optaros web site: http://www.optaros.com 8