nuxeo javaone 2007 presentation (in original format)
DESCRIPTION
This session describes the architecture and implementation of an embeddable, extensible enterprise content management core for Java EE and simpler platforms. The presentation starts by describing the general architectural concepts used as building blocks: • A schema and document model, reusing XML schemas and making good use of XML namespaces, where document types are built with several facets • A repository model, using hierarchy and versioning, with the Content Repository API for Java (JSR 170) being one of the possible back ends • A query model, based on the Java Persistence query language (JSR 220) and reusing the path-based concepts from Java Content Repositories (JCR) • A fine-grained security model, compatible with WebDAV concepts and designed to provide flexible security policies • An event model using synchronous and asynchronous events, allowing bridging through Java Message Service (JMS) or other systems to other event-enabled frameworks • A directory model, representing access to external data sources using the same concepts as for documents but taking advantage of the specificities of the data back ends Suitable abstraction layers are put in place to provide the required level of flexibility. One of the main architectural tasks is to find commonalities in all the systems used (or whose use is planned in the future) so framework users need to learn and use a minimal number of concepts. The result is a set of concepts that are fundamental to enterprise document management and are usable through direct Java technology-based APIs, Java EE APIs, or SOA. The presentation shows, for each of the main components, which challenges have been met and overcome when building a framework in which all components are designed to be improved and replaced by different implementations without sacrificing backward compatibility with existing ones. The described implementation, Nuxeo Core, can be embedded in a basic Java technology-based framework based on OSGi (such as Eclipse) or in one based on Java EE, according to the needs of the application using it. This means that the core has to function without relying on Java EE services but also has to take advantage of them when they are available (providing clustering, messaging, caching, remoting, and advanced deployment).TRANSCRIPT
![Page 1: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/1.jpg)
2007 JavaOneSM Conference | Session TS-4532 |
TS-4532
Building an Embeddable Enterprise Content Management Core With the Latest Java™
TechnologiesFlorent Guillaume Arnaud LefevreChief Scientist VP of SalesNuxeowww.nuxeo.com
![Page 2: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/2.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 2
Goal of This Session
Learn about the design and use of Nuxeo™ 5, an embeddable, extensible Enterprise Content Management framework for Java™ Platform, Enterprise Edition (Java™ EE platform) and other platforms.
Learn how a Content Management core is built
![Page 3: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/3.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 3
AgendaWhat Is Enterprise Content ManagementWhat Do We Want to AchieveCore FrameworkCore and High-Level ServicesUI LayersExtensible and PluggableUsing the Framework
![Page 4: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/4.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 4
AgendaWhat Is Enterprise Content ManagementWhat Do We Want to AchieveCore FrameworkCore and High-Level ServicesUI LayersExtensible and PluggableUsing the Framework
![Page 5: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/5.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 5
What IsEnterprise Content Management?● Manufacturing● Supply Chain● HR● Accounting● Activity Management● Shipping
ERPUnification
1990–2000…
![Page 6: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/6.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 6
What IsEnterprise Content Management?2000–20...● Documents (Records, E-Mail, Media)● Acquisition● Search Engine● Archiving● Collaboration● Web Publishing● Access Control● Compliance
ECMUnification
![Page 7: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/7.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 7
What IsEnterprise Content Management?The technologies used to:
● Capture● Create● Manage● Store● Preserve● Reuse● Deliver
content within the enterprise
![Page 8: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/8.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 8
AgendaWhat Is Enterprise Content ManagementWhat Do We Want to AchieveCore FrameworkCore and High-Level ServicesUI LayersExtensible and PluggableUsing the Framework
![Page 9: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/9.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 9
What Do We Want to Achieve?● Create a Framework● Make It Extensible● Make It Multi-Platform● Use the Latest Technologies● Open Source
![Page 10: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/10.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 10
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
![Page 11: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/11.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 11
What Do We Want to Achieve?● Create a Framework● Make It Extensible
● New services● New backends to existing services
![Page 12: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/12.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 12
What Do We Want to Achieve?● Create a Framework● Make It Extensible● Make It Multi-Platform
● POJOs● Java EE platform
● Clusterable, distributable● Eclipse
● Rich Client Platform (RCP)● Mix of those
● RCP client, Java EE platform server
![Page 13: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/13.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 13
What Do We Want to Achieve?● Create a Framework● Make It Extensible● Make It Multi-Platform● Use the Latest Technologies
● Java platform v.5, Java EE 5● OSGi● JCR (JSR-170, JSR-283), W3C XML Schemas● JavaServer Faces™ technology, Facelets● BPEL, WfMC● SOAP, WSDL
JSR = Java Specification Request
![Page 14: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/14.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 14
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
![Page 15: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/15.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 15
AgendaWhat Is Enterprise Content ManagementWhat Do We Want to AchieveCore FrameworkCore and High-Level ServicesUI LayersExtensible and PluggableUsing the Framework
![Page 16: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/16.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 16
The basicsCore Framework● Schemas● Document Types● Life Cycle● Repository● Security
![Page 17: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/17.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 17
Core Framework● Schemas
● Structure the documents● XML Schemas● Complex Types● Attached Files
![Page 18: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/18.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 18
Core Framework: Schema DublinCore<xs:schema>
<xs:element name="title" type="xs:string"/><xs:element name="description" type="xs:string"/><xs:element name="rights" type="xs:string"/><xs:element name="created" type="xs:date"/><xs:element name="modified" type="xs:date"/><xs:element name="issued" type="xs:date"/><xs:element name="format" type="xs:string"/><xs:element name="language" type="xs:string"/>...
</xs:schema>
![Page 19: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/19.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 19
Core Framework: Schema Baddies<xs:schema><xs:complexType name="baddie"><xs:sequence><xs:element name="surname" type="xs:string"/><xs:element name="level" type="xs:positiveInteger"/><xs:element name="birth" type="xs:date"/>
</xs:sequence></xs:complexType><xs:complexType name="baddies"><xs:sequence><xs:element name="baddie" type="baddie"
minOccurs="0" maxOccurs="unbounded"/></xs:sequence>
</xs:complexType><xs:element name="baddies" type="baddies"/>
</xs:schema>
![Page 20: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/20.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 20
Core Framework: XML Equivalent<baddies>
<baddie><surname>Sylar</surname><level>38</level><birth>1962-06-11</birth>
</baddie></baddies>
![Page 21: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/21.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 21
Core Framework● Schemas● Document Types
● High-level name● Aggregate schemas● Facets
![Page 22: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/22.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 22
Core Framework: Document Type<doctype name="Note" extends="Document">
<schema name="dublincore"/><schema name="note"/>
<facet name="Commentable"/><facet name="Versionable"/><facet name="Publishable"/>
</doctype>
![Page 23: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/23.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 23
Core Framework● Schemas● Document Types● Life Cycle
● States● Transitions
![Page 24: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/24.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 24
Core Framework: Life Cycle States<lifecycle name="default" initial="project">
<states><state name="project">
<transitions><transition>approve</transition>
</transitions></state><state name="approved">
<transitions><transition>obsolete</transition>
</transitions></state><state name="obsolete"/>
</states>...
![Page 25: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/25.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 25
Core Framework: Life Cycle Transitions<lifecycle name="default" initial="project">
...<transitions>
<transition name="approve" destination="approved"><description>Approve the document</description>
</transition><transition name="obsolete"
destination="obsolete"><description>Obsolete the document</description>
</transition></transitions>
</lifecycle>
![Page 26: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/26.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 26
Core Framework● Schemas● Document Types● Life Cycle● Repository
● Hierarchical● Versioning● Backend● API
![Page 27: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/27.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 27
Core Framework: Repository● Hierarchical
● Servers, Domains● Tree of documents
● Versioning● Save, View, Restore● Policy
● Backend● JCR, SQL
● API● Nuxeo 5, JCR 2 (JSR 283)
![Page 28: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/28.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 28
Core Framework● Schemas● Document Types● Life Cycle● Repository● Security
● Users, Groups● Permissions● ACLs
![Page 29: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/29.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 29
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
![Page 30: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/30.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 30
AgendaWhat Is Enterprise Content ManagementWhat Do We Want to AchieveCore FrameworkCore and High-Level ServicesUI LayersExtensible and PluggableUsing the Framework
![Page 31: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/31.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 31
Fundamental ServicesCore Services● Event System● Directories● User Manager● Query
![Page 32: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/32.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 32
Core Services● Event System
● Synchronous Listeners● Low Level
● Creation, Modification, Deletion● Move, Copy● Security Changes
● Bridged to Java Message Service (JMS)● Asynchronous Handlers● Non-Core components can participate
![Page 33: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/33.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 33
Core Services● Event System● Directories
● Tabular Data● Users and Groups● Vocabularies● Entries are placeless documents
![Page 34: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/34.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 34
Core Services: Directory<directory name="country">
<schema>vocabulary</schema><dataSource>java:/nxsqldirectory</dataSource><table>country</table><idField>id</idField><sqlScript>country.sql</sqlScript>
</directory>
<xs:schema><xs:element name="id" type="xs:string"/><xs:element name="label" type="xs:string"/><xs:element name="obsolete" type="xs:boolean"/>
</xs:schema>
![Page 35: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/35.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 35
Core Services● Event System● Directories● User Manager
● Bridge directories and user authentication● Interfaces with the application server● Global defaults
![Page 36: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/36.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 36
Core Services● Event System● Directories● User Manager● Query
● Multiple Backends● Intelligent Dispatcher● Query Language: NXQL
![Page 37: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/37.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 37
Core Services: QuerySELECT * FROM Documents WHERE
dc:title LIKE 'JavaOne%'
SELECT * FROM Documents WHEREdc:modified >= TIMESTAMP '2007-01-01T00:00:00'
SELECT * FROM Documents WHEREecm:path STARTSWITH '/customers/proposals'
![Page 38: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/38.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 38
Advanced functionalityHigh-Level Services● Audit and Logging● Comments● Transformations● Relations● Workflow● Action Manager● Mime Types● Scheduler
![Page 39: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/39.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 39
Layered Framework: Functional View
Nuxeo Core ServicesStorage
High-Level Services
Schemas Versions Security ...
Transform Audit Relation Indexing ...
Jackrabbit
CompassJenaOOo JDBC™
Nuxeo R
untime
Web App RCP App Flex App
JDBC™ = Java DataBase Connectivity
![Page 40: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/40.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 40
Layered Framework: Workflow
org.nuxeo.ecm.platform.workflow.apiorg.nuxeo.ecm.platform.workflow.clientorg.nuxeo.ecm.platform.workflow.coreorg.nuxeo.ecm.platform.workflow.documentorg.nuxeo.ecm.platform.workflow.document-apiorg.nuxeo.ecm.platform.workflow.document-facadeorg.nuxeo.ecm.platform.workflow.facadeorg.nuxeo.ecm.platform.workflow.jbpm
![Page 41: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/41.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 41
Layered Framework: Workflow
WF Doc API
Doc Core
Workflow APIWF
Core
jBPM
EJB™
WF Facade
Seam WF Client
Doc Facade
Nuxeo Core API
Nuxeo Core
EJB™ = Enterprise JavaBeans™
![Page 42: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/42.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 42
DEMO
![Page 43: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/43.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 43
AgendaWhat Is Enterprise Content ManagementWhat Do We Want to AchieveCore FrameworkCore and High-Level ServicesUI LayersExtensible and PluggableUsing the Framework
![Page 44: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/44.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 44
How the user interacts with the systemUI Layers● Web
● JavaServer Faces technology, Ajax4jsf, Facelets● EJB specification Action Listeners● JBoss Seam● Theming Engine: NXThemes
● Eclipse RCP
![Page 45: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/45.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 45
Nuxeo 5 Screenshot
![Page 46: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/46.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 46
Eclipse Screenshot
![Page 47: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/47.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 47
AgendaWhat Is Enterprise Content ManagementWhat Do We Want to AchieveCore FrameworkCore and High-Level ServicesUI LayersExtensible and PluggableUsing the Framework
![Page 48: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/48.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 48
NXRuntime:Extension Points
Nuxeo Core
Comment Service
Type Service
Storage Service
Blog Module
Blog Extensions
Storage Module
Jackrabbit Storage
![Page 49: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/49.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 49
NXRuntime:Extension Points<component name="core.TypeService" version="1.0">
<implementationclass="org.nuxeo.ecm.core.schema.TypeService"/>
<extension-point name="schema"><object
class="org.nuxeo.ecm.core.schema.SchemaBinding-Descriptor"/>
</extension-point>
<extension-point name="doctype"><object class="org.nuxeo.ecm.core.schema.DocumentType-
Descriptor"/></extension-point>
</component>
![Page 50: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/50.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 50
NXRuntime:Extension Point Contributions<component name="MyTypes" version="1.0">
<extension target="core.TypeService" point="schema"><schema name="common" src="common.xsd"/><schema name="dublincore" src="dublincore.xsd"
prefix="dc"/></extension>
<extension target="core.TypeService" point="doctype"><doctype name="Note" extends="Document"><schema name="common"/>...
</doctype></extension>
</component>
![Page 51: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/51.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 51
Services Are Pluggable● Internal Service Provider Interfaces (SPI)● Repository Backend● Directory Backend● Workflow Service● Indexing Service● Relation Service● Transformation Service
One implementation isn’t always sufficient
![Page 52: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/52.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 52
Run anywherePlug Into Different Platforms● POJO Bundles
● OSGi Dependencies● Extension Points ● Generic Lookup Service● Java EE platform Deployment
● JBoss● GlassFish
![Page 53: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/53.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 53
Plug Into Java EE Platform: 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)
![Page 54: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/54.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 54
Plug Into Java EE Platform: 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
![Page 55: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/55.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 55
Plug Into OSGi● OSGi as Basic Format
● Java Archive (JAR)● Meta-Information
● NXRuntime● Extension points
● Definition● Contributions
● Specialized Deployment
![Page 56: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/56.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 56
AgendaWhat Is Enterprise Content ManagementWhat Do We Want to AchieveCore FrameworkCore and High-Level ServicesUI LayersExtensible and PluggableUsing the Framework
![Page 57: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/57.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 57
Using the Framework● Contribute to Extension Points
● Schemas, Documents● Actions● Event Listeners● Directories
● XHTML UI● JavaServer Faces technology
● EJB specification Action Listeners● Seam
● Deployment Rules
How to build an application with it
![Page 58: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/58.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 58
Using the Framework:JavaServer Faces Technology<h:outputText value="#{messages['label.edit']}" class=”top”/><h:form><h:panelGrid columns="3" styleClass="dataInput"
columnClasses="labelColumn,fieldColumn">
<h:outputText value="#{messages['label.title']}"/><h:inputText
value="#{currentDocument.dublincore.title}"class="dataInputText" id="title" required="true">
<f:validateLength minimum="5"/></h:inputText><h:message styleClass="errorMessage" for="title"/>
<h:outputText value=""/><h:commandButton value="#{messages['label.save']}"
styleClass="button" type="submit"action="#{documentActions.updateCurrentDocument}"/>
</h:form>
![Page 59: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/59.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 59
Using the Framework:Action Listener@Stateless@Name("myActions")public class MyActionsBean implements MyActions {
@In(required = true)protected Document currentDocument;
public String doSubmit() throws ClientException {String title =
currentDocument.getProperty("dc:title");title += " (Captured)";currentDocument.setProperty("dc:title", title);currentDocument.save();return null;
}}
![Page 60: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/60.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 60
Summary● Modular Framework● Flexible Backends● Platform Independent● Easy Extensions● Open Source● We Welcome Your Ideas and Contributions!
![Page 61: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/61.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 61
For More Information
http://www.nuxeo.org/
http://svn.nuxeo.org/
http://lists.nuxeo.com/mailman/listinfo/ecm
![Page 62: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/62.jpg)
2007 JavaOneSM Conference | Session TS-4532 | 62
Q&AFlorent GuillaumeChief Scientist
Arnaud LefevreVP of Sales
![Page 63: Nuxeo JavaOne 2007 presentation (in original format)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b5aaf04a7959cc2c8b45c5/html5/thumbnails/63.jpg)
2007 JavaOneSM Conference | Session TS-4532 |
TS-4532
Building an Embeddable Enterprise Content Management Core With the Latest Java™
TechnologiesFlorent Guillaume Arnaud LefevreChief Scientist VP of SalesNuxeowww.nuxeo.com