SlideShare a Scribd company logo
Nuxeo WebEngine
a practical introduction




                           Bogdan Stefanescu |
Overview
●   What is WebEngine?
●   Architecture
    ●   JAX-RS
    ●   Object Model
    ●   Scripting
    ●   Templates
Overview
●   Examples
    ●   Creating a JAX-RS resource
    ●   Creating a Web Module
    ●   Working with Web Objects
    ●   Working with Web Adapters
    ●   Managing Links
    ●   Internationalization
WebEngine – What Is?
A framework to build RESTful Web Applications
  on top of the Nuxeo Platform. Goals:
  ●   Rapid development of Web Applications: intuitive
      and extensible model, scripting, fast startup time,
      hot reload etc.
  ●   An unique platform to develop all kind of content
      oriented Web Applications including
      –   Content oriented Web sites.
      –   REST services for Nuxeo Platform.
      –   Rich front ends based on AJAX frameworks like GWT.
  ●   Pleasant coding experience
  ●   Light packaging
WebEngine - Features
●   Powerful Object Model built on top of JAX-RS.
●   Full Groovy Scripting support.
●   Powerful template engine based on Freemarker
●   Content Management through Nuxeo Platform
●   Packaged in several flavors:
    ●   Standalone server with GlassFish v3 embedded
    ●   Standalone server with Jetty embedded
    ●   Tomcat Web Application
    ●   Nuxeo EP plug-ins
Architecture - JAX-RS
●   WebEngine model is based on JAX-RS
     standard.
●   JAX-RS is a Java API to build RESTful Web
    Services.
●   JAX-RS is exposing Java objects as Web
    resources. Binging objects to Web resources is
    done by using Java annotations.
●   HTTP requests will be resolved to JAX-RS
    resources that will be manipulated using
    common HTTP methods like GET, POST, PUT,
    DELETE, HEAD.
Architecture – Object Model
●   Why an Object Model on top of JAX-RS?
●   Provides a coherent model to build modular
    applications.
    ●   An Web Application is deployed as an Web Module.
    ●   Web Modules can extend other Web Modules.
    ●   Web Modules are bound to a fixed Web path and
        provides access to Web Resources defined inside
        the module or in extended modules.
    ●   Web Resources are extensible and can be shared
        between modules.
Architecture – Object Model
●   Why an Object Model on top of JAX-RS?
●   Provides a coherent model to expose Java
    Objects as Web Resources.
    ●   Web Module Entry Point – the root resource that is
        the entry point for any request on the module. It is
        explicitly bound to a Web path using @Path
        annotation.
    ●   Web Objects – sub-resources that are exposing
        concrete functionality.
    ●   Web Adapters – sub-resources that enable to easily
        extends existing Web Objects.
Architecture – Web Modules
●   An Web Module is defining:
●   Web Resources and templates to expose.
●   Static and i18n resources (CSS, PNG etc)
●   An Web Path under which the module
    resources can be found
●   A JAX-RS root resource – which will usually
    dispatch any request to sub-resources like Web
    Objects and Web Adapters
●   Inherited Web Modules
Architecture – Web Objects
●   Web Objects are JAX-RS resources that
     expose concrete objects to the Web.
●   Web Objects have a type and a set of optional
    facets.
●   Web Object types can be derived to create new
    types that inherit behaviors from the super type.
●   Facets describes the Web Object behaviors.
●   Web Objects may define views using template
    files.
Architecture – Web Adapters
●   Web Adapters are JAX-RS resources that can
     be used to expose additional functionalities
     on existing Web Objects.
●   Is a specialized Web Object and have a type
    and optional facets like any other Web Object.
●   Can be restricted to adapt only specific Web
    Objects by using filters based on target Web
    Object type and facets.
●   Are invoked using a @ prefix
    ●   Example: GET /my/doc/@versions
Architecture – Documents
●   WebEngine is providing built-in support to
     expose Nuxeo Documents as Web Objects.
●   Document Types are mapped to Web Objects
    by respecting the document type hierarchy.
    ●   Provides a generic Document Object that will catch
        any document type which is not explicitly exposed.
●   Document types and facets are transparently
    mapped as Web Object type and facets.
●   Several Web Adapters are provided: Versioning
    Adapter, Lock Adapter, Relations Adapter etc.
Architecture – Scripting
●   Built-in Groovy scripting.
●   Any Web Resource can be defined as a Groovy
    object.
●   Java and Groovy share the same Class Path.
    ●   One can build mixed Web Modules with both
        Groovy and Java objects.
    ●   A Groovy object may call or extend any Java object
        and vice-versa.
●   Hot reload of Groovy classes in debug mode.
Architecture - Templates
●   The template engine is building client
     responses using template files.
●   Based on Freemarker engine.
●   Custom extensions to add dynamic blocks, Wiki
    rendering etc.
●   Dynamic Blocks are used to create extensible
    templates.
    ●   Templates that define dynamic blocks may e
        extended by other templates that may redefine any
        block.
Examples – JAX-RS
Examples – Web Module
Examples – Web Object
Examples – Web Adapter
Examples – Templates
Examples – Links
Examples – Internationalization
Thank you!

More Related Content

What's hot

Introduction to Browser Internals
Introduction to Browser InternalsIntroduction to Browser Internals
Introduction to Browser Internals
Siva Arunachalam
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit
Joone Hur
 
Html 5
Html 5Html 5
Html 5
Nguyen Quang
 
Eclipse orion
Eclipse orionEclipse orion
Eclipse orion
Nguyen Quang
 
Android chromium web view
Android chromium web viewAndroid chromium web view
Android chromium web view
朋 王
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline
Hyungwook Lee
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
Chang W. Doh
 
How Browsers Work
How Browsers Work How Browsers Work
How Browsers Work
myposter GmbH
 
Chromium vs. Firefox
Chromium vs. FirefoxChromium vs. Firefox
Chromium vs. Firefox
Rashmika Nawaratne
 
Firefox vs. chrome
Firefox vs. chromeFirefox vs. chrome
Firefox vs. chrome
Prabhath Suminda
 
Understanding Webkit Rendering
Understanding Webkit RenderingUnderstanding Webkit Rendering
Understanding Webkit Rendering
Ariya Hidayat
 
Web component
Web componentWeb component
Web component
EngrHasanuzzamanSumo
 
Meet Magento Belarus 2015: Jurģis Lukss
Meet Magento Belarus 2015: Jurģis LukssMeet Magento Belarus 2015: Jurģis Lukss
Meet Magento Belarus 2015: Jurģis Lukss
Amasty
 
Dojo - from web page to web apps
Dojo - from web page to web appsDojo - from web page to web apps
Dojo - from web page to web apps
yoavrubin
 
Asp.net
Asp.netAsp.net
Asp.net
Naveen Sihag
 
DotNetNuke
DotNetNukeDotNetNuke
DotNetNuke
jitendraparmar
 
Dot Net Nuke
Dot Net NukeDot Net Nuke
Dot Net Nuke
jitendraparmar
 
Components now!
Components now! Components now!
Components now!
Mikhail Davydov
 
Extending Alfresco Share 3.3
Extending Alfresco Share 3.3Extending Alfresco Share 3.3
Extending Alfresco Share 3.3
Will Abson
 
Treinamento S60 WRT - CETELI UFAM INDT
Treinamento S60 WRT - CETELI UFAM INDTTreinamento S60 WRT - CETELI UFAM INDT
Treinamento S60 WRT - CETELI UFAM INDT
allanbezerra
 

What's hot (20)

Introduction to Browser Internals
Introduction to Browser InternalsIntroduction to Browser Internals
Introduction to Browser Internals
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit
 
Html 5
Html 5Html 5
Html 5
 
Eclipse orion
Eclipse orionEclipse orion
Eclipse orion
 
Android chromium web view
Android chromium web viewAndroid chromium web view
Android chromium web view
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
 
How Browsers Work
How Browsers Work How Browsers Work
How Browsers Work
 
Chromium vs. Firefox
Chromium vs. FirefoxChromium vs. Firefox
Chromium vs. Firefox
 
Firefox vs. chrome
Firefox vs. chromeFirefox vs. chrome
Firefox vs. chrome
 
Understanding Webkit Rendering
Understanding Webkit RenderingUnderstanding Webkit Rendering
Understanding Webkit Rendering
 
Web component
Web componentWeb component
Web component
 
Meet Magento Belarus 2015: Jurģis Lukss
Meet Magento Belarus 2015: Jurģis LukssMeet Magento Belarus 2015: Jurģis Lukss
Meet Magento Belarus 2015: Jurģis Lukss
 
Dojo - from web page to web apps
Dojo - from web page to web appsDojo - from web page to web apps
Dojo - from web page to web apps
 
Asp.net
Asp.netAsp.net
Asp.net
 
DotNetNuke
DotNetNukeDotNetNuke
DotNetNuke
 
Dot Net Nuke
Dot Net NukeDot Net Nuke
Dot Net Nuke
 
Components now!
Components now! Components now!
Components now!
 
Extending Alfresco Share 3.3
Extending Alfresco Share 3.3Extending Alfresco Share 3.3
Extending Alfresco Share 3.3
 
Treinamento S60 WRT - CETELI UFAM INDT
Treinamento S60 WRT - CETELI UFAM INDTTreinamento S60 WRT - CETELI UFAM INDT
Treinamento S60 WRT - CETELI UFAM INDT
 

Similar to Nuxeo WebEngine: a practical introduction

Nuxeo WebEngine GFv3 Aquarium Paris
Nuxeo WebEngine GFv3 Aquarium ParisNuxeo WebEngine GFv3 Aquarium Paris
Nuxeo WebEngine GFv3 Aquarium Paris
Alexis Moussine-Pouchkine
 
ASP.NET Presentation
ASP.NET PresentationASP.NET Presentation
ASP.NET Presentation
Rasel Khan
 
Angular or React
Angular or ReactAngular or React
Angular or React
Orkhan Gasimov
 
Progressive Web Apps and React
Progressive Web Apps and ReactProgressive Web Apps and React
Progressive Web Apps and React
Mike Melusky
 
React.js for Rails Developers
React.js for Rails DevelopersReact.js for Rails Developers
React.js for Rails Developers
Arkency
 
Coursejspservlets00
Coursejspservlets00Coursejspservlets00
Coursejspservlets00
Rajesh Moorjani
 
Jeetrainers.com coursejspservlets00
Jeetrainers.com coursejspservlets00Jeetrainers.com coursejspservlets00
Jeetrainers.com coursejspservlets00
Rajesh Moorjani
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
Mahmoud Tolba
 
ASP .Net Core SPA Templates
ASP .Net Core SPA TemplatesASP .Net Core SPA Templates
ASP .Net Core SPA Templates
Eamonn Boyle
 
Lessons
LessonsLessons
Lessons
guest1019f4
 
Lessons from the Trenches: Engineering Great AJAX Experiences
Lessons from the Trenches: Engineering Great AJAX ExperiencesLessons from the Trenches: Engineering Great AJAX Experiences
Lessons from the Trenches: Engineering Great AJAX Experiences
goodfriday
 
Introduction to Asp.net 3.5 using VS 2008
Introduction to Asp.net 3.5 using VS 2008Introduction to Asp.net 3.5 using VS 2008
Introduction to Asp.net 3.5 using VS 2008
maddinapudi
 
AFTAB AHMED.pptx
AFTAB AHMED.pptxAFTAB AHMED.pptx
AFTAB AHMED.pptx
AftabAhmed132116
 
Develop Engaging and High Performance Portal Themes That Power Exceptional Di...
Develop Engaging and High Performance Portal Themes That Power Exceptional Di...Develop Engaging and High Performance Portal Themes That Power Exceptional Di...
Develop Engaging and High Performance Portal Themes That Power Exceptional Di...
shesmer
 
Santosh_Resume_Java
Santosh_Resume_JavaSantosh_Resume_Java
Santosh_Resume_Java
SANTOSH PATTNAIK
 
Ajax
AjaxAjax
Lecture 7 Web Services JAX-WS & JAX-RS
Lecture 7   Web Services JAX-WS & JAX-RSLecture 7   Web Services JAX-WS & JAX-RS
Lecture 7 Web Services JAX-WS & JAX-RS
Fahad Golra
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascript
rajivmordani
 
Java Web services
Java Web servicesJava Web services
Java Web services
Sujit Kumar
 
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...
 Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1... Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...
WebStackAcademy
 

Similar to Nuxeo WebEngine: a practical introduction (20)

Nuxeo WebEngine GFv3 Aquarium Paris
Nuxeo WebEngine GFv3 Aquarium ParisNuxeo WebEngine GFv3 Aquarium Paris
Nuxeo WebEngine GFv3 Aquarium Paris
 
ASP.NET Presentation
ASP.NET PresentationASP.NET Presentation
ASP.NET Presentation
 
Angular or React
Angular or ReactAngular or React
Angular or React
 
Progressive Web Apps and React
Progressive Web Apps and ReactProgressive Web Apps and React
Progressive Web Apps and React
 
React.js for Rails Developers
React.js for Rails DevelopersReact.js for Rails Developers
React.js for Rails Developers
 
Coursejspservlets00
Coursejspservlets00Coursejspservlets00
Coursejspservlets00
 
Jeetrainers.com coursejspservlets00
Jeetrainers.com coursejspservlets00Jeetrainers.com coursejspservlets00
Jeetrainers.com coursejspservlets00
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
ASP .Net Core SPA Templates
ASP .Net Core SPA TemplatesASP .Net Core SPA Templates
ASP .Net Core SPA Templates
 
Lessons
LessonsLessons
Lessons
 
Lessons from the Trenches: Engineering Great AJAX Experiences
Lessons from the Trenches: Engineering Great AJAX ExperiencesLessons from the Trenches: Engineering Great AJAX Experiences
Lessons from the Trenches: Engineering Great AJAX Experiences
 
Introduction to Asp.net 3.5 using VS 2008
Introduction to Asp.net 3.5 using VS 2008Introduction to Asp.net 3.5 using VS 2008
Introduction to Asp.net 3.5 using VS 2008
 
AFTAB AHMED.pptx
AFTAB AHMED.pptxAFTAB AHMED.pptx
AFTAB AHMED.pptx
 
Develop Engaging and High Performance Portal Themes That Power Exceptional Di...
Develop Engaging and High Performance Portal Themes That Power Exceptional Di...Develop Engaging and High Performance Portal Themes That Power Exceptional Di...
Develop Engaging and High Performance Portal Themes That Power Exceptional Di...
 
Santosh_Resume_Java
Santosh_Resume_JavaSantosh_Resume_Java
Santosh_Resume_Java
 
Ajax
AjaxAjax
Ajax
 
Lecture 7 Web Services JAX-WS & JAX-RS
Lecture 7   Web Services JAX-WS & JAX-RSLecture 7   Web Services JAX-WS & JAX-RS
Lecture 7 Web Services JAX-WS & JAX-RS
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascript
 
Java Web services
Java Web servicesJava Web services
Java Web services
 
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...
 Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1... Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...
 

More from Nuxeo

Own the Digital Shelf Strategies Food and Beverage Companies
Own the Digital Shelf Strategies Food and Beverage CompaniesOwn the Digital Shelf Strategies Food and Beverage Companies
Own the Digital Shelf Strategies Food and Beverage Companies
Nuxeo
 
How DAM Librarians Can Get Ready for the Uncertain Future
How DAM Librarians Can Get Ready for the Uncertain FutureHow DAM Librarians Can Get Ready for the Uncertain Future
How DAM Librarians Can Get Ready for the Uncertain Future
Nuxeo
 
How Insurers Fueled Transformation During a Pandemic
How Insurers Fueled Transformation During a PandemicHow Insurers Fueled Transformation During a Pandemic
How Insurers Fueled Transformation During a Pandemic
Nuxeo
 
Manage your Content at Scale with MongoDB and Nuxeo
Manage your Content at Scale with MongoDB and NuxeoManage your Content at Scale with MongoDB and Nuxeo
Manage your Content at Scale with MongoDB and Nuxeo
Nuxeo
 
Accelerate the Digital Supply Chain From Idea to Support
Accelerate the Digital Supply Chain From Idea to SupportAccelerate the Digital Supply Chain From Idea to Support
Accelerate the Digital Supply Chain From Idea to Support
Nuxeo
 
Where are you in the DAM Continuum
Where are you in the DAM ContinuumWhere are you in the DAM Continuum
Where are you in the DAM Continuum
Nuxeo
 
Customer Experience in 2021
Customer Experience in 2021Customer Experience in 2021
Customer Experience in 2021
Nuxeo
 
L’IA personnalisée, clé d’une gestion de l’information innovante
L’IA personnalisée, clé d’une gestion de l’information innovanteL’IA personnalisée, clé d’une gestion de l’information innovante
L’IA personnalisée, clé d’une gestion de l’information innovante
Nuxeo
 
Gérer ses contenus avec MongoDB et Nuxeo
Gérer ses contenus avec MongoDB et NuxeoGérer ses contenus avec MongoDB et Nuxeo
Gérer ses contenus avec MongoDB et Nuxeo
Nuxeo
 
Le DAM en 2021 : Tendances, points clés et critères d'évaluation
Le DAM en 2021 : Tendances, points clés et critères d'évaluationLe DAM en 2021 : Tendances, points clés et critères d'évaluation
Le DAM en 2021 : Tendances, points clés et critères d'évaluation
Nuxeo
 
Enabling Digital Transformation Amidst a Global Pandemic | Low-Code, Cloud, A...
Enabling Digital Transformation Amidst a Global Pandemic | Low-Code, Cloud, A...Enabling Digital Transformation Amidst a Global Pandemic | Low-Code, Cloud, A...
Enabling Digital Transformation Amidst a Global Pandemic | Low-Code, Cloud, A...
Nuxeo
 
Elevate your Customer's Experience and Stay Ahead of the Competition
Elevate your Customer's Experience and Stay Ahead of the CompetitionElevate your Customer's Experience and Stay Ahead of the Competition
Elevate your Customer's Experience and Stay Ahead of the Competition
Nuxeo
 
Driving Brand Loyalty Through Superior Customer Experience
Driving Brand Loyalty Through Superior Customer Experience Driving Brand Loyalty Through Superior Customer Experience
Driving Brand Loyalty Through Superior Customer Experience
Nuxeo
 
Drive Enterprise Speed and Scale with A Cloud-Native DAM
Drive Enterprise Speed and Scale with A Cloud-Native DAMDrive Enterprise Speed and Scale with A Cloud-Native DAM
Drive Enterprise Speed and Scale with A Cloud-Native DAM
Nuxeo
 
The Big Picture: the Role of Video, Photography, and Content in Enhancing the...
The Big Picture: the Role of Video, Photography, and Content in Enhancing the...The Big Picture: the Role of Video, Photography, and Content in Enhancing the...
The Big Picture: the Role of Video, Photography, and Content in Enhancing the...
Nuxeo
 
How Creatives Are Getting Creative in 2020 and Beyond
How Creatives Are Getting Creative in 2020 and BeyondHow Creatives Are Getting Creative in 2020 and Beyond
How Creatives Are Getting Creative in 2020 and Beyond
Nuxeo
 
Digitalisation : Améliorez la collaboration et l’expérience client grâce au DAM
Digitalisation : Améliorez la collaboration et l’expérience client grâce au DAMDigitalisation : Améliorez la collaboration et l’expérience client grâce au DAM
Digitalisation : Améliorez la collaboration et l’expérience client grâce au DAM
Nuxeo
 
Reimagine Your Claims Process with Future-Proof Technologies
Reimagine Your Claims Process with Future-Proof TechnologiesReimagine Your Claims Process with Future-Proof Technologies
Reimagine Your Claims Process with Future-Proof Technologies
Nuxeo
 
Comment le Centre Hospitalier Laborit dématérialise ses processus administratifs
Comment le Centre Hospitalier Laborit dématérialise ses processus administratifsComment le Centre Hospitalier Laborit dématérialise ses processus administratifs
Comment le Centre Hospitalier Laborit dématérialise ses processus administratifs
Nuxeo
 
Accelerating the Packaging Design Process with Artificial Intelligence
Accelerating the Packaging Design Process with Artificial IntelligenceAccelerating the Packaging Design Process with Artificial Intelligence
Accelerating the Packaging Design Process with Artificial Intelligence
Nuxeo
 

More from Nuxeo (20)

Own the Digital Shelf Strategies Food and Beverage Companies
Own the Digital Shelf Strategies Food and Beverage CompaniesOwn the Digital Shelf Strategies Food and Beverage Companies
Own the Digital Shelf Strategies Food and Beverage Companies
 
How DAM Librarians Can Get Ready for the Uncertain Future
How DAM Librarians Can Get Ready for the Uncertain FutureHow DAM Librarians Can Get Ready for the Uncertain Future
How DAM Librarians Can Get Ready for the Uncertain Future
 
How Insurers Fueled Transformation During a Pandemic
How Insurers Fueled Transformation During a PandemicHow Insurers Fueled Transformation During a Pandemic
How Insurers Fueled Transformation During a Pandemic
 
Manage your Content at Scale with MongoDB and Nuxeo
Manage your Content at Scale with MongoDB and NuxeoManage your Content at Scale with MongoDB and Nuxeo
Manage your Content at Scale with MongoDB and Nuxeo
 
Accelerate the Digital Supply Chain From Idea to Support
Accelerate the Digital Supply Chain From Idea to SupportAccelerate the Digital Supply Chain From Idea to Support
Accelerate the Digital Supply Chain From Idea to Support
 
Where are you in the DAM Continuum
Where are you in the DAM ContinuumWhere are you in the DAM Continuum
Where are you in the DAM Continuum
 
Customer Experience in 2021
Customer Experience in 2021Customer Experience in 2021
Customer Experience in 2021
 
L’IA personnalisée, clé d’une gestion de l’information innovante
L’IA personnalisée, clé d’une gestion de l’information innovanteL’IA personnalisée, clé d’une gestion de l’information innovante
L’IA personnalisée, clé d’une gestion de l’information innovante
 
Gérer ses contenus avec MongoDB et Nuxeo
Gérer ses contenus avec MongoDB et NuxeoGérer ses contenus avec MongoDB et Nuxeo
Gérer ses contenus avec MongoDB et Nuxeo
 
Le DAM en 2021 : Tendances, points clés et critères d'évaluation
Le DAM en 2021 : Tendances, points clés et critères d'évaluationLe DAM en 2021 : Tendances, points clés et critères d'évaluation
Le DAM en 2021 : Tendances, points clés et critères d'évaluation
 
Enabling Digital Transformation Amidst a Global Pandemic | Low-Code, Cloud, A...
Enabling Digital Transformation Amidst a Global Pandemic | Low-Code, Cloud, A...Enabling Digital Transformation Amidst a Global Pandemic | Low-Code, Cloud, A...
Enabling Digital Transformation Amidst a Global Pandemic | Low-Code, Cloud, A...
 
Elevate your Customer's Experience and Stay Ahead of the Competition
Elevate your Customer's Experience and Stay Ahead of the CompetitionElevate your Customer's Experience and Stay Ahead of the Competition
Elevate your Customer's Experience and Stay Ahead of the Competition
 
Driving Brand Loyalty Through Superior Customer Experience
Driving Brand Loyalty Through Superior Customer Experience Driving Brand Loyalty Through Superior Customer Experience
Driving Brand Loyalty Through Superior Customer Experience
 
Drive Enterprise Speed and Scale with A Cloud-Native DAM
Drive Enterprise Speed and Scale with A Cloud-Native DAMDrive Enterprise Speed and Scale with A Cloud-Native DAM
Drive Enterprise Speed and Scale with A Cloud-Native DAM
 
The Big Picture: the Role of Video, Photography, and Content in Enhancing the...
The Big Picture: the Role of Video, Photography, and Content in Enhancing the...The Big Picture: the Role of Video, Photography, and Content in Enhancing the...
The Big Picture: the Role of Video, Photography, and Content in Enhancing the...
 
How Creatives Are Getting Creative in 2020 and Beyond
How Creatives Are Getting Creative in 2020 and BeyondHow Creatives Are Getting Creative in 2020 and Beyond
How Creatives Are Getting Creative in 2020 and Beyond
 
Digitalisation : Améliorez la collaboration et l’expérience client grâce au DAM
Digitalisation : Améliorez la collaboration et l’expérience client grâce au DAMDigitalisation : Améliorez la collaboration et l’expérience client grâce au DAM
Digitalisation : Améliorez la collaboration et l’expérience client grâce au DAM
 
Reimagine Your Claims Process with Future-Proof Technologies
Reimagine Your Claims Process with Future-Proof TechnologiesReimagine Your Claims Process with Future-Proof Technologies
Reimagine Your Claims Process with Future-Proof Technologies
 
Comment le Centre Hospitalier Laborit dématérialise ses processus administratifs
Comment le Centre Hospitalier Laborit dématérialise ses processus administratifsComment le Centre Hospitalier Laborit dématérialise ses processus administratifs
Comment le Centre Hospitalier Laborit dématérialise ses processus administratifs
 
Accelerating the Packaging Design Process with Artificial Intelligence
Accelerating the Packaging Design Process with Artificial IntelligenceAccelerating the Packaging Design Process with Artificial Intelligence
Accelerating the Packaging Design Process with Artificial Intelligence
 

Recently uploaded

Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
alexjohnson7307
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Tatiana Kojar
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
LucaBarbaro3
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 

Recently uploaded (20)

Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 

Nuxeo WebEngine: a practical introduction

  • 1. Nuxeo WebEngine a practical introduction Bogdan Stefanescu |
  • 2. Overview ● What is WebEngine? ● Architecture ● JAX-RS ● Object Model ● Scripting ● Templates
  • 3. Overview ● Examples ● Creating a JAX-RS resource ● Creating a Web Module ● Working with Web Objects ● Working with Web Adapters ● Managing Links ● Internationalization
  • 4. WebEngine – What Is? A framework to build RESTful Web Applications on top of the Nuxeo Platform. Goals: ● Rapid development of Web Applications: intuitive and extensible model, scripting, fast startup time, hot reload etc. ● An unique platform to develop all kind of content oriented Web Applications including – Content oriented Web sites. – REST services for Nuxeo Platform. – Rich front ends based on AJAX frameworks like GWT. ● Pleasant coding experience ● Light packaging
  • 5. WebEngine - Features ● Powerful Object Model built on top of JAX-RS. ● Full Groovy Scripting support. ● Powerful template engine based on Freemarker ● Content Management through Nuxeo Platform ● Packaged in several flavors: ● Standalone server with GlassFish v3 embedded ● Standalone server with Jetty embedded ● Tomcat Web Application ● Nuxeo EP plug-ins
  • 6. Architecture - JAX-RS ● WebEngine model is based on JAX-RS standard. ● JAX-RS is a Java API to build RESTful Web Services. ● JAX-RS is exposing Java objects as Web resources. Binging objects to Web resources is done by using Java annotations. ● HTTP requests will be resolved to JAX-RS resources that will be manipulated using common HTTP methods like GET, POST, PUT, DELETE, HEAD.
  • 7. Architecture – Object Model ● Why an Object Model on top of JAX-RS? ● Provides a coherent model to build modular applications. ● An Web Application is deployed as an Web Module. ● Web Modules can extend other Web Modules. ● Web Modules are bound to a fixed Web path and provides access to Web Resources defined inside the module or in extended modules. ● Web Resources are extensible and can be shared between modules.
  • 8. Architecture – Object Model ● Why an Object Model on top of JAX-RS? ● Provides a coherent model to expose Java Objects as Web Resources. ● Web Module Entry Point – the root resource that is the entry point for any request on the module. It is explicitly bound to a Web path using @Path annotation. ● Web Objects – sub-resources that are exposing concrete functionality. ● Web Adapters – sub-resources that enable to easily extends existing Web Objects.
  • 9. Architecture – Web Modules ● An Web Module is defining: ● Web Resources and templates to expose. ● Static and i18n resources (CSS, PNG etc) ● An Web Path under which the module resources can be found ● A JAX-RS root resource – which will usually dispatch any request to sub-resources like Web Objects and Web Adapters ● Inherited Web Modules
  • 10. Architecture – Web Objects ● Web Objects are JAX-RS resources that expose concrete objects to the Web. ● Web Objects have a type and a set of optional facets. ● Web Object types can be derived to create new types that inherit behaviors from the super type. ● Facets describes the Web Object behaviors. ● Web Objects may define views using template files.
  • 11. Architecture – Web Adapters ● Web Adapters are JAX-RS resources that can be used to expose additional functionalities on existing Web Objects. ● Is a specialized Web Object and have a type and optional facets like any other Web Object. ● Can be restricted to adapt only specific Web Objects by using filters based on target Web Object type and facets. ● Are invoked using a @ prefix ● Example: GET /my/doc/@versions
  • 12. Architecture – Documents ● WebEngine is providing built-in support to expose Nuxeo Documents as Web Objects. ● Document Types are mapped to Web Objects by respecting the document type hierarchy. ● Provides a generic Document Object that will catch any document type which is not explicitly exposed. ● Document types and facets are transparently mapped as Web Object type and facets. ● Several Web Adapters are provided: Versioning Adapter, Lock Adapter, Relations Adapter etc.
  • 13. Architecture – Scripting ● Built-in Groovy scripting. ● Any Web Resource can be defined as a Groovy object. ● Java and Groovy share the same Class Path. ● One can build mixed Web Modules with both Groovy and Java objects. ● A Groovy object may call or extend any Java object and vice-versa. ● Hot reload of Groovy classes in debug mode.
  • 14. Architecture - Templates ● The template engine is building client responses using template files. ● Based on Freemarker engine. ● Custom extensions to add dynamic blocks, Wiki rendering etc. ● Dynamic Blocks are used to create extensible templates. ● Templates that define dynamic blocks may e extended by other templates that may redefine any block.
  • 18. Examples – Web Adapter