Download - Nuxeo World Session: Migrating to Nuxeo
Florent Guillaume — 18 nov 2010
Migrating to NuxeoPlanning, practice, customization
and architectural changes
Agenda
2
• Planning structural changes
• Exporting data from the legacy system
• Importing data into Nuxeo
• Connecting Nuxeo to existing data sources
• Integrating with third-party applications
• Customizing logic and UI
• Sample use case
Planning Structural Changes
3
Filing Hierarchy
• Folders and files
• Visible tree or access through search
• Simple hierarchy or proxy-based multi-filing
4
Folder(root)
Folderfoo
Folderbar
Folderblah
Folderstuff
Foldergee
Doc123
Doc456
Doc789
Doc001
Document Types
• Identify common metadata
• Additional attachements
• Minimize the number of types
• “Nature” field can distinguish similar types
5
Security Policies
• Users, groups
• Inheritance / blocking based on hierarchy
• Metadata-based security policies
• Make sure that searches are efficient
• Be able to implement the read policy in NXQL
• If necessary precompute some fields
6
Life Cycles
• Model workflow states
• Identify allowed transitions between states
7
Draft
Approved
Archived
Relationships
• Depends On / Is Part Of / Supersedes / ...
• Can hold metadata as well
• Dates
• Users
• Comments
• ...
8
Nuxeo Studio
• Document Types
• Life Cycles
• Permission Definition
• Vocabularies
9
Exporting Data from the Legacy System
10
Exporting Data from the Legacy System
• Depends on the legacy system
• Any format is acceptable
• But needs a deterministic way to re-read the data
• Files
• Metadata
• XML, CSV, .properties
11
Keep Third-PartyData Sources
• Nuxeo will connect to them
12
Importing Data into Nuxeo
13
Importing
14
Manual Import
15
• Drag & Drop
• Several plugins available
• For small sets of files
• Slow
• Single-threaded
• Big overhead
• No nice transactional behavior
HTTP-Based Import
16
• Filesystem-like import
• Windows SharePoint Services (WSS)
• WebDAV
• With rich metadata
• CMIS
• Java, Python, PHP, ...
• Ad-hoc REST APIs
Importer module
• nuxeo-‐platform-‐importer• bulk
• transactions
• multi-threaded
• pluggable
• filesystem reader (files, CSV, XML, .properties)
• document model factory
• Java or JAX-RS
17
SQL-Level Import
• Documents: Nuxeo VCS tables
• Hierarchy
• One table per schema
• Multi-valued and complex properties
• Files
• ACLs
• Audit tables
• Directory tables 18
Connecting Nuxeo to Existing Data Sources
19
Nuxeo Authentication
• Based on JAAS
• Authentication filter for web access
• Login Module
• Pluggable to get user’s identity
• Basic Authentication, HTTP Form
• SSO (Trust portal, NTLM, CAS, Shibboleth, ClearTrust)
• Pluggable to validate user credentials
• Validate against directory or trust SSO20
Nuxeo Users and Groups
21
• Nuxeo Directory abstraction
• LDAP / Microsoft Active Directory
• SQL tables
• Multi-Directories
• Custom Directory connector
Reference Data
22
• Nuxeo Directories, Vocabularies
• Direct use of an existing SQL table
• New SQL view if some adaptations are needed
• Nightly export to a Nuxeo-specific table
• Directory connector to acces data served by a Web Service (get + search)
• Direct JDBC / JPA access
Back-Office Applications
• Always project-specific
• Write connectors
• SOAP, REST, HTTP, TCP, Filesystem, ...
• Use Directory API when it makes sense
23
Integrating withThird-Party Applications
24
Push to Other Systems
25
• Send data to other systems
• Event Listeners
• Synchronous, asynchronous or post-commit
• May be scheduled
Pull by Other Systems
26
• REST
• Nuxeo Operations
• CMIS
• JAX-RS (WebEngine)
• SOAP
• CMIS
• EJB + Annotations
Bridge to Other Systems
• JMS event bridge
• ESB
27
Example Third-Party Applications
• External indexers
• Exalead, Sinequa, Antidot, Arisem
• Portal
• Nuxeo as a storage engine
• CRM
• ERP
• SAP, Siebel28
Customizing Logic and UI
29
Nuxeo Themes
• Styles and CSS
• Page layout
• Perspectives
• Negotiation
• WYSIWYG editor
• Available for:
• WebApp (JSF)
• WebEngine (FreeMarker)30
Actions
• Content Automation
• Tabs, sub-tabs
• Buttons
• Links
• Have them depend on:
• types, facets, rights, sections
• arbitrary conditions31
Flexible UI Building Blocks
• Nuxeo Themes
• Layouts
• Forms, Widgets
• Content Views
• Page Providers
• Smart Search
32
Nuxeo Studio
• Application Branding
• Views / Forms
• Content Automation Chains
• UI Button / Event Reactor
• Search Form
• Content Templates
• Virtual Navigation33
Sample Use Case(based on a true story)
34
Legacy Architecture
35
Legacy Architecture
36
• Problems and limitations• Custom WebApp is hard to maintain
• “fork” from the original web top
• direct access to external data providers
• Publishing is slow• XML export
• Data is duplicated
• Performances are very bad• all security checks and profiling are done by the portal
• can not support more than 50,000 documents
Nuxeo Architecture
37
Nuxeo Architecture
• Far less specific code
• easier maintenance
• end to end POC worked in a few days (legacy implementation took months to work)
• No data duplication
• Uniform security model
• No performance issue
• validated for 3,000,000 documents on single server38