SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
Empowering Magnolia for Enterprise Use Cases
Magnolia Conference, Technical Track | Basel, 16. September 2010
About us




  Sebastian Frick             Jörg von Frantzius
  Technical Project Manager   System Architect
Some facts about Aperto



  Internet agency in Berlin

  Offering Conception, Design,
  Development, Online Marketing

  Building projects with Magnolia since
  2006 for clients like Siemens,
  Bertelsmann, EADS, INSM, Frankfurt
  School and others

  Contributed frontend and concept for
  Standard Templating Kit
What we are talking about today



 Part 1: workflow specific enhancements

 Part 2: approach on dealing with user generated content
Part 1: workflow specific enhancements



  Workflows - out of box features

  Typical business requirements

  Customization examples

  Best practises / recommendations
Workflows - out of box features



  Standard 4-eyes-workflow for
  publishing process

  Sending of E-mail notifications

  Management of multiple workflows

  Time-based de-/activation

  Commenting

  Inbox for editors for managing
  workflow items
Standard 4 Eyes-Workflow



  Group „Editors“                      Group „Publishers“




           activates content                        approves content
                                                                       published




                     rejects content
Mapping Configuration in AdminCentral



  Workflows depending on paths in CMS

  Different repositories can share one
  workflow or run their own one
OpenWFE – XML definition



 XML contains

  Process-definitions

  Participants (e.g. group, role, user)

  Fields (variables)

  Conditional expressions (if, while,
   loop)

  Many more expressions or patterns
   (OpenWFE manual)
There do exist some tools, but...



  OpenWFE IDE

  DroFlo – visual editor




 Not mature or Magnolia specific enough
  – for modelling a workflow it usually
  takes good text editor with syntax
  highlighting and a developer.
Typical business requirements > workflow process



  Enhanced number of steps or states
  (e.g. 8-eyes-workflow)

  Automatic or manual selection of next
  receiver

  Non-linear pattern (e.g. one item
  assigned to different groups at the
  same time)

  Workflow engine for different scenarios
  than publishing (e.g. internal
  processes)
Manual selection of receiver
Manual selection of receiver



  activation dialog is extendible like any usual Magnolia dialog

  setted variables can be retrieved via OpenWFE-elements
Automatic selection of receiver



 Possible scenarios

  by language of content

  by section in site tree

  by role
Dynamic selection of receiver



  Make use of commands or custom functions for „outsourcing“ business logic
  to custom Java classes or external services

  1




  2
                                                          method added in
                                                            OpenWFE‘s
                                                         function-map.xml
Typical business requirements – workflow usability



  Display of current number of workflow
   items

  Display of current process status &
   participiant

  Better traceability: workflow history
For editors: lack of workflow information in standard view
Custom column providing additional workflow information
Custom column providing additional workflow information



  Sitetree-Implementation can be
  exchanged by configuration

  Adding additional columns is quite
  easy (via Java)

  Meta-information can be retrieved from
  WorkflowItem-Object
Current number of items in inbox



  Example for dynamic display of current
  workflow items via AJAX based polling

  AdminCentral frontend is extendible,
  but we‘re looking forward to new
  MagnoliaUI
Inbox view: enhancing workflow item dialog
Enhancing workflow-dialog by history tab



  History info of an workflow item can be
  build from attributes available in
  WorkflowItem-Object
Enhancing workflow-dialog by references tab



  Since content on one page can be
  located in several repositories,
  showing up references may be helpful

  relations (UUID) and activation state
  can be retrieved via Magnolia standard
  functions
Best practises / recommendations
Best practises / recommendations #1




                    Specification via state diagram
Best practises / recommendations #2



  Identify patterns and conditions

  Proof of OpenWFE-Support vs. custom implementation
www.workflowpatterns.org for evaluation and comparison
flash based animations and descriptions of patterns
Best practises / recommendations #3



  Avoid redundancies in workflow definitions whenever possible

  Make use of Java-based commands (easier to maintain)
Best practises / recommendations #4



  If groups will be used for determining workflow participants –

  don‘t add ACLs to workflow groups

  use seperate groups insteads

  define a proper naming convention
Best practises / recommendations #5



  Don‘t underestimate testing efforts

  Set up at testing plan

  Have already an idea on how to monitor single workitems before
  development phase

  Iterative development and testing

  Regulary acceptance testing, adjustments will be usually necessary
Links



  Evaluation matrix of workflow engines

  Magnolia Workflow introduction

  Home of OpenWFE
Part 2: approach on dealing with user generated content

1) 2.1. UGC: what‘s the problem?

2) 2.2. General solution + 2 implementation approaches

3) 2.3. GWT in the admin central
Client‘s UGC requirements



   (UGC = User Generated Comments, e.g. page comments)

   Client‘s website has page-commenting feature



   At peak load times, thousands of users want to post their page comments
   within a couple of minutes



   Client‘s requirement:

                            Sustained content delivery during UGC peak loads!


Basel | 10.09.2009 | Magnolia Conference | Technical Track                      34
But …


 Magnolia
 does scale
 just great!


 So,
 what‘s the
 problem?




Basel | 10.09.2009 | Magnolia Conference | Technical Track   35
The problem: UGC POST requests differ from content requests



   Content requests

    can be satisfied from cache, i.e. fast response time per request

    no bottleneck, i.e. performance scales linearly with number of servers

    network bandwidth can be maxed out, given a
           good caching hierarchy and
           sufficient hardware sizing



   Not the case with UGC POST requests…


Basel | 10.09.2009 | Magnolia Conference | Technical Track                    36
The problem: UGC POST have much larger performance impact!



   UGC POST requests

    cannot be satisfied from cache!

    because require DB insert

                requests take orders of magnitude longer,
                 meanwhile blocking your HTTP worker threads

                system can take fewer of these requests simultaneously
                 before becoming unavailable

                DB will become the bottleneck at some point

    UGC load can exceed any hardware sizing

Basel | 10.09.2009 | Magnolia Conference | Technical Track                37
Solution (system architecture)



   Website availability can only be ensured by


                            Separating content delivery from UGC processing ,

                                  through separate operating system processes



   UGC processing can run on dedicated hardware if necessary

   So it could also be shifted into the cloud




Basel | 10.09.2009 | Magnolia Conference | Technical Track                      38
Solution (system architecture): consequences



   Consequences of separation:



    Even if UGC processes fail (all threads busy):

       Magnolia processes happily continue to serve content requests



    Worst case only means: enduser will still see web page contents,

       with additional error message „page commenting currently unavailabe“



Basel | 10.09.2009 | Magnolia Conference | Technical Track                    39
Magnolia approach for page comments



    Commenting module
       (http://documentation.magnolia-cms.com/modules/commenting.html)


    In order to separate processes:
       have dedicated Magnolia instances that serve only commenting repository

    Must have multiple of these instances for scalability

    UGC is not published from author to publish servers,
       but still all publish servers must see same content:

        must set up shared JCR repository using Jackrabbit clustering
       (http://wiki.apache.org/jackrabbit/Clustering)




Basel | 10.09.2009 | Magnolia Conference | Technical Track                       40
Empowering Magnolia for Enterprise Use Cases - Experience Report
Decision Magnolia approach vs. custom solution



   Problems that we saw for us:

    Increased system complexity (setup Jackrabbit clustering, setup dedicated
       Magnolia instances with commenting repository)

    Our lack of practical experience with clustered Jackrabbit:
           How hard is it to setup?
           How does it scale, in terms of lock contention?
           How does it behave under high load?
           What long-term consequences does journaling have (performance, maintenance)

    For us: incurred complexity and risks outweigh advantages



Basel | 10.09.2009 | Magnolia Conference | Technical Track                                42
Custom architecture chosen for UGC processing



    Page comments are rendered in browser by Javascript,
       using Google Web Toolkit (GWT)

    UGC requests served by separate tomcats,
       containing only a single REST webservice

    Comments data is stored in clustered RDBMS

    Comment moderation implemented with GWT



    Proven software stack on server-side,
        we know which screws to turn for optimization


Basel | 10.09.2009 | Magnolia Conference | Technical Track   43
Basel | 10.09.2009 | Magnolia Conference | Technical Track   44
Comment moderation: UI requirements



   Comment moderation requires lots of tedious manual work,

   UI shouldn‘t make a hard job even worse



   So UI should have:

    High useability

    In particular: immediate responsiveness where possible

       (i.e. no noticeable delay between click and visual response)



Basel | 10.09.2009 | Magnolia Conference | Technical Track            45
Comment moderation in admin interface with GWT



   Solution: Google Web Toolkit (GWT)

   (Java translated to Javascript + great tooling)

    suitable for functional UIs (i.e. without pixel-grained styling)

    server roundtrips can be minimized:
           As much logic as wanted can be executed in browser
              (e.g. status message update upon selection change)
           As much state as wanted can be held in browser
              (e.g. caching of previously shown rows in a paging table)

    Economical implementation through development and debugging in Java



Basel | 10.09.2009 | Magnolia Conference | Technical Track                 46
Comment moderation demo



   Demo…

   For the technically interested:

   Use of GWT RPC, turned out to be fast and reliable,
   most of all: much easier to program than custom REST webservice

   JPA2 entities are serialized transparently through GWT RPC,
   by using net.sf.gilead

   Paging table based on org.gwtlib



   Following: the big picture…

Basel | 10.09.2009 | Magnolia Conference | Technical Track           47
Basel | 10.09.2009 | Magnolia Conference | Technical Track   48
Thank you for your interest!



 Our contacts..

 Sebastian.frick@aperto.de

 Joerg.Frantzius@aperto.de

 In the web...
  http://www.aperto.de

  http://blog.aperto.de

  http://www.twitter.com/aperto

Weitere ähnliche Inhalte

Was ist angesagt?

D22 portlet development with open source frameworks
D22 portlet development with open source frameworksD22 portlet development with open source frameworks
D22 portlet development with open source frameworksSunil Patil
 
J2EE Patterns
J2EE PatternsJ2EE Patterns
J2EE PatternsEmprovise
 
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)Carles Farré
 
Jee design patterns- Marek Strejczek - Rule Financial
Jee design patterns- Marek Strejczek - Rule FinancialJee design patterns- Marek Strejczek - Rule Financial
Jee design patterns- Marek Strejczek - Rule FinancialRule_Financial
 

Was ist angesagt? (6)

D22 portlet development with open source frameworks
D22 portlet development with open source frameworksD22 portlet development with open source frameworks
D22 portlet development with open source frameworks
 
Google Web toolkit
Google Web toolkitGoogle Web toolkit
Google Web toolkit
 
Neuro4j Workflow Overview
Neuro4j Workflow OverviewNeuro4j Workflow Overview
Neuro4j Workflow Overview
 
J2EE Patterns
J2EE PatternsJ2EE Patterns
J2EE Patterns
 
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)
 
Jee design patterns- Marek Strejczek - Rule Financial
Jee design patterns- Marek Strejczek - Rule FinancialJee design patterns- Marek Strejczek - Rule Financial
Jee design patterns- Marek Strejczek - Rule Financial
 

Ähnlich wie Empowering Magnolia for Enterprise Use Cases - Experience Report

J2EE Batch Processing
J2EE Batch ProcessingJ2EE Batch Processing
J2EE Batch ProcessingChris Adkin
 
Front-end optimisation & jQuery Internals
Front-end optimisation & jQuery InternalsFront-end optimisation & jQuery Internals
Front-end optimisation & jQuery InternalsArtur Cistov
 
What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5Vinayak Tavargeri
 
Camunda BPM 7.2: Performance and Scalability (English)
Camunda BPM 7.2: Performance and Scalability (English)Camunda BPM 7.2: Performance and Scalability (English)
Camunda BPM 7.2: Performance and Scalability (English)camunda services GmbH
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Mack Hardy
 
PERFORMANCE COMPARISON ON JAVA TECHNOLOGIES - A PRACTICAL APPROACH
PERFORMANCE COMPARISON ON JAVA TECHNOLOGIES - A PRACTICAL APPROACHPERFORMANCE COMPARISON ON JAVA TECHNOLOGIES - A PRACTICAL APPROACH
PERFORMANCE COMPARISON ON JAVA TECHNOLOGIES - A PRACTICAL APPROACHcscpconf
 
Performance comparison on java technologies a practical approach
Performance comparison on java technologies   a practical approachPerformance comparison on java technologies   a practical approach
Performance comparison on java technologies a practical approachcsandit
 
Drools & jBPM Info Sheet
Drools & jBPM Info SheetDrools & jBPM Info Sheet
Drools & jBPM Info SheetMark Proctor
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On ConcurrencyRodney Barlow
 
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...
 Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1... Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...WebStackAcademy
 
XML2Selenium Technical Presentation
XML2Selenium Technical PresentationXML2Selenium Technical Presentation
XML2Selenium Technical Presentationjazzteam
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts weili_at_slideshare
 
Banner xe cause 2013 part 1
Banner xe cause 2013 part 1Banner xe cause 2013 part 1
Banner xe cause 2013 part 1morelandsmith
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2divzi1913
 
Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...
Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...
Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...Adam Khan
 
Plugin-based IVI Architectures with Qt
Plugin-based IVI Architectures with Qt Plugin-based IVI Architectures with Qt
Plugin-based IVI Architectures with Qt ICS
 
Massaging the Pony: Message Queues and You
Massaging the Pony: Message Queues and YouMassaging the Pony: Message Queues and You
Massaging the Pony: Message Queues and YouShawn Rider
 
Webpack essentails - feb 19, 2020
Webpack essentails - feb 19, 2020Webpack essentails - feb 19, 2020
Webpack essentails - feb 19, 2020Jesse Colligan
 
Using Web Taxonomies in Drupal
Using Web Taxonomies in DrupalUsing Web Taxonomies in Drupal
Using Web Taxonomies in DrupalJoachim Neubert
 

Ähnlich wie Empowering Magnolia for Enterprise Use Cases - Experience Report (20)

J2EE Batch Processing
J2EE Batch ProcessingJ2EE Batch Processing
J2EE Batch Processing
 
Front-end optimisation & jQuery Internals
Front-end optimisation & jQuery InternalsFront-end optimisation & jQuery Internals
Front-end optimisation & jQuery Internals
 
What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5
 
Camunda BPM 7.2: Performance and Scalability (English)
Camunda BPM 7.2: Performance and Scalability (English)Camunda BPM 7.2: Performance and Scalability (English)
Camunda BPM 7.2: Performance and Scalability (English)
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
PERFORMANCE COMPARISON ON JAVA TECHNOLOGIES - A PRACTICAL APPROACH
PERFORMANCE COMPARISON ON JAVA TECHNOLOGIES - A PRACTICAL APPROACHPERFORMANCE COMPARISON ON JAVA TECHNOLOGIES - A PRACTICAL APPROACH
PERFORMANCE COMPARISON ON JAVA TECHNOLOGIES - A PRACTICAL APPROACH
 
Performance comparison on java technologies a practical approach
Performance comparison on java technologies   a practical approachPerformance comparison on java technologies   a practical approach
Performance comparison on java technologies a practical approach
 
Drools & jBPM Info Sheet
Drools & jBPM Info SheetDrools & jBPM Info Sheet
Drools & jBPM Info Sheet
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On Concurrency
 
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...
 Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1... Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 1...
 
XML2Selenium Technical Presentation
XML2Selenium Technical PresentationXML2Selenium Technical Presentation
XML2Selenium Technical Presentation
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts
 
Banner xe cause 2013 part 1
Banner xe cause 2013 part 1Banner xe cause 2013 part 1
Banner xe cause 2013 part 1
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2
 
MVC Framework
MVC FrameworkMVC Framework
MVC Framework
 
Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...
Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...
Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...
 
Plugin-based IVI Architectures with Qt
Plugin-based IVI Architectures with Qt Plugin-based IVI Architectures with Qt
Plugin-based IVI Architectures with Qt
 
Massaging the Pony: Message Queues and You
Massaging the Pony: Message Queues and YouMassaging the Pony: Message Queues and You
Massaging the Pony: Message Queues and You
 
Webpack essentails - feb 19, 2020
Webpack essentails - feb 19, 2020Webpack essentails - feb 19, 2020
Webpack essentails - feb 19, 2020
 
Using Web Taxonomies in Drupal
Using Web Taxonomies in DrupalUsing Web Taxonomies in Drupal
Using Web Taxonomies in Drupal
 

Mehr von bkraft

The Open Suite Approach: How to ride the shock waves of a changing web
The Open Suite Approach: How to ride the shock waves of a changing webThe Open Suite Approach: How to ride the shock waves of a changing web
The Open Suite Approach: How to ride the shock waves of a changing webbkraft
 
Von der statischen Website zur virtuellen Präsenz - Vortrag für Nordwestschwe...
Von der statischen Website zur virtuellen Präsenz - Vortrag für Nordwestschwe...Von der statischen Website zur virtuellen Präsenz - Vortrag für Nordwestschwe...
Von der statischen Website zur virtuellen Präsenz - Vortrag für Nordwestschwe...bkraft
 
Magnolia Conference 2013: Keynote
Magnolia Conference 2013: KeynoteMagnolia Conference 2013: Keynote
Magnolia Conference 2013: Keynotebkraft
 
Webinar slides: Orchestrate Your Digital Channels with Magnolia 5
Webinar slides: Orchestrate Your Digital Channels with Magnolia 5Webinar slides: Orchestrate Your Digital Channels with Magnolia 5
Webinar slides: Orchestrate Your Digital Channels with Magnolia 5bkraft
 
Webinar - Why Magnolia 5 Rocks For IT
Webinar - Why Magnolia 5 Rocks For ITWebinar - Why Magnolia 5 Rocks For IT
Webinar - Why Magnolia 5 Rocks For ITbkraft
 
Increase Online Sales with Magnolia CMS' Shop Module
Increase Online Sales with Magnolia CMS' Shop ModuleIncrease Online Sales with Magnolia CMS' Shop Module
Increase Online Sales with Magnolia CMS' Shop Modulebkraft
 
Virtual Presence Management at Magnolia Amplify Miami 2013
Virtual Presence Management at Magnolia Amplify Miami 2013Virtual Presence Management at Magnolia Amplify Miami 2013
Virtual Presence Management at Magnolia Amplify Miami 2013bkraft
 
High performance and scalability
High performance and scalability High performance and scalability
High performance and scalability bkraft
 
Multilingual websites, microsites and landing pages
Multilingual websites, microsites and landing pagesMultilingual websites, microsites and landing pages
Multilingual websites, microsites and landing pagesbkraft
 
Blossom on the web
Blossom on the webBlossom on the web
Blossom on the webbkraft
 
Single sourcing desktop and mobile websites
Single sourcing desktop and mobile websitesSingle sourcing desktop and mobile websites
Single sourcing desktop and mobile websitesbkraft
 
Work life balance
Work life balanceWork life balance
Work life balancebkraft
 
Magnolia and PHPCR
Magnolia and PHPCRMagnolia and PHPCR
Magnolia and PHPCRbkraft
 
Solr and Image Module Extensions of Magnolia
Solr and Image Module Extensions of MagnoliaSolr and Image Module Extensions of Magnolia
Solr and Image Module Extensions of Magnoliabkraft
 
End to end content managed online mobile banking
End to end content managed online mobile bankingEnd to end content managed online mobile banking
End to end content managed online mobile bankingbkraft
 
MBC Group - Magnolia in the Media
MBC Group - Magnolia in the MediaMBC Group - Magnolia in the Media
MBC Group - Magnolia in the Mediabkraft
 
Yet Another E-Commerce Integration: Magnolia Loves Hybris
Yet Another E-Commerce Integration: Magnolia Loves Hybris Yet Another E-Commerce Integration: Magnolia Loves Hybris
Yet Another E-Commerce Integration: Magnolia Loves Hybris bkraft
 
Bridging the Gap: Magnolia Modules and Spring Configured Software
Bridging the Gap: Magnolia Modules and Spring Configured SoftwareBridging the Gap: Magnolia Modules and Spring Configured Software
Bridging the Gap: Magnolia Modules and Spring Configured Softwarebkraft
 
User Management and SSO for Austrian Government
User Management and SSO for Austrian GovernmentUser Management and SSO for Austrian Government
User Management and SSO for Austrian Governmentbkraft
 
Enterprise Extensions to Magnolia's Imaging
Enterprise Extensions to Magnolia's ImagingEnterprise Extensions to Magnolia's Imaging
Enterprise Extensions to Magnolia's Imagingbkraft
 

Mehr von bkraft (20)

The Open Suite Approach: How to ride the shock waves of a changing web
The Open Suite Approach: How to ride the shock waves of a changing webThe Open Suite Approach: How to ride the shock waves of a changing web
The Open Suite Approach: How to ride the shock waves of a changing web
 
Von der statischen Website zur virtuellen Präsenz - Vortrag für Nordwestschwe...
Von der statischen Website zur virtuellen Präsenz - Vortrag für Nordwestschwe...Von der statischen Website zur virtuellen Präsenz - Vortrag für Nordwestschwe...
Von der statischen Website zur virtuellen Präsenz - Vortrag für Nordwestschwe...
 
Magnolia Conference 2013: Keynote
Magnolia Conference 2013: KeynoteMagnolia Conference 2013: Keynote
Magnolia Conference 2013: Keynote
 
Webinar slides: Orchestrate Your Digital Channels with Magnolia 5
Webinar slides: Orchestrate Your Digital Channels with Magnolia 5Webinar slides: Orchestrate Your Digital Channels with Magnolia 5
Webinar slides: Orchestrate Your Digital Channels with Magnolia 5
 
Webinar - Why Magnolia 5 Rocks For IT
Webinar - Why Magnolia 5 Rocks For ITWebinar - Why Magnolia 5 Rocks For IT
Webinar - Why Magnolia 5 Rocks For IT
 
Increase Online Sales with Magnolia CMS' Shop Module
Increase Online Sales with Magnolia CMS' Shop ModuleIncrease Online Sales with Magnolia CMS' Shop Module
Increase Online Sales with Magnolia CMS' Shop Module
 
Virtual Presence Management at Magnolia Amplify Miami 2013
Virtual Presence Management at Magnolia Amplify Miami 2013Virtual Presence Management at Magnolia Amplify Miami 2013
Virtual Presence Management at Magnolia Amplify Miami 2013
 
High performance and scalability
High performance and scalability High performance and scalability
High performance and scalability
 
Multilingual websites, microsites and landing pages
Multilingual websites, microsites and landing pagesMultilingual websites, microsites and landing pages
Multilingual websites, microsites and landing pages
 
Blossom on the web
Blossom on the webBlossom on the web
Blossom on the web
 
Single sourcing desktop and mobile websites
Single sourcing desktop and mobile websitesSingle sourcing desktop and mobile websites
Single sourcing desktop and mobile websites
 
Work life balance
Work life balanceWork life balance
Work life balance
 
Magnolia and PHPCR
Magnolia and PHPCRMagnolia and PHPCR
Magnolia and PHPCR
 
Solr and Image Module Extensions of Magnolia
Solr and Image Module Extensions of MagnoliaSolr and Image Module Extensions of Magnolia
Solr and Image Module Extensions of Magnolia
 
End to end content managed online mobile banking
End to end content managed online mobile bankingEnd to end content managed online mobile banking
End to end content managed online mobile banking
 
MBC Group - Magnolia in the Media
MBC Group - Magnolia in the MediaMBC Group - Magnolia in the Media
MBC Group - Magnolia in the Media
 
Yet Another E-Commerce Integration: Magnolia Loves Hybris
Yet Another E-Commerce Integration: Magnolia Loves Hybris Yet Another E-Commerce Integration: Magnolia Loves Hybris
Yet Another E-Commerce Integration: Magnolia Loves Hybris
 
Bridging the Gap: Magnolia Modules and Spring Configured Software
Bridging the Gap: Magnolia Modules and Spring Configured SoftwareBridging the Gap: Magnolia Modules and Spring Configured Software
Bridging the Gap: Magnolia Modules and Spring Configured Software
 
User Management and SSO for Austrian Government
User Management and SSO for Austrian GovernmentUser Management and SSO for Austrian Government
User Management and SSO for Austrian Government
 
Enterprise Extensions to Magnolia's Imaging
Enterprise Extensions to Magnolia's ImagingEnterprise Extensions to Magnolia's Imaging
Enterprise Extensions to Magnolia's Imaging
 

Empowering Magnolia for Enterprise Use Cases - Experience Report

  • 1. Empowering Magnolia for Enterprise Use Cases Magnolia Conference, Technical Track | Basel, 16. September 2010
  • 2. About us Sebastian Frick Jörg von Frantzius Technical Project Manager System Architect
  • 3. Some facts about Aperto  Internet agency in Berlin  Offering Conception, Design, Development, Online Marketing  Building projects with Magnolia since 2006 for clients like Siemens, Bertelsmann, EADS, INSM, Frankfurt School and others  Contributed frontend and concept for Standard Templating Kit
  • 4. What we are talking about today Part 1: workflow specific enhancements Part 2: approach on dealing with user generated content
  • 5. Part 1: workflow specific enhancements  Workflows - out of box features  Typical business requirements  Customization examples  Best practises / recommendations
  • 6. Workflows - out of box features  Standard 4-eyes-workflow for publishing process  Sending of E-mail notifications  Management of multiple workflows  Time-based de-/activation  Commenting  Inbox for editors for managing workflow items
  • 7. Standard 4 Eyes-Workflow Group „Editors“ Group „Publishers“ activates content approves content published rejects content
  • 8. Mapping Configuration in AdminCentral  Workflows depending on paths in CMS  Different repositories can share one workflow or run their own one
  • 9. OpenWFE – XML definition XML contains  Process-definitions  Participants (e.g. group, role, user)  Fields (variables)  Conditional expressions (if, while, loop)  Many more expressions or patterns (OpenWFE manual)
  • 10. There do exist some tools, but...  OpenWFE IDE  DroFlo – visual editor Not mature or Magnolia specific enough – for modelling a workflow it usually takes good text editor with syntax highlighting and a developer.
  • 11. Typical business requirements > workflow process  Enhanced number of steps or states (e.g. 8-eyes-workflow)  Automatic or manual selection of next receiver  Non-linear pattern (e.g. one item assigned to different groups at the same time)  Workflow engine for different scenarios than publishing (e.g. internal processes)
  • 13. Manual selection of receiver  activation dialog is extendible like any usual Magnolia dialog  setted variables can be retrieved via OpenWFE-elements
  • 14. Automatic selection of receiver Possible scenarios  by language of content  by section in site tree  by role
  • 15. Dynamic selection of receiver  Make use of commands or custom functions for „outsourcing“ business logic to custom Java classes or external services 1 2 method added in OpenWFE‘s function-map.xml
  • 16. Typical business requirements – workflow usability  Display of current number of workflow items  Display of current process status & participiant  Better traceability: workflow history
  • 17. For editors: lack of workflow information in standard view
  • 18. Custom column providing additional workflow information
  • 19. Custom column providing additional workflow information  Sitetree-Implementation can be exchanged by configuration  Adding additional columns is quite easy (via Java)  Meta-information can be retrieved from WorkflowItem-Object
  • 20. Current number of items in inbox  Example for dynamic display of current workflow items via AJAX based polling  AdminCentral frontend is extendible, but we‘re looking forward to new MagnoliaUI
  • 21. Inbox view: enhancing workflow item dialog
  • 22. Enhancing workflow-dialog by history tab  History info of an workflow item can be build from attributes available in WorkflowItem-Object
  • 23. Enhancing workflow-dialog by references tab  Since content on one page can be located in several repositories, showing up references may be helpful  relations (UUID) and activation state can be retrieved via Magnolia standard functions
  • 24. Best practises / recommendations
  • 25. Best practises / recommendations #1 Specification via state diagram
  • 26. Best practises / recommendations #2  Identify patterns and conditions  Proof of OpenWFE-Support vs. custom implementation
  • 28. flash based animations and descriptions of patterns
  • 29. Best practises / recommendations #3  Avoid redundancies in workflow definitions whenever possible  Make use of Java-based commands (easier to maintain)
  • 30. Best practises / recommendations #4  If groups will be used for determining workflow participants – don‘t add ACLs to workflow groups  use seperate groups insteads  define a proper naming convention
  • 31. Best practises / recommendations #5  Don‘t underestimate testing efforts  Set up at testing plan  Have already an idea on how to monitor single workitems before development phase  Iterative development and testing  Regulary acceptance testing, adjustments will be usually necessary
  • 32. Links  Evaluation matrix of workflow engines  Magnolia Workflow introduction  Home of OpenWFE
  • 33. Part 2: approach on dealing with user generated content 1) 2.1. UGC: what‘s the problem? 2) 2.2. General solution + 2 implementation approaches 3) 2.3. GWT in the admin central
  • 34. Client‘s UGC requirements (UGC = User Generated Comments, e.g. page comments) Client‘s website has page-commenting feature At peak load times, thousands of users want to post their page comments within a couple of minutes Client‘s requirement: Sustained content delivery during UGC peak loads! Basel | 10.09.2009 | Magnolia Conference | Technical Track 34
  • 35. But … Magnolia does scale just great! So, what‘s the problem? Basel | 10.09.2009 | Magnolia Conference | Technical Track 35
  • 36. The problem: UGC POST requests differ from content requests Content requests  can be satisfied from cache, i.e. fast response time per request  no bottleneck, i.e. performance scales linearly with number of servers  network bandwidth can be maxed out, given a  good caching hierarchy and  sufficient hardware sizing Not the case with UGC POST requests… Basel | 10.09.2009 | Magnolia Conference | Technical Track 36
  • 37. The problem: UGC POST have much larger performance impact! UGC POST requests  cannot be satisfied from cache!  because require DB insert  requests take orders of magnitude longer, meanwhile blocking your HTTP worker threads  system can take fewer of these requests simultaneously before becoming unavailable  DB will become the bottleneck at some point  UGC load can exceed any hardware sizing Basel | 10.09.2009 | Magnolia Conference | Technical Track 37
  • 38. Solution (system architecture) Website availability can only be ensured by Separating content delivery from UGC processing , through separate operating system processes UGC processing can run on dedicated hardware if necessary So it could also be shifted into the cloud Basel | 10.09.2009 | Magnolia Conference | Technical Track 38
  • 39. Solution (system architecture): consequences Consequences of separation:  Even if UGC processes fail (all threads busy): Magnolia processes happily continue to serve content requests  Worst case only means: enduser will still see web page contents, with additional error message „page commenting currently unavailabe“ Basel | 10.09.2009 | Magnolia Conference | Technical Track 39
  • 40. Magnolia approach for page comments  Commenting module (http://documentation.magnolia-cms.com/modules/commenting.html)  In order to separate processes: have dedicated Magnolia instances that serve only commenting repository  Must have multiple of these instances for scalability  UGC is not published from author to publish servers, but still all publish servers must see same content:  must set up shared JCR repository using Jackrabbit clustering (http://wiki.apache.org/jackrabbit/Clustering) Basel | 10.09.2009 | Magnolia Conference | Technical Track 40
  • 42. Decision Magnolia approach vs. custom solution Problems that we saw for us:  Increased system complexity (setup Jackrabbit clustering, setup dedicated Magnolia instances with commenting repository)  Our lack of practical experience with clustered Jackrabbit:  How hard is it to setup?  How does it scale, in terms of lock contention?  How does it behave under high load?  What long-term consequences does journaling have (performance, maintenance)  For us: incurred complexity and risks outweigh advantages Basel | 10.09.2009 | Magnolia Conference | Technical Track 42
  • 43. Custom architecture chosen for UGC processing  Page comments are rendered in browser by Javascript, using Google Web Toolkit (GWT)  UGC requests served by separate tomcats, containing only a single REST webservice  Comments data is stored in clustered RDBMS  Comment moderation implemented with GWT  Proven software stack on server-side, we know which screws to turn for optimization Basel | 10.09.2009 | Magnolia Conference | Technical Track 43
  • 44. Basel | 10.09.2009 | Magnolia Conference | Technical Track 44
  • 45. Comment moderation: UI requirements Comment moderation requires lots of tedious manual work, UI shouldn‘t make a hard job even worse So UI should have:  High useability  In particular: immediate responsiveness where possible (i.e. no noticeable delay between click and visual response) Basel | 10.09.2009 | Magnolia Conference | Technical Track 45
  • 46. Comment moderation in admin interface with GWT Solution: Google Web Toolkit (GWT) (Java translated to Javascript + great tooling)  suitable for functional UIs (i.e. without pixel-grained styling)  server roundtrips can be minimized:  As much logic as wanted can be executed in browser (e.g. status message update upon selection change)  As much state as wanted can be held in browser (e.g. caching of previously shown rows in a paging table)  Economical implementation through development and debugging in Java Basel | 10.09.2009 | Magnolia Conference | Technical Track 46
  • 47. Comment moderation demo Demo… For the technically interested: Use of GWT RPC, turned out to be fast and reliable, most of all: much easier to program than custom REST webservice JPA2 entities are serialized transparently through GWT RPC, by using net.sf.gilead Paging table based on org.gwtlib Following: the big picture… Basel | 10.09.2009 | Magnolia Conference | Technical Track 47
  • 48. Basel | 10.09.2009 | Magnolia Conference | Technical Track 48
  • 49. Thank you for your interest! Our contacts.. Sebastian.frick@aperto.de Joerg.Frantzius@aperto.de In the web...  http://www.aperto.de  http://blog.aperto.de  http://www.twitter.com/aperto