SlideShare une entreprise Scribd logo
1  sur  59
Télécharger pour lire hors ligne
Building an Embeddable
                Enterprise Content Management
                Core With the Latest Java
                Technologies



Florent Guillaume
JavaOne 2007 (TS-4532)
Goal Of This Talk




     Learn about the design and use of Nuxeo™ 5,
               an embeddable, extensible
      Enterprise Content Management framework
            for Java™ EE and other platforms
Agenda

What is Enterprise Content Management
What do we want to achieve
Core Framework
Core and High-Level Services
UI Layers
Extensible and Pluggable
Using the Framework
What is
Enterprise Content Management?
    1990–2000...

     Manufacturing
●



     Supply Chain
●



     HR
●



     Accounting
●



                           Unification   ERP
     Activity Management
●



     Shipping
●
What is
Enterprise Content Management?
    2000–20...

     Documents (Records, E-Mail, Media)
●



     Imaging
●



     Search Engine
●



     Archiving
●



                                     Unification   ECM
     Collaboration
●



     Web Publishing
●



     Access Control
●



     Compliance
●
What is
Enterprise Content Management?

 The technologies used to
        capture
    ●



        create
    ●



        manage
    ●



        store
    ●



        preserve
    ●



        reuse
    ●



        deliver
    ●



            content within the
                    enterprise
Agenda

What is Enterprise Content Management
What do we want to achieve
Core Framework
Core and High-Level Services
UI Layers
Extensible and Pluggable
Using the Framework
What do we want to achieve?

    Create a Framework
●



    Make it Extensible
●



    Make it Multi-Platform
●



    Use the Latest Technologies
●



    Open Source
●
What do we want to achieve?

    Create a Framework
●


        Set of Services
    ●


             Software Bundles
         ●



        Set of APIs
    ●


             Open to other systems
         ●



        Configuration
    ●


             XML rather than code
         ●
What do we want to achieve?

    Create a Framework
●



    Make it Extensible
●


        New services
    ●



        New backends to existing services
    ●
What do we want to achieve?

    Create a Framework
●



    Make it Extensible
●



    Make it Multi-Platform
●


        POJOs
    ●



        Java EE
    ●


             Clusterable, distributable
         ●



        Eclipse
    ●


             Rich Client Platform (RCP)
         ●



        Mix of those
    ●


             RCP client, Java EE server
         ●
What do we want to achieve?

    Create a Framework
●



    Make it Extensible
●



    Make it Multi-Platform
●



    Use the Latest Technologies
●



        Java 5, Java EE 5
    ●



        OSGi
    ●



        JCR (JSR-170, JSR-283), W3C XML Schemas
    ●



        JSF, Facelets
    ●



        BPEL, WfMC
    ●



        SOAP, WSDL
    ●
What do we want to achieve?

    Create a Framework
●



    Make it Extensible
●



    Make it Multi-Platform
●



    Use the Latest Technologies
●



    Open Source
●


        LGPL, EPL
    ●


        http://www.nuxeo.org
    ●
Agenda

What is Enterprise Content Management
What do we want to achieve
Core Framework
Core and High-Level Services
UI Layers
Extensible and Pluggable
Using the Framework
Core Framework

    Schemas
●



    Document Types
●



    Life Cycle
●



    Repository
●



    Security
●
Core Framework

    Schemas
●


        Structure the documents
    ●



        XML Schemas
    ●



        Complex Types
    ●



        Attached Files
    ●
Core Framework: Schema DublinCore

 <xs:schema>
   <xs:element   name=quot;titlequot; type=quot;xs:stringquot;/>
   <xs:element   name=quot;descriptionquot; type=quot;xs:stringquot;/>
   <xs:element   name=quot;rightsquot; type=quot;xs:stringquot;/>
   <xs:element   name=quot;createdquot; type=quot;xs:datequot;/>
   <xs:element   name=quot;modifiedquot; type=quot;xs:datequot;/>
   <xs:element   name=quot;issuedquot; type=quot;xs:datequot;/>
   <xs:element   name=quot;formatquot; type=quot;xs:stringquot;/>
   <xs:element   name=quot;languagequot; type=quot;xs:stringquot;/>
   ...
 </xs:schema>
Core Framework: Schema Baddies

 <xs:schema>
   <xs:complexType name=quot;baddiequot;>
     <xs:sequence>
       <xs:element name=quot;surnamequot; type=quot;xs:stringquot;/>
       <xs:element name=quot;levelquot;
 type=quot;xs:positiveIntegerquot;/>
       <xs:element name=quot;birthquot; type=quot;xs:datequot;/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name=quot;baddiesquot;>
     <xs:sequence>
       <xs:element name=quot;baddiequot; type=quot;baddiequot;
           minOccurs=quot;0quot; maxOccurs=quot;unboundedquot;/>
     </xs:sequence>
   </xs:complexType>
   <xs:element name=quot;baddiesquot; type=quot;baddiesquot;/>
 </xs:schema>
Core Framework: XML Equivalent

 <baddies>
   <baddie>
     <surname>Sylar</surname>
     <level>38</level>
     <birth>1962-06-11</birth>
   </baddie>
 </baddies>
Core Framework

    Schemas
●



    Document Types
●


        High-level name
    ●



        Aggregate schemas
    ●



        Facets
    ●
Core Framework: Document Type

 <doctype name=quot;Notequot; extends=quot;Documentquot;>

   <schema name=quot;dublincorequot;/>
   <schema name=quot;notequot;/>

   <facet name=quot;Commentablequot;/>
   <facet name=quot;Versionablequot;/>
   <facet name=quot;Publishablequot;/>

 </doctype>
Core Framework

    Schemas
●



    Document Types
●



    Life Cycle
●


        States
    ●



        Transitions
    ●
Core Framework: Life Cycle States

  <lifecycle name=quot;defaultquot; initial=quot;projectquot;>
    <states>
      <state name=quot;projectquot;>
        <transitions>
          <transition>approve</transition>
        </transitions>
      </state>
      <state name=quot;approvedquot;>
        <transitions>
          <transition>obsolete</transition>
        </transitions>
      </state>
      <state name=quot;obsoletequot;/>
    </states>
    ...
Core Framework: Life Cycle Transitions

  <lifecycle name=quot;defaultquot; initial=quot;projectquot;>
    ...
    <transitions>
      <transition name=quot;approvequot; destination=quot;approvedquot;>
        <description>Approve the document</description>
      </transition>
      <transition name=quot;obsoletequot; destination=quot;obsoletequot;>
        <description>Obsolete the document</description>
      </transition>
    </transitions>

  </lifecycle>
Core Framework

    Schemas
●



    Document Types
●



    Life Cycle
●



    Repository
●


        Hierarchical
    ●



        Versioning
    ●



        Backend
    ●



        API
    ●
Core Framework: Repository

    Hierarchical
●



        Servers, Domains
    ●



        Tree of documents
    ●



    Versioning
●



        Save, View, Restore
    ●



        Policy
    ●



    Backend
●



        JCR, SQL
    ●



    API
●



        Nuxeo 5, JCR 2 (JSR-283)
    ●
Core Framework

    Schemas
●



    Document Types
●



    Life Cycle
●



    Repository
●



    Security
●


        Users, Groups
    ●



        Permissions
    ●



        ACLs
    ●
Core Framework: Security ACLs

    Basic Access Control Entry (ACE)
●


        DENY Read to Anonymous
    ●



        GRANT Write to group:Developers
    ●



    Ordered List
●



    Manipulated by different services
●


        User assignment
    ●



        Workflow
    ●



        Record management locks
    ●



    Placeful and Inherited
●
Agenda

What is Enterprise Content Management
What do we want to achieve
Core Framework
Core and High-Level Services
UI Layers
Extensible and Pluggable
Using the Framework
Core Services

    Event System
●



    Directories
●



    User Manager
●



    Query
●
Core Services

    Event System
●


        Synchronous Listeners
    ●



        Low Level
    ●


             Creation, Modification, Deletion
         ●


             Move, Copy
         ●


             Security Changes
         ●



        Bridged to JMS
    ●


             Asynchronous Handlers
         ●


             Non-Core components can participate
         ●
Core Services

    Event System
●



    Directories
●


        Tabular Data
    ●



        Users and Groups
    ●



        Vocabularies
    ●



        Entries are placeless documents
    ●
Core Services: Directory

  <directory name=quot;countryquot;>
    <schema>vocabulary</schema>
    <dataSource>java:/nxsqldirectory</dataSource>
    <table>country</table>
    <idField>id</idField>
    <sqlScript>country.sql</sqlScript>
  </directory>

  <xs:schema>
    <xs:element name=quot;idquot; type=quot;xs:stringquot;/>
    <xs:element name=quot;labelquot; type=quot;xs:stringquot;/>
    <xs:element name=quot;obsoletequot; type=quot;xs:booleanquot;/>
  </xs:schema>
Core Services

    Event System
●



    Directories
●



    User Manager
●


        Bridge directories and user authentication
    ●



        Interfaces with the application server
    ●



        Global defaults
    ●
Core Services

    Event System
●



    Directories
●



    User Manager
●



    Query
●


        Multiple Backends
    ●



        Intelligent Dispatcher
    ●



        Query Language: NXQL
    ●
Core Services: Query

  SELECT * FROM Documents WHERE
    dc:title LIKE 'JavaOne%'

  SELECT * FROM Documents WHERE
    dc:modified >= TIMESTAMP '2007-01-01T00:00:00'

  SELECT * FROM Documents WHERE
    ecm:path STARTSWITH '/customers/proposals'
High-Level Services

    Audit and Logging
●



    Comments
●



    Transformations
●



    Relations
●



    Workflow
●



    Action Manager
●



    Mime Types
●



    Scheduler
●
Layered Framework: Functional View



    Web App                 RCP App          Flex App




                                                              Nuxeo Runtime
                     High Level Services
    Transform      Audit         Relation   Indexing    ...

       OOo         JDBC            Jena     Compass


                     Nuxeo Core Services
     Storage      Schemas        Versions   Security    ...

     Jackrabbit
Layered Framework: Workflow



 org.nuxeo.ecm.platform.workflow.api
 org.nuxeo.ecm.platform.workflow.client
 org.nuxeo.ecm.platform.workflow.core
 org.nuxeo.ecm.platform.workflow.document
 org.nuxeo.ecm.platform.workflow.document-api
 org.nuxeo.ecm.platform.workflow.document-facade
 org.nuxeo.ecm.platform.workflow.facade
 org.nuxeo.ecm.platform.workflow.jbpm
Layered Framework: Workflow

                                               EJB
                 Seam WF Client



  WF Facade                       Doc Facade



  Workflow API                    WF Doc API         Nuxeo Core API

   WF Core
                                   Doc Core          Nuxeo Core
    jBPM
Agenda

What is Enterprise Content Management
What do we want to achieve
Core Framework
Core and High-Level Services
UI Layers
Extensible and Pluggable
Using the Framework
UI Layers

    Web
●


        JSF, Ajax4jsf, Facelets
    ●



        EJB Action Listeners
    ●



        JBoss Seam
    ●



        Theming Engine: NXThemes
    ●



    Eclipse RCP
●
Nuxeo 5 Screenshot
Eclipse Screenshot
Agenda

What is Enterprise Content Management
What do we want to achieve
Core Framework
Core and High-Level Services
UI Layers
Extensible and Pluggable
Using the Framework
NXRuntime: Extension Points



    Nuxeo Core                  Blog Module

  Comment Service              Blog Extensions


    Type Service
                               Storage Module

  Storage Service             Jackrabbit Storage
NXRuntime: Extension Points

 <component name=quot;core.TypeServicequot; version=quot;1.0quot;>

   <implementation
       class=quot;org.nuxeo.ecm.core.schema.TypeServicequot;/>

   <extension-point name=quot;schemaquot;>
     <object class=quot;org.nuxeo.ecm.core.schema.SchemaBinding-
                                                 Descriptorquot;/>
   </extension-point>

   <extension-point name=quot;doctypequot;>
     <object class=quot;org.nuxeo.ecm.core.schema.DocumentType-
                                                 Descriptorquot;/>
   </extension-point>

 </component>
NXRuntime: Extension Points Contributions

 <component name=quot;MyTypesquot; version=quot;1.0quot;>

   <extension target=quot;core.TypeServicequot; point=quot;schemaquot;>
     <schema name=quot;commonquot; src=quot;common.xsdquot;/>
     <schema name=quot;dublincorequot; src=quot;dublincore.xsdquot;
         prefix=quot;dcquot;/>
   </extension>

   <extension target=quot;core.TypeServicequot; point=quot;doctypequot;>
     <doctype name=quot;Notequot; extends=quot;Documentquot;>
       <schema name=quot;commonquot;/>
       ...
     </doctype>
   </extension>

 </component>
Services are Pluggable

    Internal Service Provider Interfaces (SPI)
●



    Repository Backend
●



    Directory Backend
●



    Workflow Service
●



    Indexing Service
●



    Relation Service
●



    Transformation Service
●
Plug into Different Platforms

    POJO Bundles
●


        OSGi Dependencies
    ●



    Extension Points
●



    Generic Lookup Service
●



    Java EE Deployment
●


        JBoss
    ●



        GlassFish
    ●



        ...
    ●
Plug into OSGi

    OSGi as Basic Format
●


        JAR
    ●



        Meta-Information
    ●



    NXRuntime
●


        Extension points
    ●


             Definition
         ●


             Contributions
         ●



        Specialized Deployment
    ●
Plug into Java EE: Problems

    Modules hard to reuse on other platforms
●



    XML module descriptors don't allow fragmentation
●



    Hardcoded package names in code or XML
●



    Cannot add functionality without redeploying the entire
●


    application
    No extension model (plugins)
●
Plug into Java EE: Deployment

    Deployment
●


        Ordering
    ●



        Dynamic Activation
    ●



        Contributed XML descriptors
    ●


             EAR: application.xml, jboss-app.xml
         ●


             WAR: web.xml, faces-config.xml, pages.xml
         ●


             Other: persistence.xml, datasources
         ●



        L10n properties files
    ●



    Services as MBeans
●



    Lookup Service
●
Agenda

What is Enterprise Content Management
What do we want to achieve
Core Framework
Core and High-Level Services
UI Layers
Extensible and Pluggable
Using the Framework
Using the Framework

    Contribute to Extension Points
●


        Schemas, Documents
    ●



        Actions
    ●



        Event Listeners
    ●



        Directories
    ●



    XHTML UI
●


        JSF
    ●



    EJB Action Listeners
●


        Seam
    ●



    Deployment Rules
●
Using the Framework: JSF

<h:outputText value=quot;#{messages['label.edit']}quot; class=”top”/>
<h:form>
  <h:panelGrid columns=quot;3quot; styleClass=quot;dataInputquot;
      columnClasses=quot;labelColumn,fieldColumnquot;>

   <h:outputText value=quot;#{messages['label.title']}quot;/>
   <h:inputText value=quot;#{currentDocument.dublincore.title}quot;
       class=quot;dataInputTextquot; id=quot;titlequot; required=quot;truequot;>
     <f:validateLength minimum=quot;5quot;/>
   </h:inputText>
   <h:message styleClass=quot;errorMessagequot; for=quot;titlequot;/>

    <h:outputText value=quot;quot;/>
    <h:commandButton value=quot;#{messages['label.save']}quot;
        styleClass=quot;buttonquot; type=quot;submitquot;
        action=quot;#{documentActions.updateCurrentDocument}quot;/>
</h:form>
Using the Framework: Action Listener

@Stateless
@Name(quot;myActionsquot;)
public class MyActionsBean implements MyActions {

      @In(required = true)
      protected Document currentDocument;

      public String doSubmit() throws ClientException {
          String title = currentDocument.getProperty(quot;dc:titlequot;);
          title += quot; (Captured)quot;;
          currentDocument.setProperty(quot;dc:titlequot;, title);
          currentDocument.save();
          return null;
      }
}
Summary

    Modular Framework
●



    Flexible Backends
●



    Platform Independent
●



    Easy Extensions
●



    Open Source
●



    We Welcome Your Ideas and Contributions!
●
For More Information




 http://www.nuxeo.org/
 http://svn.nuxeo.org/


 http://lists.nuxeo.com/mailman/listinfo/ecm

Contenu connexe

Tendances

Ajax In Enterprise Portals Wesley Hales
Ajax In Enterprise Portals Wesley HalesAjax In Enterprise Portals Wesley Hales
Ajax In Enterprise Portals Wesley Halesrajivmordani
 
Refactor your Java EE application using Microservices and Containers - Arun G...
Refactor your Java EE application using Microservices and Containers - Arun G...Refactor your Java EE application using Microservices and Containers - Arun G...
Refactor your Java EE application using Microservices and Containers - Arun G...Codemotion
 
ASP.NET 5: What's the Big Deal
ASP.NET 5: What's the Big DealASP.NET 5: What's the Big Deal
ASP.NET 5: What's the Big DealJim Duffy
 
The web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulThe web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulRobert Nyman
 
Php Asp Net Interoperability Rc Jao
Php Asp Net Interoperability Rc JaoPhp Asp Net Interoperability Rc Jao
Php Asp Net Interoperability Rc Jaojedt
 
Crash Course HTML/Rails Slides
Crash Course HTML/Rails SlidesCrash Course HTML/Rails Slides
Crash Course HTML/Rails SlidesUdita Plaha
 
Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Slobodan Lohja
 
Web application framework
Web application frameworkWeb application framework
Web application frameworkPankaj Chand
 
Integrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charity
Integrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charityIntegrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charity
Integrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charityKrzysztof Sobkowiak
 
Application Architecture Trends
Application Architecture TrendsApplication Architecture Trends
Application Architecture TrendsSrini Penchikala
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendVlad Fedosov
 
PHP konferencija - Microsoft
PHP konferencija - MicrosoftPHP konferencija - Microsoft
PHP konferencija - Microsoftnusmas
 
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015Krzysztof Sobkowiak
 
Introducing Workflow Architectures Using Grails - Greach 2015
Introducing Workflow Architectures Using Grails - Greach 2015Introducing Workflow Architectures Using Grails - Greach 2015
Introducing Workflow Architectures Using Grails - Greach 2015Rubén Mondéjar Andreu
 
Developing Plug-Ins for NetBeans
Developing Plug-Ins for NetBeansDeveloping Plug-Ins for NetBeans
Developing Plug-Ins for NetBeanselliando dias
 

Tendances (20)

Ajax In Enterprise Portals Wesley Hales
Ajax In Enterprise Portals Wesley HalesAjax In Enterprise Portals Wesley Hales
Ajax In Enterprise Portals Wesley Hales
 
PHP on Windows
PHP on WindowsPHP on Windows
PHP on Windows
 
Refactor your Java EE application using Microservices and Containers - Arun G...
Refactor your Java EE application using Microservices and Containers - Arun G...Refactor your Java EE application using Microservices and Containers - Arun G...
Refactor your Java EE application using Microservices and Containers - Arun G...
 
ASP.NET 5: What's the Big Deal
ASP.NET 5: What's the Big DealASP.NET 5: What's the Big Deal
ASP.NET 5: What's the Big Deal
 
JavaCro'14 - Hybrid mobile apps – deploy Java web application on Android to r...
JavaCro'14 - Hybrid mobile apps – deploy Java web application on Android to r...JavaCro'14 - Hybrid mobile apps – deploy Java web application on Android to r...
JavaCro'14 - Hybrid mobile apps – deploy Java web application on Android to r...
 
The web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulThe web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - Istanbul
 
Php Asp Net Interoperability Rc Jao
Php Asp Net Interoperability Rc JaoPhp Asp Net Interoperability Rc Jao
Php Asp Net Interoperability Rc Jao
 
Crash Course HTML/Rails Slides
Crash Course HTML/Rails SlidesCrash Course HTML/Rails Slides
Crash Course HTML/Rails Slides
 
Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021
 
Web application framework
Web application frameworkWeb application framework
Web application framework
 
Integrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charity
Integrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charityIntegrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charity
Integrate (Yourself) with the Apache Software Foundation - 33rd Degree 4charity
 
Application Architecture Trends
Application Architecture TrendsApplication Architecture Trends
Application Architecture Trends
 
Php On Windows
Php On WindowsPhp On Windows
Php On Windows
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend
 
PHP konferencija - Microsoft
PHP konferencija - MicrosoftPHP konferencija - Microsoft
PHP konferencija - Microsoft
 
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
Integrate (Yourself) with the Apache Software Foundation - Open Source Day 2015
 
JavaFx
JavaFxJavaFx
JavaFx
 
Top 10 web application development frameworks 2016
Top 10 web application development frameworks 2016Top 10 web application development frameworks 2016
Top 10 web application development frameworks 2016
 
Introducing Workflow Architectures Using Grails - Greach 2015
Introducing Workflow Architectures Using Grails - Greach 2015Introducing Workflow Architectures Using Grails - Greach 2015
Introducing Workflow Architectures Using Grails - Greach 2015
 
Developing Plug-Ins for NetBeans
Developing Plug-Ins for NetBeansDeveloping Plug-Ins for NetBeans
Developing Plug-Ins for NetBeans
 

En vedette

Nuxeo JavaOne 2007 presentation (in original format)
Nuxeo JavaOne 2007 presentation (in original format)Nuxeo JavaOne 2007 presentation (in original format)
Nuxeo JavaOne 2007 presentation (in original format)Stefane Fermigier
 
Nuxeo: an Open Source ECM software vendor
Nuxeo: an Open Source ECM software vendorNuxeo: an Open Source ECM software vendor
Nuxeo: an Open Source ECM software vendorStefane Fermigier
 
Memories of SLS0001
Memories of SLS0001Memories of SLS0001
Memories of SLS0001sabambmos
 
Les enjeux industriels du Cloud - Jean-Hugues Lauret
Les enjeux industriels du Cloud - Jean-Hugues LauretLes enjeux industriels du Cloud - Jean-Hugues Lauret
Les enjeux industriels du Cloud - Jean-Hugues LauretStefane Fermigier
 
Nuxeo & Takoma @ Documation 2008
Nuxeo & Takoma @ Documation 2008Nuxeo & Takoma @ Documation 2008
Nuxeo & Takoma @ Documation 2008Stefane Fermigier
 
OW2 - OSCi (Open Source Cloudware Initiative)
OW2 - OSCi (Open Source Cloudware Initiative)OW2 - OSCi (Open Source Cloudware Initiative)
OW2 - OSCi (Open Source Cloudware Initiative)Stefane Fermigier
 
What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009Stefane Fermigier
 
A Quick Tour of JVM Languages
A Quick Tour of JVM LanguagesA Quick Tour of JVM Languages
A Quick Tour of JVM LanguagesStefane Fermigier
 
Jean-Paul Smets - Free Cloud Alliance
Jean-Paul Smets - Free Cloud AllianceJean-Paul Smets - Free Cloud Alliance
Jean-Paul Smets - Free Cloud AllianceStefane Fermigier
 
Nuxeo on the Cloud - Nuxeo World 2011
Nuxeo on the Cloud - Nuxeo World 2011Nuxeo on the Cloud - Nuxeo World 2011
Nuxeo on the Cloud - Nuxeo World 2011Stefane Fermigier
 

En vedette (12)

Nuxeo JavaOne 2007 presentation (in original format)
Nuxeo JavaOne 2007 presentation (in original format)Nuxeo JavaOne 2007 presentation (in original format)
Nuxeo JavaOne 2007 presentation (in original format)
 
Nuxeo: an Open Source ECM software vendor
Nuxeo: an Open Source ECM software vendorNuxeo: an Open Source ECM software vendor
Nuxeo: an Open Source ECM software vendor
 
Memories of SLS0001
Memories of SLS0001Memories of SLS0001
Memories of SLS0001
 
Four Python Pains
Four Python PainsFour Python Pains
Four Python Pains
 
Demo Cup 2012
Demo Cup 2012Demo Cup 2012
Demo Cup 2012
 
Les enjeux industriels du Cloud - Jean-Hugues Lauret
Les enjeux industriels du Cloud - Jean-Hugues LauretLes enjeux industriels du Cloud - Jean-Hugues Lauret
Les enjeux industriels du Cloud - Jean-Hugues Lauret
 
Nuxeo & Takoma @ Documation 2008
Nuxeo & Takoma @ Documation 2008Nuxeo & Takoma @ Documation 2008
Nuxeo & Takoma @ Documation 2008
 
OW2 - OSCi (Open Source Cloudware Initiative)
OW2 - OSCi (Open Source Cloudware Initiative)OW2 - OSCi (Open Source Cloudware Initiative)
OW2 - OSCi (Open Source Cloudware Initiative)
 
What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009
 
A Quick Tour of JVM Languages
A Quick Tour of JVM LanguagesA Quick Tour of JVM Languages
A Quick Tour of JVM Languages
 
Jean-Paul Smets - Free Cloud Alliance
Jean-Paul Smets - Free Cloud AllianceJean-Paul Smets - Free Cloud Alliance
Jean-Paul Smets - Free Cloud Alliance
 
Nuxeo on the Cloud - Nuxeo World 2011
Nuxeo on the Cloud - Nuxeo World 2011Nuxeo on the Cloud - Nuxeo World 2011
Nuxeo on the Cloud - Nuxeo World 2011
 

Similaire à Nuxeo JavaOne 2007

Adding Data into your SOA with WSO2 WSAS
Adding Data into your SOA with WSO2 WSASAdding Data into your SOA with WSO2 WSAS
Adding Data into your SOA with WSO2 WSASsumedha.r
 
How to migrate from any CMS (thru the front-door)
How to migrate from any CMS (thru the front-door)How to migrate from any CMS (thru the front-door)
How to migrate from any CMS (thru the front-door)ICF CIRCUIT
 
Jesy George_CV_LATEST
Jesy George_CV_LATESTJesy George_CV_LATEST
Jesy George_CV_LATESTJesy George
 
Rajiv ranjan resume-us
Rajiv ranjan  resume-usRajiv ranjan  resume-us
Rajiv ranjan resume-usRajiv Ranjan
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)Pat Patterson
 
Apache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextApache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextPrateek Maheshwari
 
Nitesh_Sr._Java_developer_Lead
Nitesh_Sr._Java_developer_Lead Nitesh_Sr._Java_developer_Lead
Nitesh_Sr._Java_developer_Lead Nitesh Dasari
 
Perfsystems- Consulting Services
Perfsystems- Consulting ServicesPerfsystems- Consulting Services
Perfsystems- Consulting ServicesPerfsys Tems
 
Kalyan Chakravarthy - Sr JavaJ2EE Developer
Kalyan Chakravarthy - Sr JavaJ2EE DeveloperKalyan Chakravarthy - Sr JavaJ2EE Developer
Kalyan Chakravarthy - Sr JavaJ2EE Developerchakri kalyan
 
Ram Kumar - Sr. Certified Mule ESB Integration Developer
Ram Kumar - Sr. Certified Mule ESB Integration DeveloperRam Kumar - Sr. Certified Mule ESB Integration Developer
Ram Kumar - Sr. Certified Mule ESB Integration DeveloperRam Kumar
 
OOW09 Ebs Tuning Final
OOW09 Ebs Tuning FinalOOW09 Ebs Tuning Final
OOW09 Ebs Tuning Finaljucaab
 
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document StoreConnector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document StoreFilipe Silva
 

Similaire à Nuxeo JavaOne 2007 (20)

Adding Data into your SOA with WSO2 WSAS
Adding Data into your SOA with WSO2 WSASAdding Data into your SOA with WSO2 WSAS
Adding Data into your SOA with WSO2 WSAS
 
How to migrate from any CMS (thru the front-door)
How to migrate from any CMS (thru the front-door)How to migrate from any CMS (thru the front-door)
How to migrate from any CMS (thru the front-door)
 
Os Haase
Os HaaseOs Haase
Os Haase
 
Jesy George_CV_LATEST
Jesy George_CV_LATESTJesy George_CV_LATEST
Jesy George_CV_LATEST
 
Rajiv ranjan resume-us
Rajiv ranjan  resume-usRajiv ranjan  resume-us
Rajiv ranjan resume-us
 
Rinzu_Dongol-CV
Rinzu_Dongol-CVRinzu_Dongol-CV
Rinzu_Dongol-CV
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
 
Apache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextApache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's Next
 
Nitesh_Sr._Java_developer_Lead
Nitesh_Sr._Java_developer_Lead Nitesh_Sr._Java_developer_Lead
Nitesh_Sr._Java_developer_Lead
 
Perfsystems- Consulting Services
Perfsystems- Consulting ServicesPerfsystems- Consulting Services
Perfsystems- Consulting Services
 
Oracle OpenWorld 2014 Review Part Four - PaaS Middleware
Oracle OpenWorld 2014 Review Part Four - PaaS MiddlewareOracle OpenWorld 2014 Review Part Four - PaaS Middleware
Oracle OpenWorld 2014 Review Part Four - PaaS Middleware
 
Kalyan Chakravarthy - Sr JavaJ2EE Developer
Kalyan Chakravarthy - Sr JavaJ2EE DeveloperKalyan Chakravarthy - Sr JavaJ2EE Developer
Kalyan Chakravarthy - Sr JavaJ2EE Developer
 
Mohamed Mahgoub_CV
Mohamed Mahgoub_CVMohamed Mahgoub_CV
Mohamed Mahgoub_CV
 
MeteorJS Introduction
MeteorJS IntroductionMeteorJS Introduction
MeteorJS Introduction
 
Prashant Patel
Prashant PatelPrashant Patel
Prashant Patel
 
Ram Kumar - Sr. Certified Mule ESB Integration Developer
Ram Kumar - Sr. Certified Mule ESB Integration DeveloperRam Kumar - Sr. Certified Mule ESB Integration Developer
Ram Kumar - Sr. Certified Mule ESB Integration Developer
 
OOW09 Ebs Tuning Final
OOW09 Ebs Tuning FinalOOW09 Ebs Tuning Final
OOW09 Ebs Tuning Final
 
Qcon
QconQcon
Qcon
 
Noonan_resume
Noonan_resumeNoonan_resume
Noonan_resume
 
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document StoreConnector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
Connector/J Beyond JDBC: the X DevAPI for Java and MySQL as a Document Store
 

Plus de Stefane Fermigier

Pitch Abilian - Paris Open Source Summit 2015
Pitch Abilian - Paris Open Source Summit 2015Pitch Abilian - Paris Open Source Summit 2015
Pitch Abilian - Paris Open Source Summit 2015Stefane Fermigier
 
15 ans de politiques publiques du logiciel libre en France
15 ans de politiques publiques du logiciel libre en France15 ans de politiques publiques du logiciel libre en France
15 ans de politiques publiques du logiciel libre en FranceStefane Fermigier
 
Créer une communauté open source: pourquoi ? comment ?
Créer une communauté open source: pourquoi ? comment ?Créer une communauté open source: pourquoi ? comment ?
Créer une communauté open source: pourquoi ? comment ?Stefane Fermigier
 
L'open source professionnel - un business model open source
L'open source professionnel - un business model open sourceL'open source professionnel - un business model open source
L'open source professionnel - un business model open sourceStefane Fermigier
 
Roadmap du GT Logiciel Libre 2013-2020
Roadmap du GT Logiciel Libre 2013-2020Roadmap du GT Logiciel Libre 2013-2020
Roadmap du GT Logiciel Libre 2013-2020Stefane Fermigier
 
Le MOOC powered by Abilian - Plateforme open source de MOOC
Le MOOC powered by Abilian - Plateforme open source de MOOCLe MOOC powered by Abilian - Plateforme open source de MOOC
Le MOOC powered by Abilian - Plateforme open source de MOOCStefane Fermigier
 
Pourquoi le big data open source ?
Pourquoi le big data open source ?Pourquoi le big data open source ?
Pourquoi le big data open source ?Stefane Fermigier
 
Pleniere du GT Logiciel Libre, janvier 2013
Pleniere du GT Logiciel Libre, janvier 2013Pleniere du GT Logiciel Libre, janvier 2013
Pleniere du GT Logiciel Libre, janvier 2013Stefane Fermigier
 
Nuxeo, an open source platform for content-centric business applications
Nuxeo, an open source platform for content-centric business applicationsNuxeo, an open source platform for content-centric business applications
Nuxeo, an open source platform for content-centric business applicationsStefane Fermigier
 
ECM Meets the Semantic Web - Nuxeo World 2011
ECM Meets the Semantic Web - Nuxeo World 2011ECM Meets the Semantic Web - Nuxeo World 2011
ECM Meets the Semantic Web - Nuxeo World 2011Stefane Fermigier
 
GT Logiciel Libre - Convention Systematic 2011
GT Logiciel Libre - Convention Systematic 2011GT Logiciel Libre - Convention Systematic 2011
GT Logiciel Libre - Convention Systematic 2011Stefane Fermigier
 
Challenges du recrutement pour un editeur de logiciel libre
Challenges du recrutement pour un editeur de logiciel libreChallenges du recrutement pour un editeur de logiciel libre
Challenges du recrutement pour un editeur de logiciel libreStefane Fermigier
 
Open World Forum 2011 - Overview
Open World Forum 2011 - OverviewOpen World Forum 2011 - Overview
Open World Forum 2011 - OverviewStefane Fermigier
 

Plus de Stefane Fermigier (20)

Pitch Abilian - Paris Open Source Summit 2015
Pitch Abilian - Paris Open Source Summit 2015Pitch Abilian - Paris Open Source Summit 2015
Pitch Abilian - Paris Open Source Summit 2015
 
15 ans de politiques publiques du logiciel libre en France
15 ans de politiques publiques du logiciel libre en France15 ans de politiques publiques du logiciel libre en France
15 ans de politiques publiques du logiciel libre en France
 
Créer une communauté open source: pourquoi ? comment ?
Créer une communauté open source: pourquoi ? comment ?Créer une communauté open source: pourquoi ? comment ?
Créer une communauté open source: pourquoi ? comment ?
 
L'open source professionnel - un business model open source
L'open source professionnel - un business model open sourceL'open source professionnel - un business model open source
L'open source professionnel - un business model open source
 
Roadmap du GT Logiciel Libre 2013-2020
Roadmap du GT Logiciel Libre 2013-2020Roadmap du GT Logiciel Libre 2013-2020
Roadmap du GT Logiciel Libre 2013-2020
 
Le MOOC powered by Abilian - Plateforme open source de MOOC
Le MOOC powered by Abilian - Plateforme open source de MOOCLe MOOC powered by Abilian - Plateforme open source de MOOC
Le MOOC powered by Abilian - Plateforme open source de MOOC
 
Pitch Abilian mai 2013
Pitch Abilian mai 2013Pitch Abilian mai 2013
Pitch Abilian mai 2013
 
Open Innovation in Action
Open Innovation in ActionOpen Innovation in Action
Open Innovation in Action
 
Pourquoi le big data open source ?
Pourquoi le big data open source ?Pourquoi le big data open source ?
Pourquoi le big data open source ?
 
Save the date OWF 2013
Save the date OWF 2013Save the date OWF 2013
Save the date OWF 2013
 
Ecosystemes logiciel libre
Ecosystemes logiciel libreEcosystemes logiciel libre
Ecosystemes logiciel libre
 
Pleniere du GT Logiciel Libre, janvier 2013
Pleniere du GT Logiciel Libre, janvier 2013Pleniere du GT Logiciel Libre, janvier 2013
Pleniere du GT Logiciel Libre, janvier 2013
 
OWF 2012 Outcome
OWF 2012 OutcomeOWF 2012 Outcome
OWF 2012 Outcome
 
Cours ECM à l'EPITA
Cours ECM à l'EPITACours ECM à l'EPITA
Cours ECM à l'EPITA
 
Nuxeo, an open source platform for content-centric business applications
Nuxeo, an open source platform for content-centric business applicationsNuxeo, an open source platform for content-centric business applications
Nuxeo, an open source platform for content-centric business applications
 
ECM Meets the Semantic Web - Nuxeo World 2011
ECM Meets the Semantic Web - Nuxeo World 2011ECM Meets the Semantic Web - Nuxeo World 2011
ECM Meets the Semantic Web - Nuxeo World 2011
 
Nuxeo at 10
Nuxeo at 10Nuxeo at 10
Nuxeo at 10
 
GT Logiciel Libre - Convention Systematic 2011
GT Logiciel Libre - Convention Systematic 2011GT Logiciel Libre - Convention Systematic 2011
GT Logiciel Libre - Convention Systematic 2011
 
Challenges du recrutement pour un editeur de logiciel libre
Challenges du recrutement pour un editeur de logiciel libreChallenges du recrutement pour un editeur de logiciel libre
Challenges du recrutement pour un editeur de logiciel libre
 
Open World Forum 2011 - Overview
Open World Forum 2011 - OverviewOpen World Forum 2011 - Overview
Open World Forum 2011 - Overview
 

Dernier

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
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...DianaGray10
 
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 educationjfdjdjcjdnsjd
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
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...apidays
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
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 FMESafe Software
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
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 REVIEWERMadyBayot
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 

Dernier (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
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...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 

Nuxeo JavaOne 2007

  • 1. Building an Embeddable Enterprise Content Management Core With the Latest Java Technologies Florent Guillaume JavaOne 2007 (TS-4532)
  • 2. Goal Of This Talk Learn about the design and use of Nuxeo™ 5, an embeddable, extensible Enterprise Content Management framework for Java™ EE and other platforms
  • 3. Agenda What is Enterprise Content Management What do we want to achieve Core Framework Core and High-Level Services UI Layers Extensible and Pluggable Using the Framework
  • 4. What is Enterprise Content Management? 1990–2000... Manufacturing ● Supply Chain ● HR ● Accounting ● Unification ERP Activity Management ● Shipping ●
  • 5. What is Enterprise Content Management? 2000–20... Documents (Records, E-Mail, Media) ● Imaging ● Search Engine ● Archiving ● Unification ECM Collaboration ● Web Publishing ● Access Control ● Compliance ●
  • 6. What is Enterprise Content Management? The technologies used to capture ● create ● manage ● store ● preserve ● reuse ● deliver ● content within the enterprise
  • 7. Agenda What is Enterprise Content Management What do we want to achieve Core Framework Core and High-Level Services UI Layers Extensible and Pluggable Using the Framework
  • 8. What do we want to achieve? Create a Framework ● Make it Extensible ● Make it Multi-Platform ● Use the Latest Technologies ● Open Source ●
  • 9. What do we want to achieve? Create a Framework ● Set of Services ● Software Bundles ● Set of APIs ● Open to other systems ● Configuration ● XML rather than code ●
  • 10. What do we want to achieve? Create a Framework ● Make it Extensible ● New services ● New backends to existing services ●
  • 11. What do we want to achieve? Create a Framework ● Make it Extensible ● Make it Multi-Platform ● POJOs ● Java EE ● Clusterable, distributable ● Eclipse ● Rich Client Platform (RCP) ● Mix of those ● RCP client, Java EE server ●
  • 12. What do we want to achieve? Create a Framework ● Make it Extensible ● Make it Multi-Platform ● Use the Latest Technologies ● Java 5, Java EE 5 ● OSGi ● JCR (JSR-170, JSR-283), W3C XML Schemas ● JSF, Facelets ● BPEL, WfMC ● SOAP, WSDL ●
  • 13. What do we want to achieve? Create a Framework ● Make it Extensible ● Make it Multi-Platform ● Use the Latest Technologies ● Open Source ● LGPL, EPL ● http://www.nuxeo.org ●
  • 14. Agenda What is Enterprise Content Management What do we want to achieve Core Framework Core and High-Level Services UI Layers Extensible and Pluggable Using the Framework
  • 15. Core Framework Schemas ● Document Types ● Life Cycle ● Repository ● Security ●
  • 16. Core Framework Schemas ● Structure the documents ● XML Schemas ● Complex Types ● Attached Files ●
  • 17. Core Framework: Schema DublinCore <xs:schema> <xs:element name=quot;titlequot; type=quot;xs:stringquot;/> <xs:element name=quot;descriptionquot; type=quot;xs:stringquot;/> <xs:element name=quot;rightsquot; type=quot;xs:stringquot;/> <xs:element name=quot;createdquot; type=quot;xs:datequot;/> <xs:element name=quot;modifiedquot; type=quot;xs:datequot;/> <xs:element name=quot;issuedquot; type=quot;xs:datequot;/> <xs:element name=quot;formatquot; type=quot;xs:stringquot;/> <xs:element name=quot;languagequot; type=quot;xs:stringquot;/> ... </xs:schema>
  • 18. Core Framework: Schema Baddies <xs:schema> <xs:complexType name=quot;baddiequot;> <xs:sequence> <xs:element name=quot;surnamequot; type=quot;xs:stringquot;/> <xs:element name=quot;levelquot; type=quot;xs:positiveIntegerquot;/> <xs:element name=quot;birthquot; type=quot;xs:datequot;/> </xs:sequence> </xs:complexType> <xs:complexType name=quot;baddiesquot;> <xs:sequence> <xs:element name=quot;baddiequot; type=quot;baddiequot; minOccurs=quot;0quot; maxOccurs=quot;unboundedquot;/> </xs:sequence> </xs:complexType> <xs:element name=quot;baddiesquot; type=quot;baddiesquot;/> </xs:schema>
  • 19. Core Framework: XML Equivalent <baddies> <baddie> <surname>Sylar</surname> <level>38</level> <birth>1962-06-11</birth> </baddie> </baddies>
  • 20. Core Framework Schemas ● Document Types ● High-level name ● Aggregate schemas ● Facets ●
  • 21. Core Framework: Document Type <doctype name=quot;Notequot; extends=quot;Documentquot;> <schema name=quot;dublincorequot;/> <schema name=quot;notequot;/> <facet name=quot;Commentablequot;/> <facet name=quot;Versionablequot;/> <facet name=quot;Publishablequot;/> </doctype>
  • 22. Core Framework Schemas ● Document Types ● Life Cycle ● States ● Transitions ●
  • 23. Core Framework: Life Cycle States <lifecycle name=quot;defaultquot; initial=quot;projectquot;> <states> <state name=quot;projectquot;> <transitions> <transition>approve</transition> </transitions> </state> <state name=quot;approvedquot;> <transitions> <transition>obsolete</transition> </transitions> </state> <state name=quot;obsoletequot;/> </states> ...
  • 24. Core Framework: Life Cycle Transitions <lifecycle name=quot;defaultquot; initial=quot;projectquot;> ... <transitions> <transition name=quot;approvequot; destination=quot;approvedquot;> <description>Approve the document</description> </transition> <transition name=quot;obsoletequot; destination=quot;obsoletequot;> <description>Obsolete the document</description> </transition> </transitions> </lifecycle>
  • 25. Core Framework Schemas ● Document Types ● Life Cycle ● Repository ● Hierarchical ● Versioning ● Backend ● API ●
  • 26. Core Framework: Repository Hierarchical ● Servers, Domains ● Tree of documents ● Versioning ● Save, View, Restore ● Policy ● Backend ● JCR, SQL ● API ● Nuxeo 5, JCR 2 (JSR-283) ●
  • 27. Core Framework Schemas ● Document Types ● Life Cycle ● Repository ● Security ● Users, Groups ● Permissions ● ACLs ●
  • 28. Core Framework: Security ACLs Basic Access Control Entry (ACE) ● DENY Read to Anonymous ● GRANT Write to group:Developers ● Ordered List ● Manipulated by different services ● User assignment ● Workflow ● Record management locks ● Placeful and Inherited ●
  • 29. Agenda What is Enterprise Content Management What do we want to achieve Core Framework Core and High-Level Services UI Layers Extensible and Pluggable Using the Framework
  • 30. Core Services Event System ● Directories ● User Manager ● Query ●
  • 31. Core Services Event System ● Synchronous Listeners ● Low Level ● Creation, Modification, Deletion ● Move, Copy ● Security Changes ● Bridged to JMS ● Asynchronous Handlers ● Non-Core components can participate ●
  • 32. Core Services Event System ● Directories ● Tabular Data ● Users and Groups ● Vocabularies ● Entries are placeless documents ●
  • 33. Core Services: Directory <directory name=quot;countryquot;> <schema>vocabulary</schema> <dataSource>java:/nxsqldirectory</dataSource> <table>country</table> <idField>id</idField> <sqlScript>country.sql</sqlScript> </directory> <xs:schema> <xs:element name=quot;idquot; type=quot;xs:stringquot;/> <xs:element name=quot;labelquot; type=quot;xs:stringquot;/> <xs:element name=quot;obsoletequot; type=quot;xs:booleanquot;/> </xs:schema>
  • 34. Core Services Event System ● Directories ● User Manager ● Bridge directories and user authentication ● Interfaces with the application server ● Global defaults ●
  • 35. Core Services Event System ● Directories ● User Manager ● Query ● Multiple Backends ● Intelligent Dispatcher ● Query Language: NXQL ●
  • 36. Core Services: Query SELECT * FROM Documents WHERE dc:title LIKE 'JavaOne%' SELECT * FROM Documents WHERE dc:modified >= TIMESTAMP '2007-01-01T00:00:00' SELECT * FROM Documents WHERE ecm:path STARTSWITH '/customers/proposals'
  • 37. High-Level Services Audit and Logging ● Comments ● Transformations ● Relations ● Workflow ● Action Manager ● Mime Types ● Scheduler ●
  • 38. Layered Framework: Functional View Web App RCP App Flex App Nuxeo Runtime High Level Services Transform Audit Relation Indexing ... OOo JDBC Jena Compass Nuxeo Core Services Storage Schemas Versions Security ... Jackrabbit
  • 39. Layered Framework: Workflow org.nuxeo.ecm.platform.workflow.api org.nuxeo.ecm.platform.workflow.client org.nuxeo.ecm.platform.workflow.core org.nuxeo.ecm.platform.workflow.document org.nuxeo.ecm.platform.workflow.document-api org.nuxeo.ecm.platform.workflow.document-facade org.nuxeo.ecm.platform.workflow.facade org.nuxeo.ecm.platform.workflow.jbpm
  • 40. Layered Framework: Workflow EJB Seam WF Client WF Facade Doc Facade Workflow API WF Doc API Nuxeo Core API WF Core Doc Core Nuxeo Core jBPM
  • 41. Agenda What is Enterprise Content Management What do we want to achieve Core Framework Core and High-Level Services UI Layers Extensible and Pluggable Using the Framework
  • 42. UI Layers Web ● JSF, Ajax4jsf, Facelets ● EJB Action Listeners ● JBoss Seam ● Theming Engine: NXThemes ● Eclipse RCP ●
  • 45. Agenda What is Enterprise Content Management What do we want to achieve Core Framework Core and High-Level Services UI Layers Extensible and Pluggable Using the Framework
  • 46. NXRuntime: Extension Points Nuxeo Core Blog Module Comment Service Blog Extensions Type Service Storage Module Storage Service Jackrabbit Storage
  • 47. NXRuntime: Extension Points <component name=quot;core.TypeServicequot; version=quot;1.0quot;> <implementation class=quot;org.nuxeo.ecm.core.schema.TypeServicequot;/> <extension-point name=quot;schemaquot;> <object class=quot;org.nuxeo.ecm.core.schema.SchemaBinding- Descriptorquot;/> </extension-point> <extension-point name=quot;doctypequot;> <object class=quot;org.nuxeo.ecm.core.schema.DocumentType- Descriptorquot;/> </extension-point> </component>
  • 48. NXRuntime: Extension Points Contributions <component name=quot;MyTypesquot; version=quot;1.0quot;> <extension target=quot;core.TypeServicequot; point=quot;schemaquot;> <schema name=quot;commonquot; src=quot;common.xsdquot;/> <schema name=quot;dublincorequot; src=quot;dublincore.xsdquot; prefix=quot;dcquot;/> </extension> <extension target=quot;core.TypeServicequot; point=quot;doctypequot;> <doctype name=quot;Notequot; extends=quot;Documentquot;> <schema name=quot;commonquot;/> ... </doctype> </extension> </component>
  • 49. Services are Pluggable Internal Service Provider Interfaces (SPI) ● Repository Backend ● Directory Backend ● Workflow Service ● Indexing Service ● Relation Service ● Transformation Service ●
  • 50. Plug into Different Platforms POJO Bundles ● OSGi Dependencies ● Extension Points ● Generic Lookup Service ● Java EE Deployment ● JBoss ● GlassFish ● ... ●
  • 51. Plug into OSGi OSGi as Basic Format ● JAR ● Meta-Information ● NXRuntime ● Extension points ● Definition ● Contributions ● Specialized Deployment ●
  • 52. Plug into Java EE: Problems Modules hard to reuse on other platforms ● XML module descriptors don't allow fragmentation ● Hardcoded package names in code or XML ● Cannot add functionality without redeploying the entire ● application No extension model (plugins) ●
  • 53. Plug into Java EE: Deployment Deployment ● Ordering ● Dynamic Activation ● Contributed XML descriptors ● EAR: application.xml, jboss-app.xml ● WAR: web.xml, faces-config.xml, pages.xml ● Other: persistence.xml, datasources ● L10n properties files ● Services as MBeans ● Lookup Service ●
  • 54. Agenda What is Enterprise Content Management What do we want to achieve Core Framework Core and High-Level Services UI Layers Extensible and Pluggable Using the Framework
  • 55. Using the Framework Contribute to Extension Points ● Schemas, Documents ● Actions ● Event Listeners ● Directories ● XHTML UI ● JSF ● EJB Action Listeners ● Seam ● Deployment Rules ●
  • 56. Using the Framework: JSF <h:outputText value=quot;#{messages['label.edit']}quot; class=”top”/> <h:form> <h:panelGrid columns=quot;3quot; styleClass=quot;dataInputquot; columnClasses=quot;labelColumn,fieldColumnquot;> <h:outputText value=quot;#{messages['label.title']}quot;/> <h:inputText value=quot;#{currentDocument.dublincore.title}quot; class=quot;dataInputTextquot; id=quot;titlequot; required=quot;truequot;> <f:validateLength minimum=quot;5quot;/> </h:inputText> <h:message styleClass=quot;errorMessagequot; for=quot;titlequot;/> <h:outputText value=quot;quot;/> <h:commandButton value=quot;#{messages['label.save']}quot; styleClass=quot;buttonquot; type=quot;submitquot; action=quot;#{documentActions.updateCurrentDocument}quot;/> </h:form>
  • 57. Using the Framework: Action Listener @Stateless @Name(quot;myActionsquot;) public class MyActionsBean implements MyActions { @In(required = true) protected Document currentDocument; public String doSubmit() throws ClientException { String title = currentDocument.getProperty(quot;dc:titlequot;); title += quot; (Captured)quot;; currentDocument.setProperty(quot;dc:titlequot;, title); currentDocument.save(); return null; } }
  • 58. Summary Modular Framework ● Flexible Backends ● Platform Independent ● Easy Extensions ● Open Source ● We Welcome Your Ideas and Contributions! ●
  • 59. For More Information http://www.nuxeo.org/ http://svn.nuxeo.org/ http://lists.nuxeo.com/mailman/listinfo/ecm