Your SlideShare is downloading. ×
Flex   alfresco
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Flex alfresco


Published on

  • 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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. MTC3 Flex – Alfresco Integration Case Study
  • 2. Flex - Alfresco • Goal : provide a Flex-based client to access Alfresco content repository • Why: • Improve user experience by delivering an easily cutomizable and highly-interactive interface • Seemless integration in the user desktop • Cross-platform • How : • First approach uses custom Java services • Second one uses Alfresco WebScripts (REST)
  • 3. Standard Alfresco Architecture Web Browser Alfresco Server Web client application Alfresco Repository Storage File DB System
  • 4. 1 Flex / Alfresco Architecture Flex Client AMF / HTTP Alfresco Server LiveCycle Data Services Service Service Alfresco Repository Foundation API Storage File DB System
  • 5. 1 Flex client Flex Client • Implemented using the Cairngorm micro-architecture • Uses serializable ActionScript objects (DTOs) that hold document meta-data • Access Java service through a RemoteObject (async RPC) • Borrows several components from the Flex community (multiple file upload, searchbox, …)
  • 6. 1 Serialization • LiveCycle Data Services is Adobe server-side component that allows communication between Flex client and Java application • Java serializable pojos are mapped to ActionScript objects (using annotations in ActionScript) • Serialization mechanism uses the AMF over HTTP protocol (binary) • Flex RemoteObject access Java services (pojos) using configured destinations in LC DS • In the future : replace the LiveCycle DS component with Adobe BlazeDS open-source alternative
  • 7. 1 Java services • Java services • Are just plain java objects • Use the Alfresco Foundation API to authenticate and manipulate the repository (store, create, search documents) • Can access services and beans defined in Spring • A Java Adapter has been created to : demarcate transaction on operations annotated with Spring Transaction annotation re-authenticate user on each subsequent service request (using the initial ticket returned by the authentication process)
  • 8. 2 Flex / Alfresco Architecture Flex Client HTTP Alfresco Server Alfresco Repository Web script Create and publish Web Script Platform Foundation API Storage File DB System
  • 9. 2 Flex / Alfresco • Flex client • Uses HTTPService instead of RemoteObject • Web Scripts • Are written in JavaScript • Can be registered at runtime • Can return HTML, ATOM, XML, RSS, JSON, CSV, … (using Freemarker templates) • LiveCycle Data Services and custom Java services are no longer needed
  • 10. Comparison • First version • - More complex deployment (LC Data Services, custom Java services) • - Less productive : must maintain DTOs in Java/AS and Java services each service change requires re-deployment / server restart • + More efficient • Requires knowledge of Flex, Java and Alfresco Foundation API • Second version • + Easily deployable (no server-side component) • + Quickly implemented using JavaScript • - hard to debug JavaScript (logging required) • - Restricted to the functions exposed by the JavaScript engine unless … • + Can be implemented in Java to have access to the Foundation API • Requires knowledge of Flex, JavaScript (basic), Alfresco JavaScript API, Freemarker template
  • 11. Conclusions • Several options to create an Alfresco client: • Protocols : FTP, WebDAV, CIFS • APIs: Web Services Web Scripts Custom solution that uses the Alfresco Foundation API directly • Next Step : create an AIR application to leverage integration with user’s desktop • Drag-n-Drop documents (inbound/outbound) • Access file system • Embedded SQL DB to provide ‘offline’ functions ? • Even further : a Silverlight / JavaFX client ?