eclipse apricot

36
Open Source ECM Florent Guillaume, Bogdan Stefanescu 2011-10-20 Eclipse Apricot Overview of Content Repositories and the Eclipse Apricot Platform

Upload: nuxeo

Post on 18-Dec-2014

1.329 views

Category:

Technology


2 download

DESCRIPTION

Nuxeo World 2011 - Overview of Content Repositories and the Eclipse Apricot Platform

TRANSCRIPT

Page 1: Eclipse Apricot

Open Source ECM

Florent Guillaume, Bogdan Stefanescu2011-10-20

Eclipse ApricotOverview of Content Repositories and the Eclipse Apricot Platform

Page 2: Eclipse Apricot

• What Is a Content Repository?

• Eclipse Apricot: Features & Benefits

• Apricot Modularity

• The Future of Apricot

2

Agenda

Page 3: Eclipse Apricot

What Is aContent Repository?

3

Page 4: Eclipse Apricot

What Is Content?

4

• 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

Page 5: Eclipse Apricot

• 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 objects5

A Content Repository is Middleware

Page 6: Eclipse Apricot

6

• 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

What a Content Repository Is Not

Page 7: Eclipse Apricot

Eclipse Apricot

7

Page 8: Eclipse Apricot

Eclipse Apricot

8

• 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

Page 9: Eclipse Apricot

What Is Apricot?

9

• Content Repository

• Web Support

• Content Automation

• CMIS

Page 10: Eclipse Apricot

• Types and Schema definition

• Persistence

• Query

• Access Control

• Locking

• Versioning10

Apricot: Content Repository

Page 11: Eclipse Apricot

• Expose content on the web

• Fast framework based on JAX-RS

• Provides FreeMarker templating (pluggable)

11

Apricot: Web Support

Page 12: Eclipse Apricot

• Based on Commands/Operations

• Build reusable business logic

• Accessible from UI frameworks and HTTP/ReST

12

Apricot: Content Automation

Page 14: Eclipse Apricot

14

Native Java API

OpenCMIS Java API

HTTP (CMIS)

OpenCMIS Automation

HTTP

Core Services

VCS

Binary Store SQL Backend

SQL DatabaseFilesystem

Other Backend

Cloud

Page 15: Eclipse Apricot

When to Use Apricot?

15

• 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

Page 16: Eclipse Apricot

Why Is Apricot Good?

• Modular

• Fast

• Safe

• Scales

• Full-featured services

• Battle-tested16

Page 17: Eclipse Apricot

17

• Uses OSGi deployment• OSGi bundles

• Dynamic lifecycle

• Extension points• XML

• Inspired by those from Eclipse

Apricot: Modular

Page 18: Eclipse Apricot

• Efficient use of storage backends• Use their native features and strengths

• Don’t reinvent transactions, relations

• Caching

• Batching

18

Apricot: Fast

Page 19: Eclipse Apricot

Apricot: Safe

• Transaction-aware• Rollback everything at once

• Hot backups• Don’t stop the system

19

Page 20: Eclipse Apricot

• Clusterable on top of a standard SQL database

• Architecture ready for NoSQL backends

• Pluggable Binary Store• Filesystem, SQL, Amazon S3, etc.

• Lockless

20

Apricot: Scaling

Page 21: Eclipse Apricot

• 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: Full-Featured Services

Page 22: Eclipse Apricot

• Originates from Nuxeo Core

• Used in Nuxeo DM, Nuxeo DAM, Nuxeo CMF

• In production for 4 years

• Thousands of deployments

22

Apricot: Battle-Tested

Page 23: Eclipse Apricot

Apricot and Modularity

23

Page 24: Eclipse Apricot

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

Page 25: Eclipse Apricot

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

Page 26: Eclipse Apricot

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 needed26

Page 27: Eclipse Apricot

27

Extension Point Example

Page 28: Eclipse Apricot

28

• 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

Integrating with Java EE

Page 29: Eclipse Apricot

Nuxeo Configuration Fragments

29

• 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

Page 30: Eclipse Apricot

Configuration Fragment Example

30

Page 31: Eclipse Apricot

Apricot Configuration Fragments

31

• 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

Page 32: Eclipse Apricot

Java EE Features

32

• 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)

Page 33: Eclipse Apricot

The Future of Apricot

33

Page 34: Eclipse Apricot

Where Are We Going?

34

• 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

Page 35: Eclipse Apricot

Thank You!

35

#NxW11