34
Spring Italian Conference Cagliari, September 4th 2010 1 Gabriele Columbro Senior Solutions Engineer, Alfresco EMEA [email protected] Content applications with Spring Surf & Chemistry OpenCMIS

0910 cagliari- spring surf and cmis - the dynamic duo

Embed Size (px)

Citation preview

Page 1: 0910 cagliari- spring surf and cmis - the dynamic duo

Spring Italian ConferenceCagliari, September 4th 2010

1

Gabriele ColumbroSenior Solutions Engineer, Alfresco EMEA

[email protected]

Content applications with

Spring Surf & Chemistry OpenCMIS

Page 2: 0910 cagliari- spring surf and cmis - the dynamic duo

2

Agenda

● Intro

● Spring Webscripts and Spring Surf

● CMIS made easy with OpenCMIS

● Demo: Surf OpenCMIS powered webapp

● Project Roadmaps

● Conclusions and Q/A

Page 3: 0910 cagliari- spring surf and cmis - the dynamic duo

3

Spring Italian ConferenceCagliari, September 4th 2010

3

Spring Surf and OpenCMIS

Introduction

Page 4: 0910 cagliari- spring surf and cmis - the dynamic duo

4

Who we are?

● Alfresco is leading the open source ECM● Document / Records Management finally accessible● Collaboration made easy● And ... Web Content Management, Image Management, Digital Asset

Management, * Content Management● 5 years old, alive and kicking

(biggest private open source company)

● Gabriele Columbro● Senior Solution Engineer for Alfresco EMEA● Since 4 years in Amsterdam● Open source enthusiast and committer for

• Apache Chemistry• Spring Surf• Alfresco

● Ahhh...and a Maven freak :)

Page 5: 0910 cagliari- spring surf and cmis - the dynamic duo

5

Surf in Cagliari? :)

Page 6: 0910 cagliari- spring surf and cmis - the dynamic duo

6

Got content?

Page 7: 0910 cagliari- spring surf and cmis - the dynamic duo

7

What are you going to do with it?

● Write it● Editors● Business representatives● UCG (User Generated Content)

● Process it● Transformations● Business processes● Branding

● Store it● Data vs metadata● Structured and unstructured● Archival and categorization

● But who cares about content which nobody will read? :)

● So fundamental step is...

Page 8: 0910 cagliari- spring surf and cmis - the dynamic duo

4

...Delivery!!!

Page 9: 0910 cagliari- spring surf and cmis - the dynamic duo

9

ECM and Content Delivery

● ECM Trends in last 3 years● Standardization with CMIS● Commoditization of the cloud● Everything is content!

● Content Delivery trends● Socialization of content ( 2 way channels )● Write once --> Deliver Everywhere (Servlet, Portlet, OpenSocial, etc.)● Lightweight frameworks

● Alfresco in 2007 was offering a JSF client● Hard to customize and not easily remotable● Hardcore java skills required --> rapid application development● Alfresco community demands a new way to deliver content

● Idea: Tailor make a content delivery framework for Alfresco● Component based page composition● Open Source● Open Standards based● Scriptable and extensible

Page 10: 0910 cagliari- spring surf and cmis - the dynamic duo

10

Spring Italian ConferenceCagliari, September 4th 2010

10

Spring Surf and OpenCMIS

Spring Webscripts and Surf

Page 11: 0910 cagliari- spring surf and cmis - the dynamic duo

11

Genesis of a framework

● 2007 ● Alfresco 2.1 introduces Alfresco Web Scripts

• Micro MVC ReST framework• Scriptable - Control in JS or Java• Templates in Freemarker

● Started development on so called Alfresco Web Framework based on Web Scripts

● 2008● Alfresco Web Framework is completed● AWF renamed to Alfresco Surf● Alfresco Share (Alfresco collaboration interface) is based con Alfresco Surf

● 2009● First contacts between Alfresco and Spring Source● Alfresco Webscripts and Surf integrated with Spring MVC● Alfresco Surf and Webscripts contributed as Spring Webscripts and Spring Surf

● 2010● 3 Milestones released (latest 1.0.0-M3)

Page 12: 0910 cagliari- spring surf and cmis - the dynamic duo

12

Spring Web Scripts

Page 13: 0910 cagliari- spring surf and cmis - the dynamic duo

13

Anatomy of a webscript

Description document

An xml file which describes the Web script's properties, for example its URI and HTTP method

binding. The name of this file must comply with the Web Script Framework as follows:-

<web script id>.<http method>.desc.xml

For example: foo.get.desc.xml

Controller script

A JavaScript file which contains the logic of the Web script. Its output on execution is a model to

render in the response template. The name of this file must comply with the Web script

Framework as follows:-

<web script id>.<http method>.js

For example: foo.get.js

Response template

A FreeMarker template which renders the output response. The template has access to the model

generated by the controller script, and the Web script's invocation context.The name of this file

must comply with the Web script Framework as follows:-

<web script id>.<http method>.<format>.ftl

For example: foo.get.html.ftl

Page 14: 0910 cagliari- spring surf and cmis - the dynamic duo

14

Java Backed Webscripts

Page 15: 0910 cagliari- spring surf and cmis - the dynamic duo

15

Spring Surf

● What Spring Surf is?1. A set of Spring MVC View Resolvers

• Page, Component (Webscript)• You can add your favorite Controller

2. A page composition framework• Modeling standard component based web engineering concepts• Pages, Templates, regions, components

3. Advanced remoting facilities• Modeling standard component based web engineering concepts1. Pages, Templates, regions, components

● A set of developer productivity tools• Spring Tool Suite integration1. Spring Roo extensions• Self documentation for Webscripts and Surf

1. What Spring Surf is NOT?● A Spring MVC controller (all in the view)1. Alfresco specific ● Being bought by Oracle :)

Page 16: 0910 cagliari- spring surf and cmis - the dynamic duo

16

Spring Surf Page composition

Page 17: 0910 cagliari- spring surf and cmis - the dynamic duo

17

Spring Surf Remoting

Page 18: 0910 cagliari- spring surf and cmis - the dynamic duo

18

Spring Surf Developer Tools

•Spring Roo Plugin for Surf•Command line scaffolding for Surf•Surf sites, pages, components•Web Scripts and CRUD operations•SpringSource Tool Suite•Plugin for Surf•Surf Application wizards•Maven Plugins•Documentation Generation•Maven Build Scripts•http://maven.alfresco.com•Javascript and Freemarkereditors•Platform•Spring Roo 1.0.2•Spring Framework 3.0.1

Page 19: 0910 cagliari- spring surf and cmis - the dynamic duo

19

And the content?

● Where can we “suck” content from?● Obviously Alfresco (pre-configured endpoint)● Any source for which we configured a triplet

[authenticator, connector, endpoint]

● CMIS offers a new way to look at Content Repositories● CMIS is the SQL for content management● All major ECM vendors are implementing CMIS

• Alfresco / Sharepoint / Documentum / Filenet / Oracle● Most open source delivery frameworks are riding the CMIS horse

• Drupal / Liferay / Django / Joomla ● But how can we have Surf and Webscripts speak CMIS?

● Apache Chemistry OpenCMIS is the answer!

Page 20: 0910 cagliari- spring surf and cmis - the dynamic duo

20

Spring Italian ConferenceCagliari, September 4th 2010

20

Spring Surf and OpenCMIS

CMIS made easy with OpenCMIS

Page 21: 0910 cagliari- spring surf and cmis - the dynamic duo

21

CMIS who?

● CMIS stands for “Content Management Interoperability Services”● 1.0 OASIS standard in April 2010● Standard domain model and services for content management● Cross-language, cross-protocol, cross-vendor

• Atom (pub) binding• SOAP binding• (v2) JSON browser binding

● CMIS use cases● Federation ● Migration● Transparent content delivery ● Mash up

● Content applications in a write once / use everywhere fashion

● Test it on: http://cmis.alfresco.com

Page 22: 0910 cagliari- spring surf and cmis - the dynamic duo

22

Chemistry OpenCMIS

● Fully fledged Java Implementation for the CMIS standard● API for client applications (AtomPub & SOAP)● Server bindings for server implementors● TCK for server validation● Caching and session management

● Based on a lightweight technology stack● StAX (Streaming API for XML)● Apache CXF for webservices● Build by Apache Maven

● State of the art ● Contributed to Apache by Alfresco / SAP / OpenText in early 2010● 5 committers from Alfresco● Merged with existing Chemistry codebase● Approaching 0.1 release (if I find some time :) )

● Allow developers to focus on the Content Domain Model!

Page 23: 0910 cagliari- spring surf and cmis - the dynamic duo

23

CMIS Domain Model

Page 24: 0910 cagliari- spring surf and cmis - the dynamic duo

24

Spring CMIS application browser

● OpenCMIS integrated in the Webscripts runtime● Offers a sample CMIS powered Surf Webscripts based application● Developed by Alfresco ● Allows remote multi repository access

● Features● Technology independent repository browsing● Content and metadata access● Federated search● Embeddable and extensible

● How can you use it?● Check out the Spring Surf Sandbox (

https://anonsvn.springframework.org/svn/se-surf/trunk/sandbox)● Wait for next Surf release :)● Check out the demo!

Page 25: 0910 cagliari- spring surf and cmis - the dynamic duo

25

Spring Italian ConferenceCagliari, September 4th 2010

25

Spring Surf and OpenCMIS

Demo: Spring Surf CMIS powered webapp

Page 26: 0910 cagliari- spring surf and cmis - the dynamic duo

26

Demo objectives

● Demo the spring-cmis-application-browser● Familiarize with STS Surf Add-on● Generate a sample Surf application

LocalAlfresco

8080

cmis.alfresco.com

80

Spring CMIS

Browser8081

Favourite CMIS server

Page 27: 0910 cagliari- spring surf and cmis - the dynamic duo

27

Surf Demo App

Page 28: 0910 cagliari- spring surf and cmis - the dynamic duo

28

Spring Italian ConferenceCagliari, September 4th 2010

28

Spring Surf and OpenCMIS

Project roadmaps

Page 29: 0910 cagliari- spring surf and cmis - the dynamic duo

29

Spring Surf work in progress

● Spring CMIS browser productized and fully Surf integrated

● Stabilization and 1.0 final release● Additional runtime integrations (using Spring

WebRequest)● Spring MVC Portlet (DEV_SPRING_PORTLET branch)● Open Social?

● Samples and documentation● Alfresco WCM Quickstart

Fully fledged WCM quick start application using Surf and Alfrescohttp://wiki.alfresco.com/wiki/WCM_Quick_Start_Developer_Guide

● Alfresco Web EditorSurf based in context content editor

Page 30: 0910 cagliari- spring surf and cmis - the dynamic duo

30

OpenCMIS approaching release

● OpenCMIS community growing● Server and client implementations complete● 0.1-RC1 rejected by Apache Incubator

(for legal packaging issues)● 0.1-RC2 undergoing

● Legal issues fixed● Apache mentors validating packages● Mid sept

Page 31: 0910 cagliari- spring surf and cmis - the dynamic duo

31

Spring Italian ConferenceCagliari, September 4th 2010

31

Spring Surf and OpenCMIS

Conclusions and Q/A

Page 32: 0910 cagliari- spring surf and cmis - the dynamic duo

32

Got Questions?

Page 33: 0910 cagliari- spring surf and cmis - the dynamic duo

33

References

● Alfresco● OpenCMIS● Spring Surf● WCM QuickStart● Spring CMIS browser

Page 34: 0910 cagliari- spring surf and cmis - the dynamic duo

34

Thanks!

Gabriele Columbro twitter: @mindthegabz

http://[email protected]