Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.



Published on

Coldfusion and Alfresco, does it work? Well it does, as easy as everything else in Coldfusion :)

What is Alfresco? Why would you want to use Alfresco and Coldfusion together?

Explore the different ways to create interfaces between them!

(The demo application is available on

Published in: Technology
  • Be the first to comment

  • Be the first to like this


  1. 1. UGBE<br />ColdFusion and Alfresco, does it work?<br />Yves Prignon<br />
  2. 2. Agenda<br />What is Alfresco?<br />Why would you want to use ColdFusion and Alfresco together?<br />Explore the different ways to create interfaces between them<br />The example<br />
  3. 3. What to expect?<br />
  4. 4. WhatisAlfresco?<br />Alfresco is a content platform<br />A set of services that developers can leverage to build applications like<br /><ul><li> User interface/presentation layer
  5. 5. Data model/persistance layer
  6. 6. Transactions
  7. 7. Security
  8. 8. Workflow/BPM
  9. 9. Integration hooks and Server side APIs or RESTful APIs
  10. 10. Scheduler
  11. 11. Development (config, custom, extend, manage, deploy) model</li></ul>open standards like CMIS (interop) or JSR168 (portlets)<br /><ul><li> Solution specific services such as search, transformation, web content management, collaboration, record management, document management</li></li></ul><li>Whatisit good at?<br />Straight Alfresco<br />Use cases: Typical ECM: Document management, imaging, records management, library, business process<br />Client: Web client UI is acceptable OOTB or with minor customizations; Office suites<br />Process: Simple to complex processes<br />Content: Document-centric<br />Alfresco as a Repository<br />Use cases: NGI applications, portals<br />Client: Custom; leverage a framework such as Liferay (Java) or Jboss Portal (Java) or any coldfusion application<br />Process: Simple to complex; may have integration requirements<br />Content: Content-centric<br />
  12. 12. Alfresco for Traditional WCM<br />Use cases: Enable non-technical users to manage mostly static web sites<br />Client: Web client<br />Process: Simple<br />Content: XML-centric<br />Alfresco for Dynamic WCM<br />Use cases: Enable both technical and non-technical users to work together to maintain a dynamic web site (application)<br />Client: Web client, Eclipse and other tools<br />Process: Simple to complex processes<br />Content: XML-centric<br />
  13. 13. Whatitisn’t good at<br />An issue of “could you” versus “should you”<br />You could use Alfresco to develop a CRM application but should you?<br />Alfresco as a platform for non-document- or non-content-centric solutions<br />Alfresco is built to handle content, not as a replacement to Hibernate<br />Source code management<br />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<br />Others?<br />
  14. 14. Why would you want to use ColdFusion and Alfresco together?<br />Why not?<br />The use of coldfusionwithalfrescoiswhatyoudecide to do withit<br />The best of the two world<br />Integrate CF CMS like mura with an existingenterprise directory or the contrary<br />Use coldfusion services<br />Wrote a completely independent front end using Coldfusion with alfresco/share as the backend<br />
  15. 15. Custom solution / protocol<br />CMIS<br />Servlet<br />WebService<br />WebScript / RESTFul APIs<br />Others? (WebDav, FTP, FileSystem)<br />Different ways to create interfaces between the two<br />
  16. 16. That wasmy first contact withalfrescosomeyearsago<br />The solution includeda custom java api with soap webservice support on alfresco side to access the repository. On the coldfusion side there was another api used to parse the xml and fill cfcs object. A little bit like hibernate. Well it was working but not performant at all!<br />Custom solution<br />
  17. 17. Content Management Interoperability Services (CMIS) is a specification for improving interoperability between Enterprise Content Management systems (Extend SOAP)<br />It provides a data model plus a set of generic services and several protocol bindings for these services, including SOAP and Representational State Transfer (REST) using the Atom convention<br />CMIS specification provides a Web services interface that:<br /> - Is language-agnostic (REST and SOAP are implemented in many languages)<br /> - Decouples web service and content. So CMIS can be used to acces to an historic document repository.<br />CMIS<br />
  18. 18. REST describes the following six constraints applied to the architecture, while leaving the implementation of the individual components free to design:<br /> - Client/Server (separation, ie client don’t care about data storage)<br /> - Stateless (session stuff on the client only)<br /> - Cacheable (call to an uri return always the same)<br /> - Layered system (client can’t tell if it is connected to a end server or an intermediary)<br /> - Code on demand (opt) (server can transfer code to client for execution)<br /> - Uniform interface (http get, put, post, delete)<br />Key goals are performance, scalability, simplicity, modifiability, visibility, portability and reliability<br />(Roy Fielding authors of HTTP 2k)<br />REST<br />
  19. 19. We can …<br />Have access to the whole Alfresco API<br />Define our own REST services and manipulate them from the process or the workflow<br />Authenticated calls<br />Easily testable and redeployable<br />WebScripts<br />
  20. 20.
  21. 21. Web scripts<br />Web Scripts interaction<br />The request arrives at the Web Script REST dispatcher. <br />The dispatcher finds the appropriate web script for the request (URL). If one is found, the dispatcher executes the web script, after successfully authenticating, if required. Then it invoke the Javascriptof the web script. <br />3. With Javascript, you have access to the full set of Alfresco repository content services. You can search for information, navigate around the repository, modify information, create new documents, set properties on those documents, move data around, and delete data. If it is not enough you can create your own java object that will directly interact with alfresco. <br />4. The result from the Javascriptis rendered using FreeMarker response templates. The response format can be HTML, ATOM, XML, RSS, JSON, CSV, or any combination of these. You must provide the appropriate templates. <br />5. The REST dispatcher sends the rendered results back via a response using the same protocol as URL request. <br />6. The web script client receives the response in the request format.<br />
  22. 22. The Exemple<br />
  23. 23. Now’s is the perfect time to ask plenty of questions …<br />Contact info<br />Yves Prignon<br /><br />Prignony (twitter)<br /><br />Thanksyou :D<br />