SlideShare a Scribd company logo
Xiaoyan Chen
Introduction to Adobe Configurator 2.0 architecture
Contents
 Demo Configurator 2.0 (C2)
 Introduction to C2 architecture
 The challenges to C2
 The overall picture
 The baseline of C2 architecture
 More on the MVC
 UT
 Undo/Redo
 The evolutions of C2 architecture
 Integrating DV
 Model evolution
 Extensions through Plug-ins
 C2 architecture–put all together
 The sequence diagrams of preview
 Best practices
2
Demo Configurator 2.0 (C2)
3
The challenges to C2
 A lot of features
 Features that have big impacts on the architecture:
 Multi lingual panel (high priority feature)
 UI layout capability (high priority feature)
 Multi product support (medium priority feature)
 Flexible requirements from product manager 
 5 new features introduced after pre-release
 Result:
 Feature number: 16
 Loc: 45K (C2) + 12K (UT) + 25K (FB DB)
 Less than 5% of C2 code is legacy code from Configurator 1.0.
4
The challenges to C2
 Flexibility
 Add new widgets
 Logic changes in
widgets -- avoid
shotgun surgery
5
Functions
•UI layout
capability
•Multi lingual
panel
•Multi product
support
Non-Function
•Flexibility
•Testability
Constraints
•CSXS
•Point Product
The overall picture
6
The baseline of C2 architecture
 The“baseline”means:
 The guidelines at the very core of the architecture
 Unchanged things as the architecture evolves
7
The baseline of C2 architecture
 # 1: This is an MVC architecture
 # 2: Data driven and transparency over different kinds of
“objects”
8
The baseline of C2 architecture
# 1: This is an MVC
architecture
“dispatch events”from UI
to the mediator:
Drag drop a new object into
the panel
Move an object in the panel
Select object(s) in the
outline view
Change the width of object(s)
using the inspector
…
9
The baseline of C2 architecture
# 1: This is an MVC
architecture
UI“observe states”from
models:
Get data from models to
populate the inspector
The parent-child relationship
is changed among the models
The attribute values of the
models are changed
…
10
The baseline of C2 architecture
# 1: This is an MVC
architecture
Commands:
Execute moving object(s)
Execute changing the
attribute values of the models
Execute copying/pasting
…
Models
Manage data
Provide “command” APIs
to be called by commands
Provide “query”APIs for
UI and notify state
changes to UI
11
The baseline of C2 architecture
 # 2: Data driven and transparency over different kinds of
“objects”
 Data driven: bundle and gpc in xml
 Transparency: (considering adding a new type of object)
 The palette can display it without code change.
 The design view can manage it (move, remove, change attributes, etc) without
code change.
 The inspector can manage it (observe and change) without code change.
 The outline view can manage it (observe and select) without code change.
12
The baseline of C2 architecture
 # 2: Data driven and transparency over different kinds of
“objects”
 Data driven: bundle and gpc in xml
 Demo bundle and gpc snippets
 Important implication: only one model class for different objects,
which recursively form a tree structure
13
More on the MVC
 5 “layers”
 Principles:
 UI: thin, stupid
 Mediator: simple,
parameter adjustment
 Command: heavy
 Proxy: Simple
 VO (model): heavy
14
More on the MVC - UT
15
More on the MVC – Undo/Redo
 Bridge between PureMVC and an independent undo/redo library
 SimpleUndoCommand.execute() is final, in this method, it pushes itself
into the UndoStack.
 Subclasses of SimpleUndoCommand focus on logics, don’t care UndoStack and
UndoGroup.
 IUndoCommand.canMergeWith(IUndoCommand)
16
More on the MVC – Undo/Redo
 The sequence diagram of pushing a Undoable command into the stack
17
More on the MVC – Undo/Redo
 The sequence diagram of undoing a command
18
The evolutions of C2 architecture–integrating DV
 Integrating the design view (DV) of Flex Builder 3.0
 DV is a module in FB 3.0 implemented in AS (about 25K LOC).
 DV supports MXML editing in a WYSIWYG way.
 DV communicates with the other parts (Java code) of FB via ExternalInterface.
 The architectural decisions involved:
 Implementing the DV functions from scratch in C2 vs.Integrating FB’s DV
 If integrating FB’s DV, how to integrate it?
 Eliminate the statics in DV or not?
19
The evolutions of C2 architecture–integrating DV
 The solutions that was taken:
 Make code changes to DV as minimal as possible
 Compile the DV code to a swf representing a separate DV application.
 Simulate what FB does.
20
The evolutions of C2 architecture–integrating DV
21
Flex Builder 3.0 C2
Host the DV Use flash player Use a SWFLoader in a
separate
Calls from non-DV part
to DV
Callbacks register via
ExternalInterface
Get the DVFacade (a new
wrapper) and call its
Calls from DV to non-
DV part
ExternalInterface.call Inject an object
(DVCallHandler) into DV
and DV call its APIs
Capture user
interactions (mouse
moves)
Java side captures then
into DV
Use a Canvas covering
SWFLoader to capture the
mouse moves then calls
into DV
The evolutions of C2 architecture–integrating DV
22
The evolutions of C2 architecture–integrating DV
 The sequence diagram of handling drag drop in design view
23
The evolutions of C2 architecture–integrating DV
 The sequence diagram of adding a new object from palette to panel
24
The evolutions of C2 architecture–integrating DV
 The sequences:
 UI: Oh, mouse event happens!
 DesignView: Wait, let’s me check what the user wants to do … oh, he/she
wants to move/remove/add/select something.
 UI: Got it, but I can not handle it, I will broadcast an event, who cares who
does!
 Mediator: I know some person who can handle it. Hey, Mr. Command…
 Command: Oh, my god, too work load for me!
 Model: Hello world, I am changed!
 UI: Hi DesignView, Model has been changed, how about you?
 DesignView: OK, I will reflect it.
 Outline: And me, I also need to reflect it.
25
The evolutions of C2 architecture–model evolution
 The evolutions of model’s internals are driven by:
 GPC schema evolution: try to make the gpc file more like a mxml file
 Some features
 Remember our baseline #2
26
The evolutions of C2 architecture–model evolution
 An obvious model evolution caused by PanelLoader
 Why PanelLoader?
Locale dependent panel layout (contents)
 Class diagrams before introducing PanelLoader
27
The evolutions of C2 architecture–model evolution
 An obvious model evolution caused by PanelLoader
 Class diagrams after introducing PanelLoader
28
The evolutions of C2 architecture–model evolution
 An obvious model evolution caused by PanelLoader
 Check the baseline #2
 The bundle xml for PanelLoader
<element id="panelLoader"
classDT="com.adobe.configurator2.component.PanelLoaderDesignTime"
classRT="com.adobe.configurator2.component.PanelLoader"
extension="configurator.BaseWidgetExtension">
<attr id="url" editor="URL" validator="stringValidator"
meta="UI_ACCESSOR" name="$$$/Configurator/Attribute/panelLoaderUrl"/>
<attr id="invalidPanelPrompt" inspectable="n" meta="UI_ACCESSOR"/>
</element>
 (Demo)
29
The evolutions of C2 architecture–extensions through Plug-
ins
 Introduction to the runtime architecture
30
The evolutions of C2 architecture–extensions through Plug-
ins
 Why introducing “extensions through plug-ins”?
 Check the classes for handling events dispatched by HTMLWidget
31
The evolutions of C2 architecture–extensions through Plug-
ins
 Why introducing “extensions through plug-ins”?
 How to add the PopupPanelButton widget?
32
The evolutions of C2 architecture–extensions through Plug-
ins
 Why introducing “extensions through plug-ins”?
 Bad: the model classes are not closed.
33
The evolutions of C2 architecture–extensions through Plug-
ins
 The class diagrams -- Introducing “extensions through plug-ins”
34
The evolutions of C2 architecture–extensions through Plug-
ins
 Introducing “extensions through plug-ins”
35
The evolutions of C2 architecture–extensions through Plug-
ins
 The bundle xml
<element id="html" classDT="com.adobe.configurator2.component.HTMLDesignTime"
classRT="com.adobe.configurator2.component.HTMLRuntime" extension="configurator.BaseWidgetExtension">
<attr id="htmlText" editor="Text" validator="stringValidator" meta="UI_ACCESSOR" localize="y"
name="$$$/Configurator/Attribute/htmlText"/>
<attr id="location" editor="URL" validator="stringValidator" meta="UI_ACCESSOR" localize="y"
name="$$$/Configurator/Attribute/location"/>
<attr id="homeLocation" editor="URL" validator="stringValidator" meta="UI_ACCESSOR" localize="y"
name="$$$/Configurator/Attribute/homeLocation"/>
<attr id=“htmlevent" inspectable="n" meta="EVENT"/>
</element>
<droppedObjTemplate id="widget_html">
<html htmlevent=“onHtmlEvent”>
<eventListeners>
<function id="onHtmlEvent" handler=“com.adobe.configurator2.handler.HtmlHandler“>
</function>
</eventListeners>
</html>
</droppedObjTemplate>
36
The evolutions of C2 architecture–extensions through Plug-
ins
 ToDo:
 Unify all other “simple”widgets (tools, commands, etc) in such plug-in way
(they are core plug-ins), thus making the models not knowing JSGateway.
37
C2 architecture–put all together
 The C2 architecture diagram
38
C2 architecture–put all together
 The preview sequence diagram
 Preview is special in that it combines “design time” and “run time”.
39
Best practices
 No up-front architecture, but loose coupling in mind.
 Keep nose on the code smell, refactor in time.
 Reusing or self-creating?
 Careful evaluation
 Creative reusing
 Partition
 Simple methods compose the complex logic of the object.
 Simple objects compose the complex logic of the application.
 Check your bug fixing: shotgun surgery?
40
Introduction to Configurator 2.0 architecture design

More Related Content

Viewers also liked

History, Art and Architecture under British Rule.
History, Art and Architecture under British Rule.History, Art and Architecture under British Rule.
History, Art and Architecture under British Rule.Pankaj Saikia
 
The evolutions of british architecture
The evolutions of british architectureThe evolutions of british architecture
The evolutions of british architectureflun
 
The Transitional Period in Architecture
The Transitional Period in ArchitectureThe Transitional Period in Architecture
The Transitional Period in ArchitectureAkash Matthew
 
Evolution of music in the UK
Evolution of music in the UKEvolution of music in the UK
Evolution of music in the UKVale Feliú
 
British music culture
British music cultureBritish music culture
British music cultureCharlie Lewin
 
Lesson 7 British Literature
Lesson 7 British LiteratureLesson 7 British Literature
Lesson 7 British LiteraturePatrickwolak
 
British literature through time
British literature through timeBritish literature through time
British literature through timeursulahd
 
Timeline Of Modernist Architecture 30.11.2009
Timeline Of Modernist Architecture 30.11.2009Timeline Of Modernist Architecture 30.11.2009
Timeline Of Modernist Architecture 30.11.2009mauritz_leon_kruger1
 
English literature and culture
English literature and cultureEnglish literature and culture
English literature and culturevidal_40
 
British Cinema History
British Cinema HistoryBritish Cinema History
British Cinema Historykingedmedia
 
British literature timeline doplněné
British literature timeline doplněnéBritish literature timeline doplněné
British literature timeline doplněnéafdlila
 

Viewers also liked (17)

History, Art and Architecture under British Rule.
History, Art and Architecture under British Rule.History, Art and Architecture under British Rule.
History, Art and Architecture under British Rule.
 
British music1
British music1British music1
British music1
 
1940s
1940s1940s
1940s
 
The evolutions of british architecture
The evolutions of british architectureThe evolutions of british architecture
The evolutions of british architecture
 
The Transitional Period in Architecture
The Transitional Period in ArchitectureThe Transitional Period in Architecture
The Transitional Period in Architecture
 
Kolkata architecture -british period
Kolkata architecture -british periodKolkata architecture -british period
Kolkata architecture -british period
 
Evolution of music in the UK
Evolution of music in the UKEvolution of music in the UK
Evolution of music in the UK
 
British Music
British MusicBritish Music
British Music
 
British music culture
British music cultureBritish music culture
British music culture
 
Housing
HousingHousing
Housing
 
Lesson 7 British Literature
Lesson 7 British LiteratureLesson 7 British Literature
Lesson 7 British Literature
 
British literature through time
British literature through timeBritish literature through time
British literature through time
 
Timeline Of Modernist Architecture 30.11.2009
Timeline Of Modernist Architecture 30.11.2009Timeline Of Modernist Architecture 30.11.2009
Timeline Of Modernist Architecture 30.11.2009
 
English literature and culture
English literature and cultureEnglish literature and culture
English literature and culture
 
Music subcultures 2
Music subcultures 2Music subcultures 2
Music subcultures 2
 
British Cinema History
British Cinema HistoryBritish Cinema History
British Cinema History
 
British literature timeline doplněné
British literature timeline doplněnéBritish literature timeline doplněné
British literature timeline doplněné
 

Similar to Introduction to Configurator 2.0 architecture design

Code Camp 06 Model View Presenter Architecture
Code Camp 06   Model View Presenter ArchitectureCode Camp 06   Model View Presenter Architecture
Code Camp 06 Model View Presenter Architecturebitburner93
 
Introduction to c si bridge
Introduction to c si bridgeIntroduction to c si bridge
Introduction to c si bridgeCristian Cabrera
 
CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018
CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018
CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018Lucina Stricko, CSPO
 
Building and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextBuilding and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextSvilen Sabev
 
Continuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentContinuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentVladimir Bakhov
 
Code igniter development
Code igniter developmentCode igniter development
Code igniter developmentMobiloitte
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidConAmir Zuker
 
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new FeaturesMigrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new FeaturesWSO2
 
Features and Context Overview
Features and Context OverviewFeatures and Context Overview
Features and Context Overviewbrentratliff
 
#7 - Client-side web apps, MVC and jQuery
#7 - Client-side web apps, MVC and jQuery#7 - Client-side web apps, MVC and jQuery
#7 - Client-side web apps, MVC and jQueryiloveigloo
 
EICS 2022 - Mod2Dash: A Framework for Model-Driven Dashboards Generation
EICS 2022 - Mod2Dash: A Framework for Model-Driven Dashboards GenerationEICS 2022 - Mod2Dash: A Framework for Model-Driven Dashboards Generation
EICS 2022 - Mod2Dash: A Framework for Model-Driven Dashboards GenerationNguyenTran366216
 
Mod2Dash Presentation
Mod2Dash PresentationMod2Dash Presentation
Mod2Dash PresentationCREST
 
Migrate To Lightning Web Components from Aura framework to increase performance
Migrate To Lightning Web Components from Aura framework to increase performance Migrate To Lightning Web Components from Aura framework to increase performance
Migrate To Lightning Web Components from Aura framework to increase performance Bohdan Dovhań
 
Migration Effort in the Cloud - The Case of Cloud Platforms
Migration Effort in the Cloud - The Case of Cloud PlatformsMigration Effort in the Cloud - The Case of Cloud Platforms
Migration Effort in the Cloud - The Case of Cloud PlatformsStefan Kolb
 
William Impey CV
William Impey CVWilliam Impey CV
William Impey CVWill Impey
 
Modern ASP.NET Webskills
Modern ASP.NET WebskillsModern ASP.NET Webskills
Modern ASP.NET WebskillsCaleb Jenkins
 
CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26
CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26
CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26Vulk Coop
 
MVC ppt presentation
MVC ppt presentationMVC ppt presentation
MVC ppt presentationBhavin Shah
 

Similar to Introduction to Configurator 2.0 architecture design (20)

Code Camp 06 Model View Presenter Architecture
Code Camp 06   Model View Presenter ArchitectureCode Camp 06   Model View Presenter Architecture
Code Camp 06 Model View Presenter Architecture
 
Introduction to c si bridge
Introduction to c si bridgeIntroduction to c si bridge
Introduction to c si bridge
 
CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018
CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018
CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018
 
Building and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextBuilding and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and Context
 
Continuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentContinuous Integration for Oracle Database Development
Continuous Integration for Oracle Database Development
 
Code igniter development
Code igniter developmentCode igniter development
Code igniter development
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidCon
 
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new FeaturesMigrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
Migrate to the Latest WSO2 Micro Integrator to Unlock All-new Features
 
Features and Context Overview
Features and Context OverviewFeatures and Context Overview
Features and Context Overview
 
#7 - Client-side web apps, MVC and jQuery
#7 - Client-side web apps, MVC and jQuery#7 - Client-side web apps, MVC and jQuery
#7 - Client-side web apps, MVC and jQuery
 
EICS 2022 - Mod2Dash: A Framework for Model-Driven Dashboards Generation
EICS 2022 - Mod2Dash: A Framework for Model-Driven Dashboards GenerationEICS 2022 - Mod2Dash: A Framework for Model-Driven Dashboards Generation
EICS 2022 - Mod2Dash: A Framework for Model-Driven Dashboards Generation
 
Mod2Dash Presentation
Mod2Dash PresentationMod2Dash Presentation
Mod2Dash Presentation
 
Migrate To Lightning Web Components from Aura framework to increase performance
Migrate To Lightning Web Components from Aura framework to increase performance Migrate To Lightning Web Components from Aura framework to increase performance
Migrate To Lightning Web Components from Aura framework to increase performance
 
Migration Effort in the Cloud - The Case of Cloud Platforms
Migration Effort in the Cloud - The Case of Cloud PlatformsMigration Effort in the Cloud - The Case of Cloud Platforms
Migration Effort in the Cloud - The Case of Cloud Platforms
 
William Impey CV
William Impey CVWilliam Impey CV
William Impey CV
 
Modern ASP.NET Webskills
Modern ASP.NET WebskillsModern ASP.NET Webskills
Modern ASP.NET Webskills
 
CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26
CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26
CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26
 
Soft arch archevol
Soft arch archevolSoft arch archevol
Soft arch archevol
 
MVC ppt presentation
MVC ppt presentationMVC ppt presentation
MVC ppt presentation
 
unit 1 &2.pdf
unit 1 &2.pdfunit 1 &2.pdf
unit 1 &2.pdf
 

Recently uploaded

Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptxCloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptxMd. Shahidul Islam Prodhan
 
Top 13 Famous Civil Engineering Scientist
Top 13 Famous Civil Engineering ScientistTop 13 Famous Civil Engineering Scientist
Top 13 Famous Civil Engineering Scientistgettygaming1
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdfKamal Acharya
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)MdTanvirMahtab2
 
Antenna efficency lecture course chapter 3.pdf
Antenna  efficency lecture course chapter 3.pdfAntenna  efficency lecture course chapter 3.pdf
Antenna efficency lecture course chapter 3.pdfAbrahamGadissa
 
fundamentals of drawing and isometric and orthographic projection
fundamentals of drawing and isometric and orthographic projectionfundamentals of drawing and isometric and orthographic projection
fundamentals of drawing and isometric and orthographic projectionjeevanprasad8
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdfKamal Acharya
 
Automobile Management System Project Report.pdf
Automobile Management System Project Report.pdfAutomobile Management System Project Report.pdf
Automobile Management System Project Report.pdfKamal Acharya
 
Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.PrashantGoswami42
 
Vaccine management system project report documentation..pdf
Vaccine management system project report documentation..pdfVaccine management system project report documentation..pdf
Vaccine management system project report documentation..pdfKamal Acharya
 
Democratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek AryaDemocratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek Aryaabh.arya
 
Explosives Industry manufacturing process.pdf
Explosives Industry manufacturing process.pdfExplosives Industry manufacturing process.pdf
Explosives Industry manufacturing process.pdf884710SadaqatAli
 
Introduction to Casting Processes in Manufacturing
Introduction to Casting Processes in ManufacturingIntroduction to Casting Processes in Manufacturing
Introduction to Casting Processes in Manufacturingssuser0811ec
 
A case study of cinema management system project report..pdf
A case study of cinema management system project report..pdfA case study of cinema management system project report..pdf
A case study of cinema management system project report..pdfKamal Acharya
 
Hall booking system project report .pdf
Hall booking system project report  .pdfHall booking system project report  .pdf
Hall booking system project report .pdfKamal Acharya
 
shape functions of 1D and 2 D rectangular elements.pptx
shape functions of 1D and 2 D rectangular elements.pptxshape functions of 1D and 2 D rectangular elements.pptx
shape functions of 1D and 2 D rectangular elements.pptxVishalDeshpande27
 
Online resume builder management system project report.pdf
Online resume builder management system project report.pdfOnline resume builder management system project report.pdf
Online resume builder management system project report.pdfKamal Acharya
 
LIGA(E)11111111111111111111111111111111111111111.ppt
LIGA(E)11111111111111111111111111111111111111111.pptLIGA(E)11111111111111111111111111111111111111111.ppt
LIGA(E)11111111111111111111111111111111111111111.pptssuser9bd3ba
 
RS Khurmi Machine Design Clutch and Brake Exercise Numerical Solutions
RS Khurmi Machine Design Clutch and Brake Exercise Numerical SolutionsRS Khurmi Machine Design Clutch and Brake Exercise Numerical Solutions
RS Khurmi Machine Design Clutch and Brake Exercise Numerical SolutionsAtif Razi
 

Recently uploaded (20)

Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptxCloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
 
Top 13 Famous Civil Engineering Scientist
Top 13 Famous Civil Engineering ScientistTop 13 Famous Civil Engineering Scientist
Top 13 Famous Civil Engineering Scientist
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
 
Antenna efficency lecture course chapter 3.pdf
Antenna  efficency lecture course chapter 3.pdfAntenna  efficency lecture course chapter 3.pdf
Antenna efficency lecture course chapter 3.pdf
 
fundamentals of drawing and isometric and orthographic projection
fundamentals of drawing and isometric and orthographic projectionfundamentals of drawing and isometric and orthographic projection
fundamentals of drawing and isometric and orthographic projection
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
 
Automobile Management System Project Report.pdf
Automobile Management System Project Report.pdfAutomobile Management System Project Report.pdf
Automobile Management System Project Report.pdf
 
Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.
 
Vaccine management system project report documentation..pdf
Vaccine management system project report documentation..pdfVaccine management system project report documentation..pdf
Vaccine management system project report documentation..pdf
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
 
Democratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek AryaDemocratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek Arya
 
Explosives Industry manufacturing process.pdf
Explosives Industry manufacturing process.pdfExplosives Industry manufacturing process.pdf
Explosives Industry manufacturing process.pdf
 
Introduction to Casting Processes in Manufacturing
Introduction to Casting Processes in ManufacturingIntroduction to Casting Processes in Manufacturing
Introduction to Casting Processes in Manufacturing
 
A case study of cinema management system project report..pdf
A case study of cinema management system project report..pdfA case study of cinema management system project report..pdf
A case study of cinema management system project report..pdf
 
Hall booking system project report .pdf
Hall booking system project report  .pdfHall booking system project report  .pdf
Hall booking system project report .pdf
 
shape functions of 1D and 2 D rectangular elements.pptx
shape functions of 1D and 2 D rectangular elements.pptxshape functions of 1D and 2 D rectangular elements.pptx
shape functions of 1D and 2 D rectangular elements.pptx
 
Online resume builder management system project report.pdf
Online resume builder management system project report.pdfOnline resume builder management system project report.pdf
Online resume builder management system project report.pdf
 
LIGA(E)11111111111111111111111111111111111111111.ppt
LIGA(E)11111111111111111111111111111111111111111.pptLIGA(E)11111111111111111111111111111111111111111.ppt
LIGA(E)11111111111111111111111111111111111111111.ppt
 
RS Khurmi Machine Design Clutch and Brake Exercise Numerical Solutions
RS Khurmi Machine Design Clutch and Brake Exercise Numerical SolutionsRS Khurmi Machine Design Clutch and Brake Exercise Numerical Solutions
RS Khurmi Machine Design Clutch and Brake Exercise Numerical Solutions
 

Introduction to Configurator 2.0 architecture design

  • 1. Xiaoyan Chen Introduction to Adobe Configurator 2.0 architecture
  • 2. Contents  Demo Configurator 2.0 (C2)  Introduction to C2 architecture  The challenges to C2  The overall picture  The baseline of C2 architecture  More on the MVC  UT  Undo/Redo  The evolutions of C2 architecture  Integrating DV  Model evolution  Extensions through Plug-ins  C2 architecture–put all together  The sequence diagrams of preview  Best practices 2
  • 4. The challenges to C2  A lot of features  Features that have big impacts on the architecture:  Multi lingual panel (high priority feature)  UI layout capability (high priority feature)  Multi product support (medium priority feature)  Flexible requirements from product manager   5 new features introduced after pre-release  Result:  Feature number: 16  Loc: 45K (C2) + 12K (UT) + 25K (FB DB)  Less than 5% of C2 code is legacy code from Configurator 1.0. 4
  • 5. The challenges to C2  Flexibility  Add new widgets  Logic changes in widgets -- avoid shotgun surgery 5 Functions •UI layout capability •Multi lingual panel •Multi product support Non-Function •Flexibility •Testability Constraints •CSXS •Point Product
  • 7. The baseline of C2 architecture  The“baseline”means:  The guidelines at the very core of the architecture  Unchanged things as the architecture evolves 7
  • 8. The baseline of C2 architecture  # 1: This is an MVC architecture  # 2: Data driven and transparency over different kinds of “objects” 8
  • 9. The baseline of C2 architecture # 1: This is an MVC architecture “dispatch events”from UI to the mediator: Drag drop a new object into the panel Move an object in the panel Select object(s) in the outline view Change the width of object(s) using the inspector … 9
  • 10. The baseline of C2 architecture # 1: This is an MVC architecture UI“observe states”from models: Get data from models to populate the inspector The parent-child relationship is changed among the models The attribute values of the models are changed … 10
  • 11. The baseline of C2 architecture # 1: This is an MVC architecture Commands: Execute moving object(s) Execute changing the attribute values of the models Execute copying/pasting … Models Manage data Provide “command” APIs to be called by commands Provide “query”APIs for UI and notify state changes to UI 11
  • 12. The baseline of C2 architecture  # 2: Data driven and transparency over different kinds of “objects”  Data driven: bundle and gpc in xml  Transparency: (considering adding a new type of object)  The palette can display it without code change.  The design view can manage it (move, remove, change attributes, etc) without code change.  The inspector can manage it (observe and change) without code change.  The outline view can manage it (observe and select) without code change. 12
  • 13. The baseline of C2 architecture  # 2: Data driven and transparency over different kinds of “objects”  Data driven: bundle and gpc in xml  Demo bundle and gpc snippets  Important implication: only one model class for different objects, which recursively form a tree structure 13
  • 14. More on the MVC  5 “layers”  Principles:  UI: thin, stupid  Mediator: simple, parameter adjustment  Command: heavy  Proxy: Simple  VO (model): heavy 14
  • 15. More on the MVC - UT 15
  • 16. More on the MVC – Undo/Redo  Bridge between PureMVC and an independent undo/redo library  SimpleUndoCommand.execute() is final, in this method, it pushes itself into the UndoStack.  Subclasses of SimpleUndoCommand focus on logics, don’t care UndoStack and UndoGroup.  IUndoCommand.canMergeWith(IUndoCommand) 16
  • 17. More on the MVC – Undo/Redo  The sequence diagram of pushing a Undoable command into the stack 17
  • 18. More on the MVC – Undo/Redo  The sequence diagram of undoing a command 18
  • 19. The evolutions of C2 architecture–integrating DV  Integrating the design view (DV) of Flex Builder 3.0  DV is a module in FB 3.0 implemented in AS (about 25K LOC).  DV supports MXML editing in a WYSIWYG way.  DV communicates with the other parts (Java code) of FB via ExternalInterface.  The architectural decisions involved:  Implementing the DV functions from scratch in C2 vs.Integrating FB’s DV  If integrating FB’s DV, how to integrate it?  Eliminate the statics in DV or not? 19
  • 20. The evolutions of C2 architecture–integrating DV  The solutions that was taken:  Make code changes to DV as minimal as possible  Compile the DV code to a swf representing a separate DV application.  Simulate what FB does. 20
  • 21. The evolutions of C2 architecture–integrating DV 21 Flex Builder 3.0 C2 Host the DV Use flash player Use a SWFLoader in a separate Calls from non-DV part to DV Callbacks register via ExternalInterface Get the DVFacade (a new wrapper) and call its Calls from DV to non- DV part ExternalInterface.call Inject an object (DVCallHandler) into DV and DV call its APIs Capture user interactions (mouse moves) Java side captures then into DV Use a Canvas covering SWFLoader to capture the mouse moves then calls into DV
  • 22. The evolutions of C2 architecture–integrating DV 22
  • 23. The evolutions of C2 architecture–integrating DV  The sequence diagram of handling drag drop in design view 23
  • 24. The evolutions of C2 architecture–integrating DV  The sequence diagram of adding a new object from palette to panel 24
  • 25. The evolutions of C2 architecture–integrating DV  The sequences:  UI: Oh, mouse event happens!  DesignView: Wait, let’s me check what the user wants to do … oh, he/she wants to move/remove/add/select something.  UI: Got it, but I can not handle it, I will broadcast an event, who cares who does!  Mediator: I know some person who can handle it. Hey, Mr. Command…  Command: Oh, my god, too work load for me!  Model: Hello world, I am changed!  UI: Hi DesignView, Model has been changed, how about you?  DesignView: OK, I will reflect it.  Outline: And me, I also need to reflect it. 25
  • 26. The evolutions of C2 architecture–model evolution  The evolutions of model’s internals are driven by:  GPC schema evolution: try to make the gpc file more like a mxml file  Some features  Remember our baseline #2 26
  • 27. The evolutions of C2 architecture–model evolution  An obvious model evolution caused by PanelLoader  Why PanelLoader? Locale dependent panel layout (contents)  Class diagrams before introducing PanelLoader 27
  • 28. The evolutions of C2 architecture–model evolution  An obvious model evolution caused by PanelLoader  Class diagrams after introducing PanelLoader 28
  • 29. The evolutions of C2 architecture–model evolution  An obvious model evolution caused by PanelLoader  Check the baseline #2  The bundle xml for PanelLoader <element id="panelLoader" classDT="com.adobe.configurator2.component.PanelLoaderDesignTime" classRT="com.adobe.configurator2.component.PanelLoader" extension="configurator.BaseWidgetExtension"> <attr id="url" editor="URL" validator="stringValidator" meta="UI_ACCESSOR" name="$$$/Configurator/Attribute/panelLoaderUrl"/> <attr id="invalidPanelPrompt" inspectable="n" meta="UI_ACCESSOR"/> </element>  (Demo) 29
  • 30. The evolutions of C2 architecture–extensions through Plug- ins  Introduction to the runtime architecture 30
  • 31. The evolutions of C2 architecture–extensions through Plug- ins  Why introducing “extensions through plug-ins”?  Check the classes for handling events dispatched by HTMLWidget 31
  • 32. The evolutions of C2 architecture–extensions through Plug- ins  Why introducing “extensions through plug-ins”?  How to add the PopupPanelButton widget? 32
  • 33. The evolutions of C2 architecture–extensions through Plug- ins  Why introducing “extensions through plug-ins”?  Bad: the model classes are not closed. 33
  • 34. The evolutions of C2 architecture–extensions through Plug- ins  The class diagrams -- Introducing “extensions through plug-ins” 34
  • 35. The evolutions of C2 architecture–extensions through Plug- ins  Introducing “extensions through plug-ins” 35
  • 36. The evolutions of C2 architecture–extensions through Plug- ins  The bundle xml <element id="html" classDT="com.adobe.configurator2.component.HTMLDesignTime" classRT="com.adobe.configurator2.component.HTMLRuntime" extension="configurator.BaseWidgetExtension"> <attr id="htmlText" editor="Text" validator="stringValidator" meta="UI_ACCESSOR" localize="y" name="$$$/Configurator/Attribute/htmlText"/> <attr id="location" editor="URL" validator="stringValidator" meta="UI_ACCESSOR" localize="y" name="$$$/Configurator/Attribute/location"/> <attr id="homeLocation" editor="URL" validator="stringValidator" meta="UI_ACCESSOR" localize="y" name="$$$/Configurator/Attribute/homeLocation"/> <attr id=“htmlevent" inspectable="n" meta="EVENT"/> </element> <droppedObjTemplate id="widget_html"> <html htmlevent=“onHtmlEvent”> <eventListeners> <function id="onHtmlEvent" handler=“com.adobe.configurator2.handler.HtmlHandler“> </function> </eventListeners> </html> </droppedObjTemplate> 36
  • 37. The evolutions of C2 architecture–extensions through Plug- ins  ToDo:  Unify all other “simple”widgets (tools, commands, etc) in such plug-in way (they are core plug-ins), thus making the models not knowing JSGateway. 37
  • 38. C2 architecture–put all together  The C2 architecture diagram 38
  • 39. C2 architecture–put all together  The preview sequence diagram  Preview is special in that it combines “design time” and “run time”. 39
  • 40. Best practices  No up-front architecture, but loose coupling in mind.  Keep nose on the code smell, refactor in time.  Reusing or self-creating?  Careful evaluation  Creative reusing  Partition  Simple methods compose the complex logic of the object.  Simple objects compose the complex logic of the application.  Check your bug fixing: shotgun surgery? 40