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).
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Nuxeo JavaOne 2007 presentation (in original format)
1. Building an Embeddable Enterprise Content
Management Core With the Latest Java™
Technologies
Florent Guillaume Arnaud Lefevre
Chief Scientist VP of Sales
Nuxeo
www.nuxeo.com
TS-4532
2007 JavaOneSM Conference | Session TS-4532 |
2. Goal of This Session
Learn how a Content Management core is built
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.
2007 JavaOneSM Conference | Session TS-4532 | 2
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
2007 JavaOneSM Conference | Session TS-4532 | 3
4. 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
2007 JavaOneSM Conference | Session TS-4532 | 4
6. What Is
Enterprise Content Management?
2000–20...
Documents (Records, E-Mail, Media)
●
Acquisition
●
Search Engine
●
ECM
Archiving Unification
●
Collaboration
●
Web Publishing
●
Access Control
●
Compliance
●
2007 JavaOneSM Conference | Session TS-4532 | 6
7. What Is
Enterprise Content Management?
The technologies used to:
Capture
●
Create
●
Manage
●
Store
●
Preserve
●
Reuse
●
Deliver
●
content within the enterprise
2007 JavaOneSM Conference | Session TS-4532 | 7
8. 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
2007 JavaOneSM Conference | Session TS-4532 | 8
9. What Do We Want to Achieve?
Create a Framework
●
Make It Extensible
●
Make It Multi-Platform
●
Use the Latest Technologies
●
Open Source
●
2007 JavaOneSM Conference | Session TS-4532 | 9
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
●
2007 JavaOneSM Conference | Session TS-4532 | 10
11. What Do We Want to Achieve?
Create a Framework
●
Make It Extensible
●
New services
●
New backends to existing services
●
2007 JavaOneSM Conference | Session TS-4532 | 11
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
●
2007 JavaOneSM Conference | Session TS-4532 | 12
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
2007 JavaOneSM Conference | Session TS-4532 | 13
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
●
2007 JavaOneSM Conference | Session TS-4532 | 14
15. 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
2007 JavaOneSM Conference | Session TS-4532 | 15
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
●
2007 JavaOneSM Conference | Session TS-4532 | 29
30. 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
2007 JavaOneSM Conference | Session TS-4532 | 30
35. Core Services
Event System
●
Directories
●
User Manager
●
Bridge directories and user authentication
●
Interfaces with the application server
●
Global defaults
●
2007 JavaOneSM Conference | Session TS-4532 | 35
43. 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
2007 JavaOneSM Conference | Session TS-4532 | 43
44. UI Layers
How the user interacts with the system
Web
●
JavaServer Faces technology, Ajax4jsf, Facelets
●
EJB specification Action Listeners
●
JBoss Seam
●
Theming Engine: NXThemes
●
Eclipse RCP
●
2007 JavaOneSM Conference | Session TS-4532 | 44
47. 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
2007 JavaOneSM Conference | Session TS-4532 | 47
48. NXRuntime:
Extension Points
Nuxeo Core Blog Module
Comment Service Blog Extensions
Type Service
Storage Module
Storage Service Jackrabbit Storage
2007 JavaOneSM Conference | Session TS-4532 | 48
51. Services Are Pluggable
One implementation isn’t always sufficient
Internal Service Provider Interfaces (SPI)
●
Repository Backend
●
Directory Backend
●
Workflow Service
●
Indexing Service
●
Relation Service
●
Transformation Service
●
2007 JavaOneSM Conference | Session TS-4532 | 51
52. Plug Into Different Platforms
Run anywhere
POJO Bundles
●
OSGi Dependencies
●
Extension Points
●
Generic Lookup Service
●
Java EE platform Deployment
●
JBoss
●
GlassFish
●
2007 JavaOneSM Conference | Session TS-4532 | 52
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)
●
2007 JavaOneSM Conference | Session TS-4532 | 53
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
●
2007 JavaOneSM Conference | Session TS-4532 | 54
56. 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
2007 JavaOneSM Conference | Session TS-4532 | 56
57. Using the Framework
How to build an application with it
Contribute to Extension Points
●
Schemas, Documents
●
Actions
●
Event Listeners
●
Directories
●
XHTML UI
●
JavaServer Faces technology
●
EJB specification Action Listeners
●
Seam
●
Deployment Rules
●
2007 JavaOneSM Conference | Session TS-4532 | 57