Nuxeo JavaOne 2007

Click here to load reader

  • date post

    17-Jan-2015
  • Category

    Technology

  • view

    6.329
  • download

    1

Embed Size (px)

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 of Nuxeo JavaOne 2007

  • 1. Building an Embeddable Enterprise Content Management Core With the Latest Java TechnologiesFlorent Guillaume JavaOne 2007 (TS-4532)

2. Goal Of This TalkLearn about the design and use of Nuxeo5,an embeddable, extensible Enterprise Content Management framework for JavaEE and other platforms 3. AgendaWhat 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? 19902000... Manufacturing Supply Chain HR Accounting Unification ERPActivity Management Shipping 5. What is Enterprise Content Management? 200020... Documents (Records, E-Mail, Media) Imaging Search Engine Archiving Unification ECMCollaboration 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. AgendaWhat 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 BundlesSet of APIs Open to other systemsConfiguration 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, distributableEclipse 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. AgendaWhat 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 FrameworkSchemas Document Types Life Cycle Repository Security 16. Core FrameworkSchemas Structure the documents XML Schemas Complex Types Attached Files 17. Core Framework: Schema DublinCore ... 18. Core Framework: Schema Baddies 19. Core Framework: XML Equivalent Sylar381962-06-11 20. Core FrameworkSchemas Document Types High-level name Aggregate schemas Facets 21. Core Framework: Document Type 22. Core FrameworkSchemas Document Types Life Cycle States Transitions 23. Core Framework: Life Cycle Statesapproveobsolete ... 24. Core Framework: Life Cycle Transitions ... Approve the documentObsolete the document 25. Core FrameworkSchemas Document Types Life Cycle Repository Hierarchical Versioning Backend API 26. Core Framework: RepositoryHierarchical Servers, Domains Tree of documents Versioning Save, View, Restore Policy Backend JCR, SQL API Nuxeo 5, JCR 2 (JSR-283) 27. Core FrameworkSchemas Document Types Life Cycle Repository Security Users, Groups Permissions ACLs 28. Core Framework: Security ACLsBasic 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. AgendaWhat 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 ServicesEvent System Directories User Manager Query 31. Core ServicesEvent System Synchronous Listeners Low Level Creation, Modification, DeletionMove, CopySecurity ChangesBridged to JMS Asynchronous HandlersNon-Core components can participate 32. Core ServicesEvent System Directories Tabular Data Users and Groups Vocabularies Entries are placeless documents 33. Core Services: Directoryvocabularyjava:/nxsqldirectorycountryidcountry.sql 34. Core ServicesEvent System Directories User Manager Bridge directories and user authentication Interfaces with the application server Global defaults 35. Core ServicesEvent System Directories User Manager Query Multiple Backends Intelligent Dispatcher Query Language: NXQL 36. Core Services: QuerySELECT * 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 ServicesAudit and Logging Comments Transformations Relations Workflow Action Manager Mime Types Scheduler 38. Layered Framework: Functional ViewWeb App RCP AppFlex App Nuxeo RuntimeHigh Level Services TransformAudit Relation Indexing... OOo JDBCJena CompassNuxeo Core ServicesStorageSchemasVersions Security... Jackrabbit 39. 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 40. Layered Framework: Workflow EJBSeam WF ClientWF Facade Doc FacadeWorkflow APIWF Doc API Nuxeo Core API WF CoreDoc CoreNuxeo Core jBPM 41. AgendaWhat 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 LayersWeb JSF, Ajax4jsf, Facelets EJB Action Listeners JBoss Seam Theming Engine: NXThemes Eclipse RCP 43. Nuxeo 5 Screenshot 44. Eclipse Screenshot 45. AgendaWhat 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 PointsNuxeo CoreBlog ModuleComment ServiceBlog Extensions Type ServiceStorage ModuleStorage Service Jackrabbit Storage 47. NXRuntime: Extension Points 48. NXRuntime: Extension Points Contributions ... 49. Services are PluggableInternal Service Provider Interfaces (SPI) Repository Backend Directory Backend Workflow Service Indexing Service Relation Service Transformation Service 50. Plug into Different PlatformsPOJO Bundles OSGi Dependencies Extension Points Generic Lookup Service Java EE Deployment JBoss GlassFish ... 51. Plug into OSGiOSGi as Basic Format JAR Meta-Information NXRuntime Extension points DefinitionContributionsSpecialized Deployment 52. Plug into Java EE: ProblemsModules 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: DeploymentDeployment Ordering Dynamic Activation Contributed XML descriptors EAR: application.xml, jboss-app.xmlWAR: web.xml, faces-config.xml, pages.xmlOther: persistence.xml, datasourcesL10n properties files Services as MBeans Lookup Service 54. AgendaWhat 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 FrameworkContribute to Extension Points Schemas, Documents Actions Event Listeners Directories XHTML UI JSF EJB Action Listeners Seam Deployment Rules 56. Using the Framework: JSF 57. Using the Framework: Action [email protected] @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. SummaryModular Framework Flexible Backends Platform Independent Easy Extensions Open Source We Welcome Your Ideas and Contributions! 59. For More Informationhttp://www.nuxeo.org/http://svn.nuxeo.org/http://lists.nuxeo.com/mailman/listinfo/ecm