SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Alfresco Surf Code Camp
Introduction
Objectives

                 By the end of this module you should know
                     • How Surf came to be
                     • Why learning something about Surf makes sense
                     • High-level Surf concepts




07/11/08   Optaros and Client confidential. All rights reserved.       2
Why Surf?
Alfresco gap: The WCM “blinking cursor”

                 Alfresco is a “decoupled” CMS
                     • Unlike Drupal, there is no “Default Web Site” that you get out-of-
                       the-box with Alfresco

                 Alfresco Dynamic Web Site
                     • Tried to address this gap
                     • Example web site, set of web forms, JSPs, navigation management
                     • Showed one way to build a dynamic web site on top of Alfresco

                 Other developments at about this time
                     • Web Script Framework launched
                     • Growing frustration with limitations of JSF
                     • Desire to separate the “web client” from the “repository”
                     • Explosion of REST/AJAX toolkits and web application development
                       frameworks




07/11/08   Optaros and Client confidential. All rights reserved.                            4
Need: A new framework for Alfresco-centric
           apps

                 Engineering needed a new framework to replace JSF
                     • Rebuild the web client, make it easier to reuse web client
                       components
                     • Build new clients like Share

                 Alfresco was looking for a way to broaden community
                 involvement
                     • Need an easy way to develop and share “components”
                     • Lightweight framework that is fun/fast to code

                 Customers wanted a way to build Alfresco-centric apps
                 fast
                     • Lightweight framework
                     • Eventually, browser-based “page builder” type of tool




07/11/08   Optaros and Client confidential. All rights reserved.                    5
Surf is born

                 Web application development framework
                 Web scripts at its core, plus:
                     • Presentation tier concepts such as “page”, “theme”,
                       “components”
                     • Rudimentary navigation
                     • API for making remote calls to Alfresco web scripts (or any other
                       HTTP endpoint)
                     • Alfresco concepts such as associating pages with Alfresco content
                       types

                 All configuration is done through XML
                 Deploys as a web application
                     • Can be separate app server or even separate physical node from
                       the Alfresco repository

                 Alfresco Share is Alfresco's first Surf-based application


07/11/08   Optaros and Client confidential. All rights reserved.                           6
Yet Another Web Framework?

                 Alfresco Services (REST & SOAP) make it easy to build
                 solutions with various front-end technologies
                     • Java portal servers: Liferay, JBoss Portal, etc.
                     • Java frameworks: Spring, JBoss SEAM
                     • PHP portal servers: Drupal
                     • P-Language frameworks: Symfony (PHP), Django (Python)

                 Does the world need another framework? If not, what
                 are we doing here?
                     • Learn how to customize and extend Alfresco clients built on Surf
                     • Help expand the community by building Surf components others
                       can incorporate in their Surf-based clients or custom sites
                     • Establish Surf as an option for the development of complete
                       Alfresco-based web apps when none of the more widely-adopted
                       frameworks don't meet our needs



07/11/08   Optaros and Client confidential. All rights reserved.                          7
Technical Overview
Alfresco Surf Design Objectives

             Lightweight and Scriptable
              • Web Scripts for User Interface

             Easy to Customize
              • XML Configuration files

             Works with Alfresco WCM
              • Manage the site using Alfresco WCM
              • Read and write from AVM stores

             Site Construction model / Component model
              • Provided out-of-the-box and extensible

             Site Dispatcher
              • Provided out-of-the-box and extensible

             Developer API
07/11/08                                                 9
Alfresco Surf Architecture

             Presentation Tier
              • Alfresco Surf-Powered Application
              • Web Script Runtime
              • FreeMarker Processor
              • Spring
              • Some 3rd party libraries

             Repository Tier
              • Alfresco Repository
              • REST Interface to outside world
              • Web Script Runtime
              • FreeMarker Processor
              • Spring
              • Hibernate
              • 3rd party libraries

07/11/08                                            10
Two Tier Architecture

               Model             Presentation Tier
              Objects




                                                                 Dispa
                                                                 tcher
                 Pages               Spring         FreeMarker
             Templates
           Components              Web Scripts         Surf
               Themes
           Associations

                                   Connectors

                          JSON                   JSON


                                      REST
            Web Scripts
                                                                     Content
                                                                     Graph
              Repository
                   CMIS
                                                                     Documents
                  Social
                                                                     Folders
                      UI
                                                                     Associations
                                                                     Aspects
                                  Repository Tier


07/11/08                                                                            11
Model-View-Controller

             Two Levels

             Page Construction

             Renderers




07/11/08                           12
Page Contruction vs. Renderer


               Page


                Renderer




                Renderer   Renderer




                Renderer




07/11/08                                   13
Web Script Renderer Model-View-Controller




                           All your base are
                             belong to us!




                                               Controller
                               Java Script


                 View                                       Model

                                                            Document
            FreeMarker                                      Metadata
                  PHP                                       Root-Scoped
                  XSL                                       Context
                                                            Config




07/11/08                                                                  14
Web Script Renderer Model-View-Controller

             Model
              • Alfresco Repository elements (i.e. document, person, space, etc)
              • Root-scoped variables like search, avm, url
              • Configuration loaded from config files

             View
              • FreeMarker FTL
              • Alternative Template Processors (PHP, XSL)

             Controller
              • Java Script or JavaBeans if you write java-backed web scripts




07/11/08                                                                           15
Page Construction Model-View-Controller




                                     All your base are
                                       belong to us!




                                      Site
                                                         Controller
                                   Dispatcher

                    Renderers                                         Model Objects

                                                                      Pages
           Freemarker Templates
                                                                      Template Instances
                        Chrome
                                                                      Components
                          HTML
                                                                      Themes
                            JSP
                                                                      Associations




07/11/08                                                                              16
Page Construction Model-View-Controller

             Model
              • Template Instances          • Template Types
              • Components                  • Component Types
              • Pages                       • Page Types
              • Page Associations           • Configurations
              • Content Associations        • Chrome
              • Themes

             View
              • Renderers such as Web Script Renderer, JSP Renderer, etc

             Controller
              • Site Dispatcher (XML configurable)




07/11/08                                                                   17
Learning Alfresco Surf

             Renderers
              • Build a component
              • Learn about remoting

             Site Dispatching
              • Build a site
              • Learn about site composition

             Put it all together
              • See if we can do something cool




07/11/08                                          18
Renderers

             Out of the Box Renderers
              • Web Script
              • Java Bean
              • JSP
              • FTL

             Let’s start with Web Scripts
              • The most common and most powerful rendering facility
              • No Java coding, no server restarts
              • Rich underlying API for easy extension

             Most Surf Components will be written using Web
             Scripts!

             Surf allows you to build your own renderers in
             addition to the ones that it provides out-of-the-box
07/11/08                                                               19
Web Scripts

             Presentation Web Scripts
              • Web Scripts on the Presentation Tier
              • Responsible for generating markup (HTML)
              • Isolated from Alfresco Repository
              • Model context purely derived from framework (no “document”)
              • Can call over to Alfresco using “remote” variable

             Data Web Scripts
              • Web Scripts on the Repository Tier
              • Responsible for generating JSON, XML (ATOM) or other serialized
                data format
              • Wired into the Alfresco Repository
              • Context includes Alfresco Repository elements (“document”)




07/11/08                                                                          20
How are Presentation Web Scripts used?

             Surf Components

             Share Dashlets




07/11/08                                            21
Web Script Review

             http://wiki.alfresco.com/wiki/Web_Scripts

             Writing a Presentation Web Script
              • Same as writing a Repository Web Script




07/11/08                                                  22
Wrap-up

                 In this module, you learned...
                     • Surf evolved out of early efforts to provide a site building
                       framework on top of Alfresco
                     • There are many ways to build presentation tiers on top of Alfresco
                       —Surf is the one chosen by Alfresco to build their clients
                     • Surf is a two-tier web application framework
                     • Each tier follows an MVC pattern
                     • Web scripts on the Surf or presentation tier can communicate with
                       the repository remotely
                     • Web scripts on the repository tier return serialized data as JSON or
                       XML




07/11/08   Optaros and Client confidential. All rights reserved.                          23

Contenu connexe

Tendances

<Head> Presentation: Plugging Into Wordpress
<Head> Presentation: Plugging Into Wordpress<Head> Presentation: Plugging Into Wordpress
<Head> Presentation: Plugging Into WordpressMatt Harris
 
Web Apps atop a Content Repository
Web Apps atop a Content RepositoryWeb Apps atop a Content Repository
Web Apps atop a Content RepositoryGabriel Walt
 
Making Life Easier with PowerShell (SPSVB 2012)
Making Life Easier with PowerShell (SPSVB 2012)Making Life Easier with PowerShell (SPSVB 2012)
Making Life Easier with PowerShell (SPSVB 2012)Michael Greene
 
[DSBW Spring 2009] Unit 02: Web Technologies (2/2)
[DSBW Spring 2009] Unit 02: Web Technologies (2/2)[DSBW Spring 2009] Unit 02: Web Technologies (2/2)
[DSBW Spring 2009] Unit 02: Web Technologies (2/2)Carles Farré
 
IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.
IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.
IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.Dacartec Servicios Informáticos
 
Extreme Web Productivity with Spring Roo
Extreme Web Productivity with Spring RooExtreme Web Productivity with Spring Roo
Extreme Web Productivity with Spring RooStefan Schmidt
 
Nuxeo Corporate Presentation - April 2007
Nuxeo Corporate Presentation - April 2007Nuxeo Corporate Presentation - April 2007
Nuxeo Corporate Presentation - April 2007Stefane Fermigier
 
Web Frontend development: tools and good practices to (re)organize the chaos
Web Frontend development: tools and good practices to (re)organize the chaosWeb Frontend development: tools and good practices to (re)organize the chaos
Web Frontend development: tools and good practices to (re)organize the chaosMatteo Papadopoulos
 
浜松Rails3道場 其の弐 Model編
浜松Rails3道場 其の弐 Model編 浜松Rails3道場 其の弐 Model編
浜松Rails3道場 其の弐 Model編 Masakuni Kato
 
The Solar Framework for PHP 5 (2010 Confoo)
The Solar Framework for PHP 5 (2010 Confoo)The Solar Framework for PHP 5 (2010 Confoo)
The Solar Framework for PHP 5 (2010 Confoo)Paul Jones
 
Ruby on Rails 2.1 What's New
Ruby on Rails 2.1 What's NewRuby on Rails 2.1 What's New
Ruby on Rails 2.1 What's NewLibin Pan
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress PluginBrad Williams
 
Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)Paul Jones
 
AK 3 web services using apache axis
AK 3   web services using apache axisAK 3   web services using apache axis
AK 3 web services using apache axisgauravashq
 
O que há de novo no Rails 3
O que há de novo no Rails 3O que há de novo no Rails 3
O que há de novo no Rails 3Hugo Baraúna
 

Tendances (20)

Crx 2.2 Deep-Dive
Crx 2.2 Deep-DiveCrx 2.2 Deep-Dive
Crx 2.2 Deep-Dive
 
<Head> Presentation: Plugging Into Wordpress
<Head> Presentation: Plugging Into Wordpress<Head> Presentation: Plugging Into Wordpress
<Head> Presentation: Plugging Into Wordpress
 
Web Apps atop a Content Repository
Web Apps atop a Content RepositoryWeb Apps atop a Content Repository
Web Apps atop a Content Repository
 
Making Life Easier with PowerShell (SPSVB 2012)
Making Life Easier with PowerShell (SPSVB 2012)Making Life Easier with PowerShell (SPSVB 2012)
Making Life Easier with PowerShell (SPSVB 2012)
 
[DSBW Spring 2009] Unit 02: Web Technologies (2/2)
[DSBW Spring 2009] Unit 02: Web Technologies (2/2)[DSBW Spring 2009] Unit 02: Web Technologies (2/2)
[DSBW Spring 2009] Unit 02: Web Technologies (2/2)
 
CQ 5.4 Deep-Dive
CQ 5.4 Deep-DiveCQ 5.4 Deep-Dive
CQ 5.4 Deep-Dive
 
IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.
IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.
IBM WebSphere Portal Integrator for SAP - Escenario de ejemplo.
 
Extreme Web Productivity with Spring Roo
Extreme Web Productivity with Spring RooExtreme Web Productivity with Spring Roo
Extreme Web Productivity with Spring Roo
 
Java presentation
Java presentationJava presentation
Java presentation
 
BPMS1
BPMS1BPMS1
BPMS1
 
Nuxeo Corporate Presentation - April 2007
Nuxeo Corporate Presentation - April 2007Nuxeo Corporate Presentation - April 2007
Nuxeo Corporate Presentation - April 2007
 
Web Frontend development: tools and good practices to (re)organize the chaos
Web Frontend development: tools and good practices to (re)organize the chaosWeb Frontend development: tools and good practices to (re)organize the chaos
Web Frontend development: tools and good practices to (re)organize the chaos
 
浜松Rails3道場 其の弐 Model編
浜松Rails3道場 其の弐 Model編 浜松Rails3道場 其の弐 Model編
浜松Rails3道場 其の弐 Model編
 
The Solar Framework for PHP 5 (2010 Confoo)
The Solar Framework for PHP 5 (2010 Confoo)The Solar Framework for PHP 5 (2010 Confoo)
The Solar Framework for PHP 5 (2010 Confoo)
 
Ruby on Rails 2.1 What's New
Ruby on Rails 2.1 What's NewRuby on Rails 2.1 What's New
Ruby on Rails 2.1 What's New
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress Plugin
 
Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)
 
AK 3 web services using apache axis
AK 3   web services using apache axisAK 3   web services using apache axis
AK 3 web services using apache axis
 
Ugo Cei Presentation
Ugo Cei PresentationUgo Cei Presentation
Ugo Cei Presentation
 
O que há de novo no Rails 3
O que há de novo no Rails 3O que há de novo no Rails 3
O que há de novo no Rails 3
 

En vedette

Optaros Surf Code Camp Walkthrough 1
Optaros Surf Code Camp Walkthrough 1Optaros Surf Code Camp Walkthrough 1
Optaros Surf Code Camp Walkthrough 1Jeff Potts
 
Optaros Surf Code Camp Agenda
Optaros Surf Code Camp AgendaOptaros Surf Code Camp Agenda
Optaros Surf Code Camp AgendaJeff Potts
 
Grote brand Stacaravan
Grote brand StacaravanGrote brand Stacaravan
Grote brand Stacaravanmmm112
 
wegdek reinigen helden
wegdek reinigen heldenwegdek reinigen helden
wegdek reinigen heldenmmm112
 

En vedette (6)

Optaros Surf Code Camp Walkthrough 1
Optaros Surf Code Camp Walkthrough 1Optaros Surf Code Camp Walkthrough 1
Optaros Surf Code Camp Walkthrough 1
 
Optaros Surf Code Camp Agenda
Optaros Surf Code Camp AgendaOptaros Surf Code Camp Agenda
Optaros Surf Code Camp Agenda
 
Grote brand Stacaravan
Grote brand StacaravanGrote brand Stacaravan
Grote brand Stacaravan
 
wegdek reinigen helden
wegdek reinigen heldenwegdek reinigen helden
wegdek reinigen helden
 
Indian IT
Indian ITIndian IT
Indian IT
 
How To Blog
How To BlogHow To Blog
How To Blog
 

Similaire à Optaros Surf Code Camp Introduction

Developer’s intro to the alfresco platform
Developer’s intro to the alfresco platformDeveloper’s intro to the alfresco platform
Developer’s intro to the alfresco platformAlfresco Software
 
WCM Roadmap Versions 3 3 And 4 0
WCM Roadmap Versions 3 3 And 4 0WCM Roadmap Versions 3 3 And 4 0
WCM Roadmap Versions 3 3 And 4 0Alfresco Software
 
WebBee rapid web app development teck stack
WebBee rapid web app development teck stackWebBee rapid web app development teck stack
WebBee rapid web app development teck stackALDAN3
 
RIA Platform Comparison
RIA Platform ComparisonRIA Platform Comparison
RIA Platform ComparisonOliver Steele
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFrançois Le Droff
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?jbandi
 
December 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig PresentationDecember 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig PresentationJonathan Abrams
 
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Nicole Szigeti
 
Introduction To J Boss Seam
Introduction To J Boss SeamIntroduction To J Boss Seam
Introduction To J Boss Seamashishkulkarni
 
IBM - Developing portlets using Script portlet in WP 8001
IBM - Developing portlets using Script portlet in WP 8001IBM - Developing portlets using Script portlet in WP 8001
IBM - Developing portlets using Script portlet in WP 8001Vinayak Tavargeri
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applicationsSC5.io
 
Alfresco WCM For High Scalability
Alfresco WCM For High ScalabilityAlfresco WCM For High Scalability
Alfresco WCM For High ScalabilityAlfresco Software
 
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Enterprise Java in 2012 and Beyond, by Juergen Hoeller Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Enterprise Java in 2012 and Beyond, by Juergen Hoeller Codemotion
 
SAP NetWeaver Portal OnDevice - Consuming your SAP NetWeaver Portal On Mobile...
SAP NetWeaver Portal OnDevice - Consuming your SAP NetWeaver Portal On Mobile...SAP NetWeaver Portal OnDevice - Consuming your SAP NetWeaver Portal On Mobile...
SAP NetWeaver Portal OnDevice - Consuming your SAP NetWeaver Portal On Mobile...SAP Portal
 
Apache Flex: Overview
Apache Flex: OverviewApache Flex: Overview
Apache Flex: OverviewTarun Telang
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | IntroductionJohnTaieb
 

Similaire à Optaros Surf Code Camp Introduction (20)

Developer’s intro to the alfresco platform
Developer’s intro to the alfresco platformDeveloper’s intro to the alfresco platform
Developer’s intro to the alfresco platform
 
WCM Roadmap Versions 3 3 And 4 0
WCM Roadmap Versions 3 3 And 4 0WCM Roadmap Versions 3 3 And 4 0
WCM Roadmap Versions 3 3 And 4 0
 
WebBee rapid web app development teck stack
WebBee rapid web app development teck stackWebBee rapid web app development teck stack
WebBee rapid web app development teck stack
 
RIA Platform Comparison
RIA Platform ComparisonRIA Platform Comparison
RIA Platform Comparison
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?
 
December 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig PresentationDecember 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig Presentation
 
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
 
Introduction To J Boss Seam
Introduction To J Boss SeamIntroduction To J Boss Seam
Introduction To J Boss Seam
 
IBM - Developing portlets using Script portlet in WP 8001
IBM - Developing portlets using Script portlet in WP 8001IBM - Developing portlets using Script portlet in WP 8001
IBM - Developing portlets using Script portlet in WP 8001
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applications
 
Alfresco WCM For High Scalability
Alfresco WCM For High ScalabilityAlfresco WCM For High Scalability
Alfresco WCM For High Scalability
 
Webdevelopment
WebdevelopmentWebdevelopment
Webdevelopment
 
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Enterprise Java in 2012 and Beyond, by Juergen Hoeller Enterprise Java in 2012 and Beyond, by Juergen Hoeller
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
 
Project Zero JavaOne 2008
Project Zero JavaOne 2008Project Zero JavaOne 2008
Project Zero JavaOne 2008
 
SAP NetWeaver Portal OnDevice - Consuming your SAP NetWeaver Portal On Mobile...
SAP NetWeaver Portal OnDevice - Consuming your SAP NetWeaver Portal On Mobile...SAP NetWeaver Portal OnDevice - Consuming your SAP NetWeaver Portal On Mobile...
SAP NetWeaver Portal OnDevice - Consuming your SAP NetWeaver Portal On Mobile...
 
Apache Flex: Overview
Apache Flex: OverviewApache Flex: Overview
Apache Flex: Overview
 
Jspx Jdc2010
Jspx Jdc2010Jspx Jdc2010
Jspx Jdc2010
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | Introduction
 
Frameworks in java
Frameworks in javaFrameworks in java
Frameworks in java
 

Plus de Jeff Potts

No Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with AnsibleNo Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with AnsibleJeff Potts
 
Moving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to MicroservicesMoving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to MicroservicesJeff Potts
 
Flexible Permissions Management with ACL Templates
Flexible Permissions Management with ACL TemplatesFlexible Permissions Management with ACL Templates
Flexible Permissions Management with ACL TemplatesJeff Potts
 
Moving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryMoving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryJeff Potts
 
Could Alfresco Survive a Zombie Attack?
Could Alfresco Survive a Zombie Attack?Could Alfresco Survive a Zombie Attack?
Could Alfresco Survive a Zombie Attack?Jeff Potts
 
Connecting Content Management Apps with CMIS
Connecting Content Management Apps with CMISConnecting Content Management Apps with CMIS
Connecting Content Management Apps with CMISJeff Potts
 
The Challenges of Keeping Bees
The Challenges of Keeping BeesThe Challenges of Keeping Bees
The Challenges of Keeping BeesJeff Potts
 
Getting Started With CMIS
Getting Started With CMISGetting Started With CMIS
Getting Started With CMISJeff Potts
 
Alfresco: What every developer should know
Alfresco: What every developer should knowAlfresco: What every developer should know
Alfresco: What every developer should knowJeff Potts
 
CMIS: An Open API for Managing Content
CMIS: An Open API for Managing ContentCMIS: An Open API for Managing Content
CMIS: An Open API for Managing ContentJeff Potts
 
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...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...Jeff Potts
 
Alfresco: The Story of How Open Source Disrupted the ECM Market
Alfresco: The Story of How Open Source Disrupted the ECM MarketAlfresco: The Story of How Open Source Disrupted the ECM Market
Alfresco: The Story of How Open Source Disrupted the ECM MarketJeff Potts
 
Join the Alfresco community
Join the Alfresco communityJoin the Alfresco community
Join the Alfresco communityJeff Potts
 
Intro to the Alfresco Public API
Intro to the Alfresco Public APIIntro to the Alfresco Public API
Intro to the Alfresco Public APIJeff Potts
 
Apache Chemistry in Action
Apache Chemistry in ActionApache Chemistry in Action
Apache Chemistry in ActionJeff Potts
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIJeff Potts
 
Alfresco Community Survey 2012 Results
Alfresco Community Survey 2012 ResultsAlfresco Community Survey 2012 Results
Alfresco Community Survey 2012 ResultsJeff Potts
 
Getting Started with CMIS
Getting Started with CMISGetting Started with CMIS
Getting Started with CMISJeff Potts
 
Relational Won't Cut It: Architecting Content Centric Apps
Relational Won't Cut It: Architecting Content Centric AppsRelational Won't Cut It: Architecting Content Centric Apps
Relational Won't Cut It: Architecting Content Centric AppsJeff Potts
 
Alfresco SAUG: State of ECM
Alfresco SAUG: State of ECMAlfresco SAUG: State of ECM
Alfresco SAUG: State of ECMJeff Potts
 

Plus de Jeff Potts (20)

No Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with AnsibleNo Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with Ansible
 
Moving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to MicroservicesMoving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to Microservices
 
Flexible Permissions Management with ACL Templates
Flexible Permissions Management with ACL TemplatesFlexible Permissions Management with ACL Templates
Flexible Permissions Management with ACL Templates
 
Moving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryMoving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco Repository
 
Could Alfresco Survive a Zombie Attack?
Could Alfresco Survive a Zombie Attack?Could Alfresco Survive a Zombie Attack?
Could Alfresco Survive a Zombie Attack?
 
Connecting Content Management Apps with CMIS
Connecting Content Management Apps with CMISConnecting Content Management Apps with CMIS
Connecting Content Management Apps with CMIS
 
The Challenges of Keeping Bees
The Challenges of Keeping BeesThe Challenges of Keeping Bees
The Challenges of Keeping Bees
 
Getting Started With CMIS
Getting Started With CMISGetting Started With CMIS
Getting Started With CMIS
 
Alfresco: What every developer should know
Alfresco: What every developer should knowAlfresco: What every developer should know
Alfresco: What every developer should know
 
CMIS: An Open API for Managing Content
CMIS: An Open API for Managing ContentCMIS: An Open API for Managing Content
CMIS: An Open API for Managing Content
 
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...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...
 
Alfresco: The Story of How Open Source Disrupted the ECM Market
Alfresco: The Story of How Open Source Disrupted the ECM MarketAlfresco: The Story of How Open Source Disrupted the ECM Market
Alfresco: The Story of How Open Source Disrupted the ECM Market
 
Join the Alfresco community
Join the Alfresco communityJoin the Alfresco community
Join the Alfresco community
 
Intro to the Alfresco Public API
Intro to the Alfresco Public APIIntro to the Alfresco Public API
Intro to the Alfresco Public API
 
Apache Chemistry in Action
Apache Chemistry in ActionApache Chemistry in Action
Apache Chemistry in Action
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
 
Alfresco Community Survey 2012 Results
Alfresco Community Survey 2012 ResultsAlfresco Community Survey 2012 Results
Alfresco Community Survey 2012 Results
 
Getting Started with CMIS
Getting Started with CMISGetting Started with CMIS
Getting Started with CMIS
 
Relational Won't Cut It: Architecting Content Centric Apps
Relational Won't Cut It: Architecting Content Centric AppsRelational Won't Cut It: Architecting Content Centric Apps
Relational Won't Cut It: Architecting Content Centric Apps
 
Alfresco SAUG: State of ECM
Alfresco SAUG: State of ECMAlfresco SAUG: State of ECM
Alfresco SAUG: State of ECM
 

Dernier

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Dernier (20)

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

Optaros Surf Code Camp Introduction

  • 1. Alfresco Surf Code Camp Introduction
  • 2. Objectives By the end of this module you should know • How Surf came to be • Why learning something about Surf makes sense • High-level Surf concepts 07/11/08 Optaros and Client confidential. All rights reserved. 2
  • 4. Alfresco gap: The WCM “blinking cursor” Alfresco is a “decoupled” CMS • Unlike Drupal, there is no “Default Web Site” that you get out-of- the-box with Alfresco Alfresco Dynamic Web Site • Tried to address this gap • Example web site, set of web forms, JSPs, navigation management • Showed one way to build a dynamic web site on top of Alfresco Other developments at about this time • Web Script Framework launched • Growing frustration with limitations of JSF • Desire to separate the “web client” from the “repository” • Explosion of REST/AJAX toolkits and web application development frameworks 07/11/08 Optaros and Client confidential. All rights reserved. 4
  • 5. Need: A new framework for Alfresco-centric apps Engineering needed a new framework to replace JSF • Rebuild the web client, make it easier to reuse web client components • Build new clients like Share Alfresco was looking for a way to broaden community involvement • Need an easy way to develop and share “components” • Lightweight framework that is fun/fast to code Customers wanted a way to build Alfresco-centric apps fast • Lightweight framework • Eventually, browser-based “page builder” type of tool 07/11/08 Optaros and Client confidential. All rights reserved. 5
  • 6. Surf is born Web application development framework Web scripts at its core, plus: • Presentation tier concepts such as “page”, “theme”, “components” • Rudimentary navigation • API for making remote calls to Alfresco web scripts (or any other HTTP endpoint) • Alfresco concepts such as associating pages with Alfresco content types All configuration is done through XML Deploys as a web application • Can be separate app server or even separate physical node from the Alfresco repository Alfresco Share is Alfresco's first Surf-based application 07/11/08 Optaros and Client confidential. All rights reserved. 6
  • 7. Yet Another Web Framework? Alfresco Services (REST & SOAP) make it easy to build solutions with various front-end technologies • Java portal servers: Liferay, JBoss Portal, etc. • Java frameworks: Spring, JBoss SEAM • PHP portal servers: Drupal • P-Language frameworks: Symfony (PHP), Django (Python) Does the world need another framework? If not, what are we doing here? • Learn how to customize and extend Alfresco clients built on Surf • Help expand the community by building Surf components others can incorporate in their Surf-based clients or custom sites • Establish Surf as an option for the development of complete Alfresco-based web apps when none of the more widely-adopted frameworks don't meet our needs 07/11/08 Optaros and Client confidential. All rights reserved. 7
  • 9. Alfresco Surf Design Objectives Lightweight and Scriptable • Web Scripts for User Interface Easy to Customize • XML Configuration files Works with Alfresco WCM • Manage the site using Alfresco WCM • Read and write from AVM stores Site Construction model / Component model • Provided out-of-the-box and extensible Site Dispatcher • Provided out-of-the-box and extensible Developer API 07/11/08 9
  • 10. Alfresco Surf Architecture Presentation Tier • Alfresco Surf-Powered Application • Web Script Runtime • FreeMarker Processor • Spring • Some 3rd party libraries Repository Tier • Alfresco Repository • REST Interface to outside world • Web Script Runtime • FreeMarker Processor • Spring • Hibernate • 3rd party libraries 07/11/08 10
  • 11. Two Tier Architecture Model Presentation Tier Objects Dispa tcher Pages Spring FreeMarker Templates Components Web Scripts Surf Themes Associations Connectors JSON JSON REST Web Scripts Content Graph Repository CMIS Documents Social Folders UI Associations Aspects Repository Tier 07/11/08 11
  • 12. Model-View-Controller Two Levels Page Construction Renderers 07/11/08 12
  • 13. Page Contruction vs. Renderer Page Renderer Renderer Renderer Renderer 07/11/08 13
  • 14. Web Script Renderer Model-View-Controller All your base are belong to us! Controller Java Script View Model Document FreeMarker Metadata PHP Root-Scoped XSL Context Config 07/11/08 14
  • 15. Web Script Renderer Model-View-Controller Model • Alfresco Repository elements (i.e. document, person, space, etc) • Root-scoped variables like search, avm, url • Configuration loaded from config files View • FreeMarker FTL • Alternative Template Processors (PHP, XSL) Controller • Java Script or JavaBeans if you write java-backed web scripts 07/11/08 15
  • 16. Page Construction Model-View-Controller All your base are belong to us! Site Controller Dispatcher Renderers Model Objects Pages Freemarker Templates Template Instances Chrome Components HTML Themes JSP Associations 07/11/08 16
  • 17. Page Construction Model-View-Controller Model • Template Instances • Template Types • Components • Component Types • Pages • Page Types • Page Associations • Configurations • Content Associations • Chrome • Themes View • Renderers such as Web Script Renderer, JSP Renderer, etc Controller • Site Dispatcher (XML configurable) 07/11/08 17
  • 18. Learning Alfresco Surf Renderers • Build a component • Learn about remoting Site Dispatching • Build a site • Learn about site composition Put it all together • See if we can do something cool 07/11/08 18
  • 19. Renderers Out of the Box Renderers • Web Script • Java Bean • JSP • FTL Let’s start with Web Scripts • The most common and most powerful rendering facility • No Java coding, no server restarts • Rich underlying API for easy extension Most Surf Components will be written using Web Scripts! Surf allows you to build your own renderers in addition to the ones that it provides out-of-the-box 07/11/08 19
  • 20. Web Scripts Presentation Web Scripts • Web Scripts on the Presentation Tier • Responsible for generating markup (HTML) • Isolated from Alfresco Repository • Model context purely derived from framework (no “document”) • Can call over to Alfresco using “remote” variable Data Web Scripts • Web Scripts on the Repository Tier • Responsible for generating JSON, XML (ATOM) or other serialized data format • Wired into the Alfresco Repository • Context includes Alfresco Repository elements (“document”) 07/11/08 20
  • 21. How are Presentation Web Scripts used? Surf Components Share Dashlets 07/11/08 21
  • 22. Web Script Review http://wiki.alfresco.com/wiki/Web_Scripts Writing a Presentation Web Script • Same as writing a Repository Web Script 07/11/08 22
  • 23. Wrap-up In this module, you learned... • Surf evolved out of early efforts to provide a site building framework on top of Alfresco • There are many ways to build presentation tiers on top of Alfresco —Surf is the one chosen by Alfresco to build their clients • Surf is a two-tier web application framework • Each tier follows an MVC pattern • Web scripts on the Surf or presentation tier can communicate with the repository remotely • Web scripts on the repository tier return serialized data as JSON or XML 07/11/08 Optaros and Client confidential. All rights reserved. 23