SlideShare a Scribd company logo
1 of 36
Download to read offline
Eclipse Apricot
                  Overview of Content
                  Repositories and the Eclipse
                  Apricot Platform
                  Florent Guillaume, Bogdan Stefanescu
                  2011-10-20


Open Source ECM
Agenda


• What Is a Content Repository?
• Eclipse Apricot: Features & Benefits
• Apricot Modularity
• The Future of Apricot


                                        2
What Is a
Content Repository?


                      3
What Is Content?
• Everything is content!
• Unstructured
  • Files, Images, Assets, XML, Binary streams

• Structured
  • Schema, Metadata, Business Data, Tables

• Semi-Structured
  • Files + Metadata, Web pages (assemblies, relations),
    Emails (attachments), Record Management                4
A Content Repository is
Middleware
• Between Application and Storage Subsystem
 • Does not replace either

• Persistence Service
 • Stores structured and unstructured content

• High-Level Abstraction
 • Stop caring about storage details
 • Focus on your domain model and its objects
                                                5
What a Content Repository Is
Not
• Not a CMS (WCM, ECM, ...)
  •   A CMS is one application on top of a Content Repository

• Not a filesystem
  •   If all you have is a filesystem, everything looks like a file

• Not an ORM
  •   Not that granular, don’t think in SQL terms

• Not just for storage
  •   Provides Services, Domain Model / Business Model
                                                                    6
Eclipse Apricot


                  7
Eclipse Apricot

• OSGi framework
• Under the Eclipse Runtime project
  • Currently in the Incubation phase
  • Mentored by Gary Xue (Actuate) and Cédric Brun (Obeo)

• Contributed by Nuxeo, from Nuxeo Core
• http://www.eclipse.org/apricot
                                                            8
What Is Apricot?


• Content Repository
• Web Support
• Content Automation
• CMIS


                       9
Apricot: Content Repository

• Types and Schema definition
• Persistence
• Query
• Access Control
• Locking
• Versioning
                               10
Apricot: Web Support


• Expose content on the web
• Fast framework based on JAX-RS
• Provides FreeMarker templating (pluggable)



                                               11
Apricot: Content Automation


• Based on Commands/Operations
• Build reusable business logic
• Accessible from UI frameworks and HTTP/ReST



                                                12
Apricot: CMIS
• OASIS Content Management Interoperability Services
• HTTP APIs (SOAP, AtomPub, Browser Bindings)
• Java APIs (OpenCMIS)
• http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-
  spec-v1.0.html
• http://www.slideshare.net/efge/cmis-and-apache-
  chemistry-apachecon-2010
                                                    13
HTTP (CMIS)                HTTP




OpenCMIS Java
                          OpenCMIS           Automation
     API




         Native Java API         Core Services




                                     VCS




           Binary Store          SQL Backend            Other Backend




           Filesystem            SQL Database              Cloud        14
When to Use Apricot?
• Need to store Objects with Properties
  • And also Files

• Don’t want to write SQL
  • But be able to fall back to SQL if really needed

• Need Access Control
• Need Versioning, Queries, ...
• Don’t want to reinvent the wheel
                                                       15
Why Is Apricot Good?

• Modular
• Fast
• Safe
• Scales
• Full-featured services
• Battle-tested
                           16
Apricot: Modular

• Uses OSGi deployment
 • OSGi bundles
 • Dynamic lifecycle

• Extension points
 • XML
 • Inspired by those from Eclipse
                                    17
Apricot: Fast

• Efficient use of storage backends
  • Use their native features and strengths
  • Don’t reinvent transactions, relations

• Caching
• Batching

                                              18
Apricot: Safe


• Transaction-aware
 • Rollback everything at once

• Hot backups
 • Don’t stop the system


                                 19
Apricot: Scaling

• Clusterable on top of a standard SQL database
• Architecture ready for NoSQL backends
• Pluggable Binary Store
  • Filesystem, SQL, Amazon S3, etc.
  • Lockless

                                                  20
Apricot: Full-Featured
Services
• Queries (NXQL, CMISQL, pluggable)
• Versioning (pluggable)
• Locking (synchronous, cluster-aware)
• Access Control (groups, grant/deny, inheritance)
• Proxies (shortcuts)
• Events & Listeners (sync, async, async post-
  commit)
• Audit Trail                                        21
Apricot: Battle-Tested


• Originates from Nuxeo Core
• Used in Nuxeo DM, Nuxeo DAM, Nuxeo CMF
• In production for 4 years
• Thousands of deployments


                                           22
Apricot and Modularity


                         23
Choosing a Modularity
Framework
• Java SE
  • No bundle life cycle, no modularity, no extension system

• Java EE
  • All is packaged as one big application (EAR or WAR),
    cannot update or add a feature without recompiling the
    entire application

• OSGi — yes, but...
                                                               24
Additions Needed to OSGi


• To achieve a plugin model
  • Eclipse already had the answer: extension points

• To provide enterprise features
  • No real OSGi Enterprise Framework implementations yet


                                                            25
Extension Points
• Eclipse used EXSD, which is very tied to PDE
  • (remember it was 2006 and we had to use maven)

• Nuxeo redefined something similar but more flexible
  • No intermediate object model between services and
    contributed extensions
  • Write an extension class and map it to XML using Java
    annotations
  • Easy to write for developers, no specific IDE needed
                                                            26
Extension Point Example




                          27
Integrating with Java EE
• Apricot should be able to run in an Application Server
  (as a WAR)
• Java EE configuration is monolithic
  • To declare servlets (web.xml) one must know in advance
    the servlets provided by all the different bundles, same for
    application.xml

• Apricot is dynamic: bundles may be installed at
  runtime
  • Java EE components declared by bundles must be
    installed at runtime                                           28
Nuxeo Configuration
Fragments
• Using templates for Java EE configuration files
  • Dynamically generate web.xml and application.xml at
    application startup from the configuration contributed by
    each bundle

• Ability to package WAR applications that can adapt
  themselves to the configuration provided by new
  application bundles
  • No need to have different product packagings for different
    configurations

• Needs a server-specific bridge to do this processing            29
Configuration Fragment
Example




                        30
Apricot Configuration
Fragments
• Convert all configuration fragments into runtime
  extension points
  • Declaring a servlet is done by contributing an extension
    point
  • Servlets can be installed at runtime when the bundle
    declaring them is activated

• Provide a bridge to interact with the host
  application server
                                                               31
Java EE Features

• Full OSGi integration of JAAS (authentication system)
• Full JTA support through Apache Geronimo
  (transactions)
• Full JCA support through Apache Geronimo
  (resource adapters and pooling)
• In-memory JNDI server
• Future plans to integrate the work done in the Gemini
  project (and also support Virgo)
                                                          32
The Future of Apricot


                        33
Where Are We Going?
• Finish Apricot first release
  • Cleanup, testing framework

• Replace Nuxeo Core with Apricot
  • Nuxeo Core running under a full OSGi container
  • Bridge for non-OSGi application servers

• Update JSF and Seam to Java EE 6
• Use CDI for easier access to services
• Better IDE support                                 34
Thank You!
             #NxW11

                      35
Additional Information & Links


• http://www.eclipse.org/apricot
• http://github.com/nuxeo/org.eclipse.ecr
• http://www.slideshare.net/efge/cmis-and-apache-
  chemistry-apachecon-2010
• http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-
  spec-v1.0.html

                                                    36

More Related Content

What's hot

What's hot (20)

Container Landscape in 2017
Container Landscape in 2017Container Landscape in 2017
Container Landscape in 2017
 
WebLogic and GraalVM
WebLogic and GraalVMWebLogic and GraalVM
WebLogic and GraalVM
 
Oracle SOA suite and Coherence dehydration
Oracle SOA suite and  Coherence dehydrationOracle SOA suite and  Coherence dehydration
Oracle SOA suite and Coherence dehydration
 
What's New in PowerCLI 5.0
What's New in PowerCLI 5.0What's New in PowerCLI 5.0
What's New in PowerCLI 5.0
 
Glassfish - FISL10 - Arun Gupta
Glassfish - FISL10 - Arun GuptaGlassfish - FISL10 - Arun Gupta
Glassfish - FISL10 - Arun Gupta
 
Migrating to aws
Migrating to awsMigrating to aws
Migrating to aws
 
Pro2516 10 things about oracle and k8s.pptx-final
Pro2516   10 things about oracle and k8s.pptx-finalPro2516   10 things about oracle and k8s.pptx-final
Pro2516 10 things about oracle and k8s.pptx-final
 
A beginners guide to MariaDB
A beginners guide to MariaDBA beginners guide to MariaDB
A beginners guide to MariaDB
 
MySQL At University Of Nottingham - 2018 MySQL Days
MySQL At University Of Nottingham - 2018 MySQL DaysMySQL At University Of Nottingham - 2018 MySQL Days
MySQL At University Of Nottingham - 2018 MySQL Days
 
Kubernetes and Oracle - a guiding whitepaper
Kubernetes and Oracle - a guiding whitepaperKubernetes and Oracle - a guiding whitepaper
Kubernetes and Oracle - a guiding whitepaper
 
Microsoft Azure 新功能導覽 @ Build 2014
Microsoft Azure 新功能導覽 @ Build 2014Microsoft Azure 新功能導覽 @ Build 2014
Microsoft Azure 新功能導覽 @ Build 2014
 
Building Bizweb Microservices with Docker
Building Bizweb Microservices with DockerBuilding Bizweb Microservices with Docker
Building Bizweb Microservices with Docker
 
Writing Java EE microservices using WildFly Swarm
Writing Java EE microservices using WildFly SwarmWriting Java EE microservices using WildFly Swarm
Writing Java EE microservices using WildFly Swarm
 
Bitnami Bootcamp. OpenStack
Bitnami Bootcamp. OpenStackBitnami Bootcamp. OpenStack
Bitnami Bootcamp. OpenStack
 
vSphere integrated containers
vSphere integrated containersvSphere integrated containers
vSphere integrated containers
 
High performance web sites with multilevel caching
High performance web sites with multilevel cachingHigh performance web sites with multilevel caching
High performance web sites with multilevel caching
 
Making Cloudy Peanut Butter Cups: Apache CloudStack + Riak CS
Making Cloudy Peanut Butter Cups: Apache CloudStack + Riak CSMaking Cloudy Peanut Butter Cups: Apache CloudStack + Riak CS
Making Cloudy Peanut Butter Cups: Apache CloudStack + Riak CS
 
Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020
 
Build 2014 - Running Java and Oracle Applications on Microsoft Azure
Build 2014 - Running Java and Oracle Applications on Microsoft AzureBuild 2014 - Running Java and Oracle Applications on Microsoft Azure
Build 2014 - Running Java and Oracle Applications on Microsoft Azure
 
Technology Radar Talks - NuGet
Technology Radar Talks - NuGetTechnology Radar Talks - NuGet
Technology Radar Talks - NuGet
 

Viewers also liked

Slide deck roadmap webinar 2013
Slide deck   roadmap webinar 2013Slide deck   roadmap webinar 2013
Slide deck roadmap webinar 2013
Nuxeo
 
8 things you should know about open source ecm
8 things you should know about open source ecm8 things you should know about open source ecm
8 things you should know about open source ecm
Nuxeo
 

Viewers also liked (6)

Community in action leroy merlin case study - nuxeo world 2010
Community in action   leroy merlin case study - nuxeo world 2010Community in action   leroy merlin case study - nuxeo world 2010
Community in action leroy merlin case study - nuxeo world 2010
 
Webinar Mobile ECM Apps with Nuxeo EP
Webinar Mobile ECM Apps with Nuxeo EPWebinar Mobile ECM Apps with Nuxeo EP
Webinar Mobile ECM Apps with Nuxeo EP
 
Slide deck roadmap webinar 2013
Slide deck   roadmap webinar 2013Slide deck   roadmap webinar 2013
Slide deck roadmap webinar 2013
 
8 things you should know about open source ecm
8 things you should know about open source ecm8 things you should know about open source ecm
8 things you should know about open source ecm
 
Leroy Merlin: Customer Satisfaction Project
Leroy Merlin: Customer Satisfaction ProjectLeroy Merlin: Customer Satisfaction Project
Leroy Merlin: Customer Satisfaction Project
 
Case Studies: Leroy Merlin and Wellnet
Case Studies: Leroy Merlin and WellnetCase Studies: Leroy Merlin and Wellnet
Case Studies: Leroy Merlin and Wellnet
 

Similar to Eclipse Apricot

Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
IndicThreads
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
daveayan
 
Building a server platform with os gi
Building a server platform with os giBuilding a server platform with os gi
Building a server platform with os gi
Dileepa Jayakody
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
Igor Anishchenko
 
OpenStack Block Storage 101
OpenStack Block Storage 101OpenStack Block Storage 101
OpenStack Block Storage 101
NetApp
 
Storage as a service and OpenStack Cinder
Storage as a service and OpenStack CinderStorage as a service and OpenStack Cinder
Storage as a service and OpenStack Cinder
openstackindia
 

Similar to Eclipse Apricot (20)

Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management Platform
 
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
 
Repository Management with JFrog Artifactory
Repository Management with JFrog ArtifactoryRepository Management with JFrog Artifactory
Repository Management with JFrog Artifactory
 
Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications
 
Building a server platform with os gi
Building a server platform with os giBuilding a server platform with os gi
Building a server platform with os gi
 
Oracle Fusion Middleware on Exalogic Best Practises
Oracle Fusion Middleware on Exalogic Best PractisesOracle Fusion Middleware on Exalogic Best Practises
Oracle Fusion Middleware on Exalogic Best Practises
 
Lessons learned Building Nuxeo EP - Component-based, open source ECM platform
Lessons learned Building Nuxeo EP - Component-based, open source ECM platformLessons learned Building Nuxeo EP - Component-based, open source ECM platform
Lessons learned Building Nuxeo EP - Component-based, open source ECM platform
 
Introduction to ASP.NET 5
Introduction to ASP.NET 5Introduction to ASP.NET 5
Introduction to ASP.NET 5
 
Apereo OAE - Bootcamp
Apereo OAE - BootcampApereo OAE - Bootcamp
Apereo OAE - Bootcamp
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
Centralizing Kubernetes and Container Operations
Centralizing Kubernetes and Container OperationsCentralizing Kubernetes and Container Operations
Centralizing Kubernetes and Container Operations
 
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application DevelopmentOSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
 
Avoiding cloud lock-in
Avoiding cloud lock-inAvoiding cloud lock-in
Avoiding cloud lock-in
 
Agile sites2
Agile sites2Agile sites2
Agile sites2
 
OpenStack Block Storage 101
OpenStack Block Storage 101OpenStack Block Storage 101
OpenStack Block Storage 101
 
Storage as a service and OpenStack Cinder
Storage as a service and OpenStack CinderStorage as a service and OpenStack Cinder
Storage as a service and OpenStack Cinder
 
Cloud Native Camel Riding
Cloud Native Camel RidingCloud Native Camel Riding
Cloud Native Camel Riding
 
OSGi and Java EE in GlassFish - Tech Days 2010 India
OSGi and Java EE in GlassFish - Tech Days 2010 IndiaOSGi and Java EE in GlassFish - Tech Days 2010 India
OSGi and Java EE in GlassFish - Tech Days 2010 India
 

More from 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
 

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

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Recently uploaded (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 

Eclipse Apricot

  • 1. Eclipse Apricot Overview of Content Repositories and the Eclipse Apricot Platform Florent Guillaume, Bogdan Stefanescu 2011-10-20 Open Source ECM
  • 2. Agenda • What Is a Content Repository? • Eclipse Apricot: Features & Benefits • Apricot Modularity • The Future of Apricot 2
  • 3. What Is a Content Repository? 3
  • 4. What Is Content? • Everything is content! • Unstructured • Files, Images, Assets, XML, Binary streams • Structured • Schema, Metadata, Business Data, Tables • Semi-Structured • Files + Metadata, Web pages (assemblies, relations), Emails (attachments), Record Management 4
  • 5. A Content Repository is Middleware • Between Application and Storage Subsystem • Does not replace either • Persistence Service • Stores structured and unstructured content • High-Level Abstraction • Stop caring about storage details • Focus on your domain model and its objects 5
  • 6. What a Content Repository Is Not • Not a CMS (WCM, ECM, ...) • A CMS is one application on top of a Content Repository • Not a filesystem • If all you have is a filesystem, everything looks like a file • Not an ORM • Not that granular, don’t think in SQL terms • Not just for storage • Provides Services, Domain Model / Business Model 6
  • 8. Eclipse Apricot • OSGi framework • Under the Eclipse Runtime project • Currently in the Incubation phase • Mentored by Gary Xue (Actuate) and Cédric Brun (Obeo) • Contributed by Nuxeo, from Nuxeo Core • http://www.eclipse.org/apricot 8
  • 9. What Is Apricot? • Content Repository • Web Support • Content Automation • CMIS 9
  • 10. Apricot: Content Repository • Types and Schema definition • Persistence • Query • Access Control • Locking • Versioning 10
  • 11. Apricot: Web Support • Expose content on the web • Fast framework based on JAX-RS • Provides FreeMarker templating (pluggable) 11
  • 12. Apricot: Content Automation • Based on Commands/Operations • Build reusable business logic • Accessible from UI frameworks and HTTP/ReST 12
  • 13. Apricot: CMIS • OASIS Content Management Interoperability Services • HTTP APIs (SOAP, AtomPub, Browser Bindings) • Java APIs (OpenCMIS) • http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis- spec-v1.0.html • http://www.slideshare.net/efge/cmis-and-apache- chemistry-apachecon-2010 13
  • 14. HTTP (CMIS) HTTP OpenCMIS Java OpenCMIS Automation API Native Java API Core Services VCS Binary Store SQL Backend Other Backend Filesystem SQL Database Cloud 14
  • 15. When to Use Apricot? • Need to store Objects with Properties • And also Files • Don’t want to write SQL • But be able to fall back to SQL if really needed • Need Access Control • Need Versioning, Queries, ... • Don’t want to reinvent the wheel 15
  • 16. Why Is Apricot Good? • Modular • Fast • Safe • Scales • Full-featured services • Battle-tested 16
  • 17. Apricot: Modular • Uses OSGi deployment • OSGi bundles • Dynamic lifecycle • Extension points • XML • Inspired by those from Eclipse 17
  • 18. Apricot: Fast • Efficient use of storage backends • Use their native features and strengths • Don’t reinvent transactions, relations • Caching • Batching 18
  • 19. Apricot: Safe • Transaction-aware • Rollback everything at once • Hot backups • Don’t stop the system 19
  • 20. Apricot: Scaling • Clusterable on top of a standard SQL database • Architecture ready for NoSQL backends • Pluggable Binary Store • Filesystem, SQL, Amazon S3, etc. • Lockless 20
  • 21. Apricot: Full-Featured Services • Queries (NXQL, CMISQL, pluggable) • Versioning (pluggable) • Locking (synchronous, cluster-aware) • Access Control (groups, grant/deny, inheritance) • Proxies (shortcuts) • Events & Listeners (sync, async, async post- commit) • Audit Trail 21
  • 22. Apricot: Battle-Tested • Originates from Nuxeo Core • Used in Nuxeo DM, Nuxeo DAM, Nuxeo CMF • In production for 4 years • Thousands of deployments 22
  • 24. Choosing a Modularity Framework • Java SE • No bundle life cycle, no modularity, no extension system • Java EE • All is packaged as one big application (EAR or WAR), cannot update or add a feature without recompiling the entire application • OSGi — yes, but... 24
  • 25. Additions Needed to OSGi • To achieve a plugin model • Eclipse already had the answer: extension points • To provide enterprise features • No real OSGi Enterprise Framework implementations yet 25
  • 26. Extension Points • Eclipse used EXSD, which is very tied to PDE • (remember it was 2006 and we had to use maven) • Nuxeo redefined something similar but more flexible • No intermediate object model between services and contributed extensions • Write an extension class and map it to XML using Java annotations • Easy to write for developers, no specific IDE needed 26
  • 28. Integrating with Java EE • Apricot should be able to run in an Application Server (as a WAR) • Java EE configuration is monolithic • To declare servlets (web.xml) one must know in advance the servlets provided by all the different bundles, same for application.xml • Apricot is dynamic: bundles may be installed at runtime • Java EE components declared by bundles must be installed at runtime 28
  • 29. Nuxeo Configuration Fragments • Using templates for Java EE configuration files • Dynamically generate web.xml and application.xml at application startup from the configuration contributed by each bundle • Ability to package WAR applications that can adapt themselves to the configuration provided by new application bundles • No need to have different product packagings for different configurations • Needs a server-specific bridge to do this processing 29
  • 31. Apricot Configuration Fragments • Convert all configuration fragments into runtime extension points • Declaring a servlet is done by contributing an extension point • Servlets can be installed at runtime when the bundle declaring them is activated • Provide a bridge to interact with the host application server 31
  • 32. Java EE Features • Full OSGi integration of JAAS (authentication system) • Full JTA support through Apache Geronimo (transactions) • Full JCA support through Apache Geronimo (resource adapters and pooling) • In-memory JNDI server • Future plans to integrate the work done in the Gemini project (and also support Virgo) 32
  • 33. The Future of Apricot 33
  • 34. Where Are We Going? • Finish Apricot first release • Cleanup, testing framework • Replace Nuxeo Core with Apricot • Nuxeo Core running under a full OSGi container • Bridge for non-OSGi application servers • Update JSF and Seam to Java EE 6 • Use CDI for easier access to services • Better IDE support 34
  • 35. Thank You! #NxW11 35
  • 36. Additional Information & Links • http://www.eclipse.org/apricot • http://github.com/nuxeo/org.eclipse.ecr • http://www.slideshare.net/efge/cmis-and-apache- chemistry-apachecon-2010 • http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis- spec-v1.0.html 36