By Damien Metzler, Leroy Merlin. - For several years, portal applications have been trying to resolve all the integration problematics of the enterprise: top-down communication, collaboration, dashboards, etc. In the J2EE world, the JSR-168 (portlets) has tried to formalize what a portal should be, but it failed to give enterprise architects agility and loose coupling between application. Today, Web 2.0 has leverage the concept of mashup website with the two leaders : NetVibes an iGoogle. On the other hand, social applications like Facebook or Linked In are gaining more and more success. This lead us think that it could be an original approach to build a full enterprise content based open social portal. We will show how Web Engine gave us the ability to control all the Web 2.0 we needed, and how we integrated it with the Shindig Open Social server for the gadget Rendering part.
7. Enterprise portal
Store content
News, Pictures
Collaborative features
Schedule
Mail
Todos
Drag’n’Drop interface like iGoogle
Social relationships (not hierarchical)
Social features (activity, shared data)
14. Base document types
3 base doc types 3 utility doc types
Univers Thème
Model
Page Layout
Gadget GadgetDef
15. Base document types
3 base doc types 3 utility doc types
Univers Thème
Model
Page Layout
Gadget GadgetDef
16. Base document types
3 base doc types 3 utility doc types
Univers Thème
Model
Page Layout
Gadget GadgetDef
17. Base document types
3 base doc types 3 utility doc types
Univers Thème
Model
Page Layout
Gadget GadgetDef
18. Base document types
3 base doc types 3 utility doc types
Univers Thème
Model
Page Layout
Portal
Gadget relations GadgetDef
19. WebEngine for the UI
Fast UI development
Easy WEB 2.0 with jQuery
Fast Proof of Concept
20. Jetty
Jetty
Jetty
Jetty
Nuxeo Web
Portal CMS Blog Wiki
Engine
JCR
Nuxeo EP LDAP
PgSQL
CAS
Jboss (JMX) en
Jboss (JMX) en
cluster
Jboss (JMX)
cluster
21. Jetty
Jetty
Jetty
Jetty
Nuxeo Web
Portal CMS Blog Wiki
Engine
JCR
Nuxeo EP LDAP
PgSQL
CAS
Jboss (JMX) en
Jboss (JMX) en
cluster
Jboss (JMX)
cluster
22. Gadget (HTML + JS)
Jetty
Jetty
Jetty
Jetty
Nuxeo Web
Portal CMS Blog Wiki
Engine
JCR
Nuxeo EP LDAP
PgSQL
CAS
Jboss (JMX) en
Jboss (JMX) en
cluster
Jboss (JMX)
cluster
23. Gadget (HTML + JS)
Jetty
Jetty
Jetty
Jetty
Nuxeo Web
Portal CMS Blog Wiki
Engine
OpenSocial
JCR
Nuxeo EP LDAP
PgSQL
CAS
Cache
Gadget Rendering Jboss (JMX) en
Jboss (JMX) en
cluster
Jboss (JMX)
cluster
24. Gadget (HTML + JS)
Jetty
Jetty
Jetty
Jetty
Nuxeo Web
Portal CMS Blog Wiki
Engine
OpenSocial
JCR
Nuxeo EP LDAP
PgSQL
CAS
Cache
Gadget Rendering Jboss (JMX) en
Jboss (JMX) en
cluster
Jboss (JMX)
cluster
25. To LM IT system
From LM IT system
3 - WS or RSS call
2 -Gadget rendering
Gadget (HTML + JS)
4 - WS or RSS call
Jetty
Jetty
Jetty
Jetty
1 - Gadget asking Nuxeo Web
Portal CMS Blog Wiki
Engine
OpenSocial
JCR
Gadget definition
storage
Nuxeo EP LDAP
PgSQL
CAS
Cache
Gadget Rendering Jboss (JMX) en
Jboss (JMX) en
cluster
Jboss (JMX)
cluster
26. To LM IT system Persistence layer
From LM IT system Business layer
OpenSocial layer
Communication layer
3 - WS or RSS call
2 -Gadget rendering
Gadget (HTML + JS)
4 - WS or RSS call
Jetty
Jetty
Jetty
Jetty
1 - Gadget asking Nuxeo Web
Portal CMS Blog Wiki
Engine
OpenSocial
JCR
Gadget definition
storage
Nuxeo EP LDAP
PgSQL
CAS
Cache
Gadget Rendering Jboss (JMX) en
Jboss (JMX) en
cluster
Jboss (JMX)
cluster
28. Gadget Rendering Part
A gadget definition is an XML doc specifying code + UI
An OpenSocial Server has a servlet that does the
rendering part
29. Gadget Rendering Part
A gadget definition is an XML doc specifying code + UI
An OpenSocial Server has a servlet that does the
rendering part
Header
30. Gadget Rendering Part
A gadget definition is an XML doc specifying code + UI
An OpenSocial Server has a servlet that does the
rendering part
Header
JS Code
31. Gadget Rendering Part
A gadget definition is an XML doc specifying code + UI
An OpenSocial Server has a servlet that does the
rendering part
Header
UI JS Code
33. Social API Part
JS API
Features
Profile info
Adding and removing Friends
Adding and removing apps
Storing activities
Retrieving activity streams for self and friends
Storing and retrieving per-app and per-app-per-user
data
34. Social API: what for?
Personal informations
Which store does the VIEWER belongs to?
Who are my friends?
Activities
I just passed a 6K€ kitchen order!
Per-app-per-user data
... lots of possible use!
35. Shindig: an open source project
Implements gadgets and opensocial specs
Gadget Part:
‣ XML to HTML servlet
‣JS servlet
‣Metadata
‣RPC
OpenSocial Part:
‣ JS Container
‣ Data Server
36. What’s done now ?
Portal engine
Many sites
News and PictureBook
OpenSocial
Gadget container
Save preferences in Nuxeo doc repository
RSS & Business Gadget (Daily sales)
37. What’s the future ?
PortalEngine
better rights management
publishing/versionning management
Collaborative schedule
JAX-RS migration & NXTheme integration
OpenSocial
Implement an OpenSocial SPI
API extension to make “content-aware” gadgets
Use RPC & Publish/Subscribe to leverage a web component
model
38. What’s the future ?
PortalEngine
better rights management
y :-)
publishing/versionning management re ad
n it’s
Collaborative schedule
w he
PL
JAX-RS migration & NXTheme integration
e LG
OpenSocial
e as
elan OpenSocial SPI
R
Implement
API extension to make “content-aware” gadgets
Use RPC & Publish/Subscribe to leverage a web component
model