5. Platform & API
A good API is now more important than ever.
A good API is now more important than ever.
●
SaaS model requires API
●
●
Web frameworks rely on REST API
●
●
This is the main entry point for nuxeo.io
Html 5, Mobile Apps, Portals
SOA and loose coupling
●
WebServices, ESB, Auth
5
6. What is a good API?
●
API you can quickly understand
●
●
●
REST is a nice pattern
REST is a good fit for Nuxeo use cases
Consistency
●
●
Provide a consistent experience for the developers
Adapted to the real world
●
Provide concepts that match with current tools
●
Handle the complex use cases too
6
7. API and Nuxeo: Java API
Nuxeo Service A
Nuxeo Component
Plugin
Plugin
Plugin
Nuxeo Service B
Nuxeo Component
Plugin
Plugin
Plugin
Nuxeo Service C
Nuxeo Component
Plugin
Plugin
Plugin
Nuxeo Service D
Nuxeo Component
Plugin
Plugin
Plugin
7
8. API and Nuxeo: Operations
Operation A1
Operation A2
Operation ...
Operation B1
http
JAX-RS
Publisher
WebEngine
JAX-RS
(jersey)
Operation ...
Operation C1
Operation ...
Operation D1
Operation ...
Nuxeo Service A
Nuxeo Component
Plugin
Plugin
Plugin
Nuxeo Service B
Nuxeo Component
Plugin
Plugin
Plugin
Nuxeo Service C
Nuxeo Component
Plugin
Plugin
Plugin
Nuxeo Service D
Nuxeo Component
Plugin
Plugin
Plugin
8
9. API and Nuxeo: Chains
Chain 1
Chain 2
http
JAX-RS
Publisher
WebEngine
JAX-RS
(jersey)
Chain ...
Operation A1
Operation A2
Operation ...
Operation B1
Operation ...
Operation C1
Operation ...
Operation D1
Operation ...
Nuxeo Service A
Nuxeo Component
Plugin
Plugin
Plugin
Nuxeo Service B
Nuxeo Component
Plugin
Plugin
Plugin
Nuxeo Service C
Nuxeo Component
Plugin
Plugin
Plugin
Nuxeo Service D
Nuxeo Component
Plugin
Plugin
Plugin
9
10. API and Nuxeo: Operations and Chains
●
Command API
●
●
●
Easy to do RPC
Easy to integrate applications together
But not easy to use with client side MVC
●
Resource should be the document and not the operation
10
11. API and Nuxeo: Resources
Chain 1
Chain 2
Chain ...
Operation A1
Operation A2
Operation ...
Operation B1
Operation ...
Operation C1
Operation ...
http
Operation D1
JAX-RS
Publisher
Document
WebEngine
Task
JAX-RS
(jersey)
User
Workflow
Workflow
Directory
Operation ...
Nuxeo Service A
Nuxeo Component
Plugin
Plugin
Plugin
Nuxeo Service B
Nuxeo Component
Plugin
Plugin
Plugin
Nuxeo Service C
Nuxeo Component
Plugin
Plugin
Plugin
Nuxeo Service D
Nuxeo Component
Plugin
Plugin
Plugin
11
12. Automation new Endpoints
●
Expose new REST Endpoints
●
●
●
Documents, Directories, Users, Tasks, Workflows
exposed as REST resources
Pure GET / POST / PUT / DELETE bindings
Use Fragment model to expose all data in one call
●
Ensure efficiency in data retrieval :
ex : Document + links + Comments + tasks
●
●
Enable pluggability
Provide bridge with Command API
●
Reuse existing and custom Operations
12
14. Automation Infrastructure
Fixing all known limitations of Command API
Fixing all known limitations of Command API
●
Marshalling improvements
–
–
●
simpler management of complex properties
allow for custom JSON marshalling / business objects
Extend Blob management
–
–
●
separate upload requests from processing requests
use Blobs as properties
Make API more consistent
–
Operation and Chain become the same
–
Parameters vs Context resolution
–
Paginable objects
14
15. Automation Infrastructure
Adapt infrastructure to complex and nested chains
Adapt infrastructure to complex and nested chains
●
Batch management and long running transactions
–
–
●
dedicated operations
new base classes for listeners or operations
Exception management
–
●
apply try/catch model to chains
Debugging
–
–
●
Throw clean Exception
Track operations and chain execution
Scripted Operations
–
Enable usage of restricted scripting
15
17. Interoperability
●
CMIS
●
●
Continue keeping the stack up to date
CXF
●
●
●
Migrated JAX-WS stack on the server side
Integrate JAX-RS REST client in Automation
OAuth2 integration
●
●
Make Nuxeo an OAuth2 Service Provider
●
●
OpenID integration
Integrate inside Automation Client
Mule ESB
●
Provide a Nuxeo Automation Connector
17
19. Nuxeo Application Factory
●
Configuring the Platform :
Nuxeo Studio
for business users
●
Extending the Platform :
Nuxeo IDE & SDK
for Java developers
●
Building Web Apps :
Nuxeo AngularJS SDK
for Web developers
●
Building Mobile Apps :
Nuxeo Mobile SDK
for Android and iOS
developers
19
20. Configuring the Platform : Nuxeo Studio
More friendly with project lifecycle constraints
More friendly with project lifecycle constraints
●
Multi-users
–
–
–
●
Collaboration mode
Chat
Versioning and
branch management
Multi-Projects
–
–
Application templates
Dependency management
20
21. Configuring the Platform : Nuxeo Studio
Expose even more features to Studio configuration
Expose even more features to Studio configuration
●
Update Platform infrastructure to ensure configurability
–
–
●
More widgets, more layouts, more actions
Make all screens configurable
More workflow features
–
●
Sub workflow management
Studio Event Handlers
–
Give access to all Listener and Worker settings
–
Long running transaction management from within Studio
21
22. Extending the Platform : Java Dev
Continue lower learning curve
Continue lower learning curve
Shorten dev // test cycle
Shorten dev test cycle
Ensure compatibility with API and build system
Ensure compatibility with API and build system
Nuxeo Runtime : learn from Eclipse Apricot and OSGi
●
Migrate deployment-fragments
–
●
Provide one single deployment model
–
●
plain extension points + War resources
IDE vs Studio vs Standard
Hot-reload via component stop/start
–
use Runtime to manage dependency graph
22
23. Extending the Platform : Java Dev
Nuxeo Web Layer
●
Inject Nuxeo Services in View Controllers
–
Makes framework more consistent
–
Allows to track dependencies
Nuxeo IDE
●
Extend Nuxeo IDE Eclipse Plugin
–
Helpers : XML contribution helper, …
–
Studio integration :
–
Publish widget types, templates in Studio registries
● Allow sharing of registries among several IDE projects
QA : incremental « on the fly » testing
●
●
Continue to maintain IntelliJ plugin (we use it !)
Nuxeo Build
●
Migrate build to Maven 3
23
24. Build on the Platform : Web Developers
Lightweight development model
Lightweight development model
Target model
●
Define object model and business process via Studio
●
Nuxeo default UI for backoffice and management
●
Build custom web app using HTML5, JS and REST API
Tooling
●
AngularJS SDK
–
–
●
Automation Service bindings, Widget and Action directives
Yeoman coding workflow, Bower component packaging
Lightweight dev env, possibly side by side with Studio
–
–
●
Online IDE
Quick deployment model (like Studio Plugins)
Scripted sandboxed Operations
24
25. Build on the Platform : Mobile Dev
Target model
●
Define object model and business process via Studio
●
Nuxeo default UI for backoffice and management
●
Build custom mobile app on top of Nuxeo API
Tooling
●
Android and iOS SDK
–
–
UI building blocks and Layout binding
–
●
Automation Connector/ Sync with Offline support
Sample app
WebMobile SDK (based on Apache Cordova)
–
–
●
Align with AngularJS deployment model
Cordova plugin for iOS and Android connectors
Bridge Nuxeo Server with Push Platforms
25
26. Build on the Platform : Mobile Dev
iOS App
Mobile WebApp
Android App
Objective C
Html / JS
Java
Nuxeo iOS UI
Apache Cordova
Nuxeo Android UI
Automation
Connector
Offline Cache
Local store and Deferred update
Sync service
iOS
Automation
Connector
Android
Nuxeo
26
29. Cluster Environment
Simplify and automate management of cluster environment
Simplify and automate management of cluster environment
●
Redis integration
–
–
Distributed event bus / invalidations
–
●
Distributed locking
Persistent and distributed Jobs/Works
Cluster Aware NuxeoCtl
–
Leverage Redis pubsub
–
Cluster deployment channel
29
30. Monitoring
Provide monitoring « off the shelf »
Provide monitoring « off the shelf »
●
Metrics + Graphite integration
–
–
●
Expose metrics on Nuxeo internals
Generate dashboards
Package monitoring solution
–
–
●
Reference setup
Online monitoring package
LogStash + Kibana
–
Collect and index logs
30
31. AWS and Nuxeo
Provide infrastructure for nuxeo.io
Provide infrastructure for nuxeo.io
●
Provide AMIs and reference architecture
–
●
Integrate with AWS tooling
–
●
ELB, CloudWatch, AutoScaling groups
Provisioning and management tools
–
●
Sizing, networking, security
Coupled with NuxeoCtl cluster tools
nuxeo.io provisioning portal
31
32. SuperSize my Repository
Open the door to « Big Content »
Open the door to « Big Content »
Multiple clients on the same big repository
Multiple clients on the same big repository
●
Data segregation
–
●
Cloud Storage
–
●
Quota and Multi-Tenant addons
Async Binary Manager for S3 (and similar providers)
Scaling
–
EhCache based VCS Cache manager
–
Distributed download manager
–
VCS de-normalization
–
NoSQL store + ElasticSearch index
32
34. Nuxeo Backoffice Web App
Extend and improve what we have
Extend and improve what we have
Ensure upward compatibility and smooth migration
Ensure upward compatibility and smooth migration
●
Improve infrastructure
–
Fix multi-tabs browsing
●
●
●
ViewState management
Automatic conversation management
Concurrency
–
–
●
Provide injection of NXRuntime Services
Lower controller scopes
Improve UI safety
–
Safe edit / Localstorage
–
Double click protection
34
35. Widget, Layout, ContentView
Make DAM/DM UI fully configurable in Studio
Make DAM/DM UI fully configurable in Studio
●
Extend Actions and Widgets system
–
–
●
Incremental Layout contributions
Automatically render actions according to type
Hybrid JS widgets
–
●
Select2 integration via JS and Automation
Continue work on ContentViews
–
–
●
Prev / Next navigation
Bulk operations
New Theme Manager
–
Use Layout system for page layout
35
36. Html5 / Javascript Web Apps
Build Html5 // JS Web Applications easily on top of Nuxeo API
Build Html5 JS Web Applications easily on top of Nuxeo API
●
HTML / JS App Factory
–
–
Packaging model
–
●
Online « Studio like » IDE
Deployment channel
AngularJS SDK
–
–
Nuxeo Directives : accessing Layout, Widgets, Actions
–
●
Nuxeo Angular Services : wrapping Automation client
Sample / Demo WebApp
Theme Manager
–
Integrate standard CSS frameworks
–
Responsive design
36
37. Global Timeline
●
Nuxeo 5.8 – 28th October
●
Automation
–
Automation API improvements
–
New REST API and nuxeo.js client as addon (beta)
●
Workflow delegation and escalation
●
Infrastructure
–
–
Metrics + Graphite integration
–
●
Redis integration and new Work Manager
EhCache integration
UI
–
Seam / JSF improvements
–
Select2 integration
–
SafeEdit
–
AngularJS demo App
37
38. Global Timeline
●
Nuxeo 5.9.1 - December 2013
●
Nuxeo 5.9.4 -
●
●
●
●
full REST API & clients
iOS connector
●
Nuxeo 5.9.2 -
End January 2014
●
●
REST API GA & clients
●
●
●
●
AngularJS SDK & samples
Studio Templates
Nuxeo 5.9.3 -
NoSQL DataStore
Bulk edit / Collection
management
Html / JS IDE
Nuxeo 5.9.5 –
End Jun 2014
●
March 2014
nuxeo.io service (beta)
●
new Mobile SDK & sample
●
Drive + LiveEdit
Studio branching
Nuxeo 5.9.6 –
●
Nuxeo Runtime changes
●
Theme manager
●
●
●
May 2014
●
Social / DM merge
Nuxeo 5.9.7 –
●
Mid August 2014
Octobre 2014
Nuxeo new UI
38