SlideShare une entreprise Scribd logo
1  sur  37
Magnolia 5.0
     Architecture




            local louisville/Reflecting Pool at Pulitzer/Flickr
Web Browser                AdminCentral
                Web pages,                       Vaadin (GWT)                                CMIS                JCR
                Images, ..                                                                    App                App




                             HTTP                             AJAX/JSON                             REST/Atom




                                                                                     Web Services
                 Rendering Engine                    Vaadin
                                                                                       (CMIS)




                    Templates                                                               Content
                                                     UI Model
                                                                                             Model




              JCR
                                                                                  Node
                        Security           ...                  ...                                     Mixins
                                                                                  Types




2
                                    Magnolia is a registered trademark used by permission
Version 1.0
WebServices (CMIS)
• will use the CMIS API
  • Content Management Interoperability Services
  • standardized
  • fits JCR specification
• REST
  • uses Atom format
• open source implementation exists
  • Apache Chemistry (OpenCMIS)




3
                   Magnolia is a registered trademark used by permission
Version 1.0
IoC/DI (Dependency Injection)
• we gradually introduce IoC
  • for components
  • for the new UI
• we use PicoContainer
  • constructor injection




4
                    Magnolia is a registered trademark used by permission
Version 1.0
Vaadin




5
              Magnolia is a registered trademark used by permission
Version 1.0
Vaadin
• Rich widget framework
• Out-of-the-box theming
• Java developer friendly
  • Close to Swing
  • GWT based (Java -> Javascript)
  • Can integrate any GWT-components
• Rare GWT-compiles (compared to plain GWT)
• Testing with pure JUnit
• Apache License
• Well documented


6
                   Magnolia is a registered trademark used by permission
Version 1.0
UI - Architecture



7
                  Magnolia is a registered trademark used by permission
Version 1.0
Model
                      View

      MVP
          Presenter




               UI - Architecture



  7
                             Magnolia is a registered trademark used by permission
 Version 1.0
Model
                        View

      MVP
           Presenter




                UI - Architecture
           Activities



          GWT
Places
                           Editors




  7
                                     Magnolia is a registered trademark used by permission
  Version 1.0
Model
                        View

      MVP
           Presenter




                UI - Architecture
           Activities
                                                                                       guice

          GWT                                                                                IoC
                                                                                                   pico

Places
                           Editors




  7
                                     Magnolia is a registered trademark used by permission
  Version 1.0
GWT concepts as a blueprint
                  promoter of MVP                    GWT promoted to use the MVP for a
                                                     while.
                   widget oriented                   GWT applications are widget
                                                     oriented. Vaadin too.
              real web applications                  proper history support, separation
                                                     of browser dependent code
                       ready made                    the fundamental framework is
                                                     provided since GWT 2.1




8
                        Magnolia is a registered trademark used by permission
Version 1.0
T.Young/MVP/Flickr
What?
  T.Young/MVP/Flickr
Model - View - Presenter (MVP)


                                  updates the widgets                                  provides the data to
                                 and handles UI events                                the view and interacts
                                    like click events                                   with the application




                                                View                         Presenter



                the view has not
              binding to the model


                                                                 Model                EventBus




10
                                       Magnolia is a registered trademark used by permission
Version 1.0
MVP - Example
                                        TreeView                                                  TreePresenter
                               selectItem(path)                      notifies
                                                                                           onItemSelected(path)
                               expand(path)
                               refresh()




                                                                                                      TreeActivity
              Vaadin specific
                                                            updates
              implementation                                                               start()
                                                                                           onStop()



                                     TreeViewImpl




11
                                   Magnolia is a registered trademark used by permission
Version 1.0
Main Participants
•     Place - Application Navigation
•     Activitiy - The Presenter
•     View - the UI widgets
•     ViewPort - UI region
•     EventBus - Application Events




12
                         Magnolia is a registered trademark used by permission
Version 1.0
Places - Navigation
• the state representing the UI location
  • what is showed (inbox, detail view)
• used for the application navigation
  • PlaceController.goTo(place)
• mapped to activities
  • ActivityMapper.getActivity(place)
• bound to the browser history
  • by the PlaceHistoryHandler




13
                     Magnolia is a registered trademark used by permission
Version 1.0
Places - Navigation
                                                        BrowserHistory


                                   onFragmentChange(event)              setFragment(token)




                                                      PlaceHistoryHandler                             PlaceHistoryMapper

                                                 onFragmentChange(event)                         getPlace(String token): Place
                                                 onPlaceChange(event)                            getToken(Place place): String

                           goTo(place)




                   PlaceController

              goTo(place)
              getWhere(): Place
                                                       onPlaceChange(event)



                fireEvent(placeChanged)




                                         EventBus



14
                                         Magnolia is a registered trademark used by permission
Version 1.0
Activity - ActivityManager
• an activity has the presenter role in the MVP pattern
• AcivityManager
  • bound to a region in the UI (ViewPort)
  • calls start(viewPort, eventBus) to start the activity
  • calls onStop() to stop an activity
• injects the view into the the viewport
• PlaceController
  • calls mayStop() to test if an activity can be leaved
  • shows confirmation dialog if needed




15
                      Magnolia is a registered trademark used by permission
Version 1.0
Activity - ActivityManager


                  ActivityManager             getActivity(place)         ActivityMapper

              onPlaceChange(event)                                 getActivity(place): Activity



                                                                           <<create>>

                                       start(), onStop()
                                                                             Activity

                                                                   start(viewPort, eventBus)
                                                                   mayStop(): String
                                                                   onStop()



                onPlaceChange(event)                                 fires application events




                                                   EventBus




16
                         Magnolia is a registered trademark used by permission
Version 1.0
View
• interface
  • contract with the presenter
• an implementation has the Vaadin specific code
• different device -> different views (mobile, iPad)
• LTR/RTL
• UIBuilders




17
                     Magnolia is a registered trademark used by permission
Version 1.0
Places - Activities - ViewPorts
                       BrowserHistory




         Application

                                                                                  ViewPort
                  PlaceHistoryHandler                                       start, stop
                                                     ActivityManager                           Activity                    View

                         goTo(place)




                       PlaceController
                                                                                                          ViewPort


                                                                                   ActivityManager                   Activity     View



                                                   onPlaceChange(event)
                 fireEvent(placeChanged)




                                                                 EventBus




18
                                          Magnolia is a registered trademark used by permission
Version 1.0
EventBus
• EventBus
  • application level events
  • ItemSelectedEvent, ItemDeletedEvent, ...
• UI events
  • are handled by the view itself
  • OnClickEvent, ...




19
                    Magnolia is a registered trademark used by permission
Version 1.0
Shell
•     encapsulates the browser
•     notify()
•     confirm(message)
•     URI fragment manipulations
     • getURIFragment()
     • setURIFragment()




20
                         Magnolia is a registered trademark used by permission
Version 1.0
Sub MVP Container
• an Activity can be a MVP container on its own
• creates a SubShell to interact with sub-fragments of the URI
      fragment
• creates its own place management (PlaceController, PlaceHandler)
• has its own inner EventBus
• subclasses can access the outer environment




21
                     Magnolia is a registered trademark used by permission
Version 1.0
UI Model
     • POJOs (Definitions)
                                                                                                      UI Builder


        • dialogs, trees, actions
        • Vaadin independent                                                                       UI Model


     • contributed in various ways                                                       Actions                   Trees



                                                                       Module                           Dialogs



        • configuration                                                                                                                  Code




        • annotations                                                       Node Types

                                                                                            Configuration (c2b)            Annotations



        • programmatically
     • UI Builder builds the Vaadin
              components




22
                           Magnolia is a registered trademark used by permission
Version 1.0
UI Builder




                                                         UI Model

                                            Actions                                Trees



              Module                                           Dialogs



                                                                                                         Code


                   Node Types

                                                Configuration (c2b)                        Annotations




23
                                Magnolia is a registered trademark used by permission
Version 1.0
UI Definitions and Builders

                                                                                                       ActionFactory
                              Activity                                  uses
                                                                                               createAction(ActionDefinition<A>): A



                                uses
                                                                                            uses
                                                                                                                    <<creates>>

                               UIModel
                                                                         ActionDefinition<A>                                      Action
              getActionDefinition(name): ActionDefintion

                                                                                                                     perform()




                                                       Potentially built with
                                                                                   could we generate them?
                                                         content2bean




24
                                                   Magnolia is a registered trademark used by permission
Version 1.0
Editors - Drivers
• Editor
     • exposed by the View (HasEditors)
     • to populate the View with data
     • to retrieve the values entered by the user
• Driver
  • injects the values into the editors
  • updates the underlaying model (node, bean)
  • validates the data
• Used in various editable views
  • DialogView, TreeView, ParagraphEditView, ...


25
                    Magnolia is a registered trademark used by permission
Version 1.0
Used by the driver to
                expose values and
              retrieve the new values

                                                                                                                                    Any view exposing
                                                                                                                                    editors. TreeView,
                                            Editor<T>                                        HasEditors                                DialogView,
                                                                                                                                    ParagraphView, ...
                                    setValue(T)                               getEditors()
                                    getValue(): T                             getEditor(name): Editor




                                                                                                              builds            DialogBuilder
                                                                                         DialogView
                                            Driver<T>                                                                    build(definition): DialogView
     Populates the editors.
     Updates and validates
       the edited object.           Driver(HasEditors)
                                    edit(T)
                                    flush(T)                                                                                        uses
                                    hasErrors()
                                    getErrors()
                                                                                        DialogActivity

                                                                                  save()
                                                                                  cancel()                                    DialogDefintion



                                                                                saves                      The presenter, called
                                                                                                          by the view. Delegates
                                                             updates,                                       to the Driver but is
                                                             validates                                    responsible for saving.
                                           NodeDriver                          Node




26
                                              Magnolia is a registered trademark used by permission
Version 1.0
Actions vs. Commands
              UI Model                                                       Content Model




                         invoke

                                           Action                  execute           Command


                             open



                                                navigate                              execute
                                  notify



                                                 PlaceController                    Web Services




27
                         Magnolia is a registered trademark used by permission
Version 1.0
Commands
• atom operation
  • delete item
  • save changes
  • activate content
• undo/redo
• also exposed by the web services




28
                    Magnolia is a registered trademark used by permission
Version 1.0
Content Model
• centralized node type definitions
  • constraints (used in the UI, web                                                                                     Web Services

              services, ..)
                                                                                            Vaadin
                                                                                                                           (CMIS)




     • entities (paragraphs belong to                                                                Content Model
              pages, ..)                                                              Constraints                             Commands




     • versioning                                                                                    Lifecycle
                                                                                                                   Virtual
                                                                                                                 Structures




• use mixins
  • mix:metaData instead of sub node
                                                                                             JCR
                                                                                                       Node
                                                                                                                    Mixins
                                                                                                       Types




  • faster and simpler queries
• lifecycle, workflow, status
• virtual structures


29
                              Magnolia is a registered trademark used by permission
Version 1.0
Web Services
                    Vaadin
                                                              (CMIS)




                             Content Model

              Constraints                                      Commands



                                                    Virtual
                              Lifecycle
                                                  Structures




                     JCR
                                Node
                                                      Mixins
                                Types




30
               Magnolia is a registered trademark used by permission
Version 1.0
Content API/JCR API
• move content security to the JCR
      layer                                                                   New                Legacy
                                                                              Code                Code

• new code uses the JCR API
• profit from other JCR frameworks
      and libraries                                                                            Content API


     • example Vaadin JCR Container
                                                                                                             Security




• keep the Content API alive for legacy                                              JCR API                 Security



      code
• better performance, esp. for queries




31
                      Magnolia is a registered trademark used by permission
Version 1.0
References ...
•     MVP
     •        Model View Presenter (MVP) VS Model View Controller (.Net)
     •        GUI Architectures (Martin Fowler)
•     GWT Activity and Places
     •        GWT 2.1 Activities - tbroyer's posterous
     •        GWT 2.1 Places - tbroyer's posterous
     •        GWT 2.1 Places – Part II - tbroyer's posterous
     •        GWT MVP Development with Activities and Places (GWT Documentation)
•     GWT Editors
     •        GWT 2.1 Editors - tbroyer's posterous
     •        Developer's Guide - Editors - (GWT Documentation)




32
                                   Magnolia is a registered trademark used by permission
Version 1.0
References
•     Commands
     •        Command pattern (Wikipedia)
     •        Undo (Wikipedia)
     •        Memento pattern (Wikipedia)




33
                                 Magnolia is a registered trademark used by permission
Version 1.0

Contenu connexe

Tendances

Tendances (20)

Lets make a better react form
Lets make a better react formLets make a better react form
Lets make a better react form
 
Jsf presentation
Jsf presentationJsf presentation
Jsf presentation
 
Hibernate
HibernateHibernate
Hibernate
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
Hibernate presentation
Hibernate presentationHibernate presentation
Hibernate presentation
 
CQRS in 4 steps
CQRS in 4 stepsCQRS in 4 steps
CQRS in 4 steps
 
react redux.pdf
react redux.pdfreact redux.pdf
react redux.pdf
 
Web api
Web apiWeb api
Web api
 
Oracle WebLogic Diagnostics & Perfomance tuning
Oracle WebLogic Diagnostics & Perfomance tuningOracle WebLogic Diagnostics & Perfomance tuning
Oracle WebLogic Diagnostics & Perfomance tuning
 
Enterprise JavaBeans(EJB)
Enterprise JavaBeans(EJB)Enterprise JavaBeans(EJB)
Enterprise JavaBeans(EJB)
 
How to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elementsHow to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elements
 
Spring Batch 2.0
Spring Batch 2.0Spring Batch 2.0
Spring Batch 2.0
 
Logback
LogbackLogback
Logback
 
What Is Virtual DOM In React JS.pptx
What Is Virtual DOM In React JS.pptxWhat Is Virtual DOM In React JS.pptx
What Is Virtual DOM In React JS.pptx
 
React state
React  stateReact  state
React state
 
React js for beginners
React js for beginnersReact js for beginners
React js for beginners
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBoot
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP
 
Laravel Introduction
Laravel IntroductionLaravel Introduction
Laravel Introduction
 
Model View Controller (MVC)
Model View Controller (MVC)Model View Controller (MVC)
Model View Controller (MVC)
 

En vedette

Magnolia CMS 5.0 - Overview
Magnolia CMS 5.0 - OverviewMagnolia CMS 5.0 - Overview
Magnolia CMS 5.0 - Overview
Philipp Bärfuss
 
Spring first in Magnolia CMS - Spring I/O 2015
Spring first in Magnolia CMS - Spring I/O 2015Spring first in Magnolia CMS - Spring I/O 2015
Spring first in Magnolia CMS - Spring I/O 2015
Tobias Mattsson
 
Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache Jackrabbit
Jukka Zitting
 

En vedette (11)

Using Magnolia in a Microservices Architecture
Using Magnolia in a Microservices ArchitectureUsing Magnolia in a Microservices Architecture
Using Magnolia in a Microservices Architecture
 
Spring and Web Content Management
Spring and Web Content ManagementSpring and Web Content Management
Spring and Web Content Management
 
Magnolia CMS 5.0 - Overview
Magnolia CMS 5.0 - OverviewMagnolia CMS 5.0 - Overview
Magnolia CMS 5.0 - Overview
 
Flexible search in Apache Jackrabbit Oak
Flexible search in Apache Jackrabbit OakFlexible search in Apache Jackrabbit Oak
Flexible search in Apache Jackrabbit Oak
 
Data replication in Sling
Data replication in SlingData replication in Sling
Data replication in Sling
 
Spring first in Magnolia CMS - Spring I/O 2015
Spring first in Magnolia CMS - Spring I/O 2015Spring first in Magnolia CMS - Spring I/O 2015
Spring first in Magnolia CMS - Spring I/O 2015
 
Apache Jackrabbit
Apache JackrabbitApache Jackrabbit
Apache Jackrabbit
 
RESTful Web Applications with Apache Sling
RESTful Web Applications with Apache SlingRESTful Web Applications with Apache Sling
RESTful Web Applications with Apache Sling
 
Apache Jackrabbit @ Swiss Open Source Awards 2011
Apache Jackrabbit @ Swiss Open Source Awards 2011Apache Jackrabbit @ Swiss Open Source Awards 2011
Apache Jackrabbit @ Swiss Open Source Awards 2011
 
Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache Jackrabbit
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3
 

Similaire à Magnolia CMS 5.0 - Architecture

Java one brazil_keynote_dochez
Java one brazil_keynote_dochezJava one brazil_keynote_dochez
Java one brazil_keynote_dochez
Jerome Dochez
 
SPEC INDIA Java Case Study
SPEC INDIA Java Case StudySPEC INDIA Java Case Study
SPEC INDIA Java Case Study
SPEC INDIA
 
N(i)2 technical architecture 2.0 (v1 1)
N(i)2 technical architecture 2.0 (v1 1)N(i)2 technical architecture 2.0 (v1 1)
N(i)2 technical architecture 2.0 (v1 1)
kvz
 
ITECH Kenya presentation on OpenMRS Developers Forum
ITECH Kenya presentation on OpenMRS Developers ForumITECH Kenya presentation on OpenMRS Developers Forum
ITECH Kenya presentation on OpenMRS Developers Forum
djazayeri
 
Accessing Your Existing SAP NetWeaver Portal on Mobile Device
Accessing Your Existing SAP NetWeaver Portal on Mobile DeviceAccessing Your Existing SAP NetWeaver Portal on Mobile Device
Accessing Your Existing SAP NetWeaver Portal on Mobile Device
SAP Portal
 

Similaire à Magnolia CMS 5.0 - Architecture (20)

Abap web dynpro
Abap   web dynproAbap   web dynpro
Abap web dynpro
 
Abap web dynpro
Abap   web dynproAbap   web dynpro
Abap web dynpro
 
Sotona
SotonaSotona
Sotona
 
Webinar The App Lifecycle Platform
Webinar The App Lifecycle PlatformWebinar The App Lifecycle Platform
Webinar The App Lifecycle Platform
 
Java one brazil_keynote_dochez
Java one brazil_keynote_dochezJava one brazil_keynote_dochez
Java one brazil_keynote_dochez
 
SPEC INDIA Java Case Study
SPEC INDIA Java Case StudySPEC INDIA Java Case Study
SPEC INDIA Java Case Study
 
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
The Java EE 7 Platform: Developing for the Cloud  (FISL 12)The Java EE 7 Platform: Developing for the Cloud  (FISL 12)
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
 
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
 
N(i)2 technical architecture 2.0 (v1 1)
N(i)2 technical architecture 2.0 (v1 1)N(i)2 technical architecture 2.0 (v1 1)
N(i)2 technical architecture 2.0 (v1 1)
 
Framework Engineering
Framework EngineeringFramework Engineering
Framework Engineering
 
Leadership Symposium on Digital Media in Healthcare
Leadership Symposium on Digital Media in HealthcareLeadership Symposium on Digital Media in Healthcare
Leadership Symposium on Digital Media in Healthcare
 
Pure Ejb Within An Agile Context
Pure Ejb Within An Agile ContextPure Ejb Within An Agile Context
Pure Ejb Within An Agile Context
 
Summer training java
Summer training javaSummer training java
Summer training java
 
ITECH Kenya presentation on OpenMRS Developers Forum
ITECH Kenya presentation on OpenMRS Developers ForumITECH Kenya presentation on OpenMRS Developers Forum
ITECH Kenya presentation on OpenMRS Developers Forum
 
Accessing Your Existing SAP NetWeaver Portal on Mobile Device
Accessing Your Existing SAP NetWeaver Portal on Mobile DeviceAccessing Your Existing SAP NetWeaver Portal on Mobile Device
Accessing Your Existing SAP NetWeaver Portal on Mobile Device
 
UI innovation with SAP NetWeaver Gateway
UI innovation with SAP NetWeaver GatewayUI innovation with SAP NetWeaver Gateway
UI innovation with SAP NetWeaver Gateway
 
Summer training java
Summer training javaSummer training java
Summer training java
 
Junos Space SDK - Imagination, Ideas, Innovation
Junos Space SDK - Imagination, Ideas, InnovationJunos Space SDK - Imagination, Ideas, Innovation
Junos Space SDK - Imagination, Ideas, Innovation
 
DashMash: a Mashup Environment for End User Development
DashMash: a Mashup Environment for End User DevelopmentDashMash: a Mashup Environment for End User Development
DashMash: a Mashup Environment for End User Development
 
Best Practices for Upgrading Your Portal to SAP NetWeaver 7.3
Best Practices for Upgrading Your Portal to SAP NetWeaver 7.3Best Practices for Upgrading Your Portal to SAP NetWeaver 7.3
Best Practices for Upgrading Your Portal to SAP NetWeaver 7.3
 

Plus de Philipp Bärfuss

Magnolia 5 - Under the Hood
Magnolia 5 - Under the HoodMagnolia 5 - Under the Hood
Magnolia 5 - Under the Hood
Philipp Bärfuss
 
Magnolia CMS 5.0 - UI Architecture
Magnolia CMS 5.0 - UI ArchitectureMagnolia CMS 5.0 - UI Architecture
Magnolia CMS 5.0 - UI Architecture
Philipp Bärfuss
 
Magnolia CMS 5.0 - Three perspectives
Magnolia CMS 5.0   - Three perspectivesMagnolia CMS 5.0   - Three perspectives
Magnolia CMS 5.0 - Three perspectives
Philipp Bärfuss
 

Plus de Philipp Bärfuss (8)

NoCMS - from monolithic CMS to dissolved CMS
NoCMS - from monolithic CMS to dissolved CMSNoCMS - from monolithic CMS to dissolved CMS
NoCMS - from monolithic CMS to dissolved CMS
 
Magnolia Personalization Keynote Amplify 2014
Magnolia Personalization Keynote Amplify 2014Magnolia Personalization Keynote Amplify 2014
Magnolia Personalization Keynote Amplify 2014
 
Magnolia 5 - Under the Hood
Magnolia 5 - Under the HoodMagnolia 5 - Under the Hood
Magnolia 5 - Under the Hood
 
Magnolia CMS 5.0 - UI Architecture
Magnolia CMS 5.0 - UI ArchitectureMagnolia CMS 5.0 - UI Architecture
Magnolia CMS 5.0 - UI Architecture
 
Magnolia CMS 5.0 - JCR 2.0 and Content API
Magnolia CMS 5.0 - JCR 2.0 and Content APIMagnolia CMS 5.0 - JCR 2.0 and Content API
Magnolia CMS 5.0 - JCR 2.0 and Content API
 
Magnolia CMS Roadmap - Beyond 5.0
Magnolia CMS Roadmap - Beyond 5.0Magnolia CMS Roadmap - Beyond 5.0
Magnolia CMS Roadmap - Beyond 5.0
 
Magnolia CMS 5.0 - Three perspectives
Magnolia CMS 5.0   - Three perspectivesMagnolia CMS 5.0   - Three perspectives
Magnolia CMS 5.0 - Three perspectives
 
Magnolia 5.0 'GenUIne'
Magnolia 5.0 'GenUIne'Magnolia 5.0 'GenUIne'
Magnolia 5.0 'GenUIne'
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Magnolia CMS 5.0 - Architecture

  • 1. Magnolia 5.0 Architecture local louisville/Reflecting Pool at Pulitzer/Flickr
  • 2. Web Browser AdminCentral Web pages, Vaadin (GWT) CMIS JCR Images, .. App App HTTP AJAX/JSON REST/Atom Web Services Rendering Engine Vaadin (CMIS) Templates Content UI Model Model JCR Node Security ... ... Mixins Types 2 Magnolia is a registered trademark used by permission Version 1.0
  • 3. WebServices (CMIS) • will use the CMIS API • Content Management Interoperability Services • standardized • fits JCR specification • REST • uses Atom format • open source implementation exists • Apache Chemistry (OpenCMIS) 3 Magnolia is a registered trademark used by permission Version 1.0
  • 4. IoC/DI (Dependency Injection) • we gradually introduce IoC • for components • for the new UI • we use PicoContainer • constructor injection 4 Magnolia is a registered trademark used by permission Version 1.0
  • 5. Vaadin 5 Magnolia is a registered trademark used by permission Version 1.0
  • 6. Vaadin • Rich widget framework • Out-of-the-box theming • Java developer friendly • Close to Swing • GWT based (Java -> Javascript) • Can integrate any GWT-components • Rare GWT-compiles (compared to plain GWT) • Testing with pure JUnit • Apache License • Well documented 6 Magnolia is a registered trademark used by permission Version 1.0
  • 7. UI - Architecture 7 Magnolia is a registered trademark used by permission Version 1.0
  • 8. Model View MVP Presenter UI - Architecture 7 Magnolia is a registered trademark used by permission Version 1.0
  • 9. Model View MVP Presenter UI - Architecture Activities GWT Places Editors 7 Magnolia is a registered trademark used by permission Version 1.0
  • 10. Model View MVP Presenter UI - Architecture Activities guice GWT IoC pico Places Editors 7 Magnolia is a registered trademark used by permission Version 1.0
  • 11. GWT concepts as a blueprint promoter of MVP GWT promoted to use the MVP for a while. widget oriented GWT applications are widget oriented. Vaadin too. real web applications proper history support, separation of browser dependent code ready made the fundamental framework is provided since GWT 2.1 8 Magnolia is a registered trademark used by permission Version 1.0
  • 14. Model - View - Presenter (MVP) updates the widgets provides the data to and handles UI events the view and interacts like click events with the application View Presenter the view has not binding to the model Model EventBus 10 Magnolia is a registered trademark used by permission Version 1.0
  • 15. MVP - Example TreeView TreePresenter selectItem(path) notifies onItemSelected(path) expand(path) refresh() TreeActivity Vaadin specific updates implementation start() onStop() TreeViewImpl 11 Magnolia is a registered trademark used by permission Version 1.0
  • 16. Main Participants • Place - Application Navigation • Activitiy - The Presenter • View - the UI widgets • ViewPort - UI region • EventBus - Application Events 12 Magnolia is a registered trademark used by permission Version 1.0
  • 17. Places - Navigation • the state representing the UI location • what is showed (inbox, detail view) • used for the application navigation • PlaceController.goTo(place) • mapped to activities • ActivityMapper.getActivity(place) • bound to the browser history • by the PlaceHistoryHandler 13 Magnolia is a registered trademark used by permission Version 1.0
  • 18. Places - Navigation BrowserHistory onFragmentChange(event) setFragment(token) PlaceHistoryHandler PlaceHistoryMapper onFragmentChange(event) getPlace(String token): Place onPlaceChange(event) getToken(Place place): String goTo(place) PlaceController goTo(place) getWhere(): Place onPlaceChange(event) fireEvent(placeChanged) EventBus 14 Magnolia is a registered trademark used by permission Version 1.0
  • 19. Activity - ActivityManager • an activity has the presenter role in the MVP pattern • AcivityManager • bound to a region in the UI (ViewPort) • calls start(viewPort, eventBus) to start the activity • calls onStop() to stop an activity • injects the view into the the viewport • PlaceController • calls mayStop() to test if an activity can be leaved • shows confirmation dialog if needed 15 Magnolia is a registered trademark used by permission Version 1.0
  • 20. Activity - ActivityManager ActivityManager getActivity(place) ActivityMapper onPlaceChange(event) getActivity(place): Activity <<create>> start(), onStop() Activity start(viewPort, eventBus) mayStop(): String onStop() onPlaceChange(event) fires application events EventBus 16 Magnolia is a registered trademark used by permission Version 1.0
  • 21. View • interface • contract with the presenter • an implementation has the Vaadin specific code • different device -> different views (mobile, iPad) • LTR/RTL • UIBuilders 17 Magnolia is a registered trademark used by permission Version 1.0
  • 22. Places - Activities - ViewPorts BrowserHistory Application ViewPort PlaceHistoryHandler start, stop ActivityManager Activity View goTo(place) PlaceController ViewPort ActivityManager Activity View onPlaceChange(event) fireEvent(placeChanged) EventBus 18 Magnolia is a registered trademark used by permission Version 1.0
  • 23. EventBus • EventBus • application level events • ItemSelectedEvent, ItemDeletedEvent, ... • UI events • are handled by the view itself • OnClickEvent, ... 19 Magnolia is a registered trademark used by permission Version 1.0
  • 24. Shell • encapsulates the browser • notify() • confirm(message) • URI fragment manipulations • getURIFragment() • setURIFragment() 20 Magnolia is a registered trademark used by permission Version 1.0
  • 25. Sub MVP Container • an Activity can be a MVP container on its own • creates a SubShell to interact with sub-fragments of the URI fragment • creates its own place management (PlaceController, PlaceHandler) • has its own inner EventBus • subclasses can access the outer environment 21 Magnolia is a registered trademark used by permission Version 1.0
  • 26. UI Model • POJOs (Definitions) UI Builder • dialogs, trees, actions • Vaadin independent UI Model • contributed in various ways Actions Trees Module Dialogs • configuration Code • annotations Node Types Configuration (c2b) Annotations • programmatically • UI Builder builds the Vaadin components 22 Magnolia is a registered trademark used by permission Version 1.0
  • 27. UI Builder UI Model Actions Trees Module Dialogs Code Node Types Configuration (c2b) Annotations 23 Magnolia is a registered trademark used by permission Version 1.0
  • 28. UI Definitions and Builders ActionFactory Activity uses createAction(ActionDefinition<A>): A uses uses <<creates>> UIModel ActionDefinition<A> Action getActionDefinition(name): ActionDefintion perform() Potentially built with could we generate them? content2bean 24 Magnolia is a registered trademark used by permission Version 1.0
  • 29. Editors - Drivers • Editor • exposed by the View (HasEditors) • to populate the View with data • to retrieve the values entered by the user • Driver • injects the values into the editors • updates the underlaying model (node, bean) • validates the data • Used in various editable views • DialogView, TreeView, ParagraphEditView, ... 25 Magnolia is a registered trademark used by permission Version 1.0
  • 30. Used by the driver to expose values and retrieve the new values Any view exposing editors. TreeView, Editor<T> HasEditors DialogView, ParagraphView, ... setValue(T) getEditors() getValue(): T getEditor(name): Editor builds DialogBuilder DialogView Driver<T> build(definition): DialogView Populates the editors. Updates and validates the edited object. Driver(HasEditors) edit(T) flush(T) uses hasErrors() getErrors() DialogActivity save() cancel() DialogDefintion saves The presenter, called by the view. Delegates updates, to the Driver but is validates responsible for saving. NodeDriver Node 26 Magnolia is a registered trademark used by permission Version 1.0
  • 31. Actions vs. Commands UI Model Content Model invoke Action execute Command open navigate execute notify PlaceController Web Services 27 Magnolia is a registered trademark used by permission Version 1.0
  • 32. Commands • atom operation • delete item • save changes • activate content • undo/redo • also exposed by the web services 28 Magnolia is a registered trademark used by permission Version 1.0
  • 33. Content Model • centralized node type definitions • constraints (used in the UI, web Web Services services, ..) Vaadin (CMIS) • entities (paragraphs belong to Content Model pages, ..) Constraints Commands • versioning Lifecycle Virtual Structures • use mixins • mix:metaData instead of sub node JCR Node Mixins Types • faster and simpler queries • lifecycle, workflow, status • virtual structures 29 Magnolia is a registered trademark used by permission Version 1.0
  • 34. Web Services Vaadin (CMIS) Content Model Constraints Commands Virtual Lifecycle Structures JCR Node Mixins Types 30 Magnolia is a registered trademark used by permission Version 1.0
  • 35. Content API/JCR API • move content security to the JCR layer New Legacy Code Code • new code uses the JCR API • profit from other JCR frameworks and libraries Content API • example Vaadin JCR Container Security • keep the Content API alive for legacy JCR API Security code • better performance, esp. for queries 31 Magnolia is a registered trademark used by permission Version 1.0
  • 36. References ... • MVP • Model View Presenter (MVP) VS Model View Controller (.Net) • GUI Architectures (Martin Fowler) • GWT Activity and Places • GWT 2.1 Activities - tbroyer's posterous • GWT 2.1 Places - tbroyer's posterous • GWT 2.1 Places – Part II - tbroyer's posterous • GWT MVP Development with Activities and Places (GWT Documentation) • GWT Editors • GWT 2.1 Editors - tbroyer's posterous • Developer's Guide - Editors - (GWT Documentation) 32 Magnolia is a registered trademark used by permission Version 1.0
  • 37. References • Commands • Command pattern (Wikipedia) • Undo (Wikipedia) • Memento pattern (Wikipedia) 33 Magnolia is a registered trademark used by permission Version 1.0

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n