SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
Getting Started with 
QCMagritte 
Diego Lont & Stephan Eggermont 
• Download a QCMagritte image from 
http://ci.inria.org/pharo-contribution/QCMagritte 
• Download a pharo vm from 
http://get.pharo.org 
• Download a QCMagritte demo from 
http://smalltalkhub.com/mc/DiegoLont/QCMagritteDemo 
dinsdag 19 augustus 14
What is QC-Magritte 
• Application level framework 
• On top of Seaside and Magritte 
• Provides re-usable parts for common tasks 
dinsdag 19 augustus 14
QCMagritte supports ... 
Application 
Template 
Influences 
(AJAX) 
Table support 
Search 
(Queries) 
Application 
navigation 
Multi-language 
User 
management 
Commands 
Hierarchical 
domain 
structure 
Menu 
structure 
dinsdag 19 augustus 14
Example: CI 
• Continuous Integration Server 
• Not focus of the talk 
• Predefined with Magritte definitions 
dinsdag 19 augustus 14
CI Model 
CI-Model Trigger 
Configuration 
Build 
Definition 
PProrojejecct t Project 
BBuuilidld Build 
Build 
Step 
Build 
Step 
Build 
Step 
Trigger 
dinsdag 19 augustus 14
Demo 
• View magritte descriptions in model 
dinsdag 19 augustus 14
Template 
• Application 
• Seaside application, registering itself 
• Points to model 
• Creates menu 
• Model 
• Describes entry points for entire domain 
• Defines builders used to generate components 
dinsdag 19 augustus 14
Bootstrap template 
QCBootstrapApplication subclass: #CIBuildServerApplication 
CIBuildServerApplication>>title 
^'Demo CI' 
CIBuildServerApplication>>model 
^CIBuildServerModel default 
CIBuildServerApplication class>>applicationName 
^'Demo CI' 
QCBootstrapApplicationModel subclass: #CIBuildServerModel 
dinsdag 19 augustus 14
Demo 
• Show code 
• Run tutorial:1 
• Show application 
• Add 2 projects 
• 1 project defines steps and triggers 
dinsdag 19 augustus 14
Default commands 
• CRUD 
• User rights 
• Domain constraints 
CIProject>>canRemove 
^self builds isEmpty 
dinsdag 19 augustus 14
Custom commands 
• Domain object has containerActions 
• Label 
• Condition 
• Action 
CIProject>>containerActions: aContainer 
<magritteContainer> 
^aContainer 
addCommand: 'build' condition: #canBuild action: #startBuild; 
yourself 
dinsdag 19 augustus 14
Custom components 
• Easy extend model with custom components 
• Demo: add status description + component 
dinsdag 19 augustus 14
User Management 
• Only allow changes by logged in users 
• Restrict access to views/actions 
• Controlled by “hasUserManagent” 
• Defaults to true if there is an admin user 
• (CRUD) Rights and roles model. 
dinsdag 19 augustus 14
Demo 
• Add user management 
dinsdag 19 augustus 14
QCMagritte supports ... 
Application 
Template 
Influences 
(AJAX) 
Table 
Support 
Search 
(Queries) 
Application 
navigation 
Multi-language 
User 
management 
Commands 
Hierarchical 
domain 
structure 
Menu 
structure 
dinsdag 19 augustus 14
Influences 
• disable timeout 
• user first, last name 
• How to avoid cycles 
dinsdag 19 augustus 14
Application navigation 
• Mostly announcement based (still some call’s left, 
slowly being replaced) 
• QCPageChoice shows how 
dinsdag 19 augustus 14
Parent Object 
• Hierarchical ownership model for the domain 
• Only one owner: parent 
• Backlink to model = parent model 
• QCQueriedToManyComponent 
• search support 
• newInstance sets parent if needed 
dinsdag 19 augustus 14
Multilanguage 
• In-application support for multiple languages 
• Each user can have own language preference 
• Application has default language 
• Keep default values for untranslated 
• Default translation of labels, groups, comments, 
error messages. Others: asMultilanguageString 
dinsdag 19 augustus 14
Search 
• Model-wide search, from a starting point 
• Description-type specific 
• everything transformed to string representation 
dinsdag 19 augustus 14
Table support 
• Select on field values, smart filter 
• Sorting 
• Export CSV 
• Select columns 
• Add calculated columns 
dinsdag 19 augustus 14
Menu structure 
• Tree based, announcements 
• Autocollapse: expand current selection 
dinsdag 19 augustus 14

Mais conteúdo relacionado

Mais de ESUG

Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 
gt4atproto, A Programmable Environment for Social Media
gt4atproto, A Programmable Environment for Social Mediagt4atproto, A Programmable Environment for Social Media
gt4atproto, A Programmable Environment for Social Media
ESUG
 

Mais de ESUG (20)

Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 
BioSmalltalk
BioSmalltalkBioSmalltalk
BioSmalltalk
 
gt4atproto, A Programmable Environment for Social Media
gt4atproto, A Programmable Environment for Social Mediagt4atproto, A Programmable Environment for Social Media
gt4atproto, A Programmable Environment for Social Media
 
Roassal3 update
Roassal3 updateRoassal3 update
Roassal3 update
 
VASER Control: Smart Energy
VASER Control: Smart EnergyVASER Control: Smart Energy
VASER Control: Smart Energy
 
Do you know your browser?
Do you know your browser?Do you know your browser?
Do you know your browser?
 
News on Bloc for Pharo
News on Bloc for PharoNews on Bloc for Pharo
News on Bloc for Pharo
 

Último

%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 

Último (20)

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 

Getting Started with QCMagritte

  • 1. Getting Started with QCMagritte Diego Lont & Stephan Eggermont • Download a QCMagritte image from http://ci.inria.org/pharo-contribution/QCMagritte • Download a pharo vm from http://get.pharo.org • Download a QCMagritte demo from http://smalltalkhub.com/mc/DiegoLont/QCMagritteDemo dinsdag 19 augustus 14
  • 2. What is QC-Magritte • Application level framework • On top of Seaside and Magritte • Provides re-usable parts for common tasks dinsdag 19 augustus 14
  • 3. QCMagritte supports ... Application Template Influences (AJAX) Table support Search (Queries) Application navigation Multi-language User management Commands Hierarchical domain structure Menu structure dinsdag 19 augustus 14
  • 4. Example: CI • Continuous Integration Server • Not focus of the talk • Predefined with Magritte definitions dinsdag 19 augustus 14
  • 5. CI Model CI-Model Trigger Configuration Build Definition PProrojejecct t Project BBuuilidld Build Build Step Build Step Build Step Trigger dinsdag 19 augustus 14
  • 6. Demo • View magritte descriptions in model dinsdag 19 augustus 14
  • 7. Template • Application • Seaside application, registering itself • Points to model • Creates menu • Model • Describes entry points for entire domain • Defines builders used to generate components dinsdag 19 augustus 14
  • 8. Bootstrap template QCBootstrapApplication subclass: #CIBuildServerApplication CIBuildServerApplication>>title ^'Demo CI' CIBuildServerApplication>>model ^CIBuildServerModel default CIBuildServerApplication class>>applicationName ^'Demo CI' QCBootstrapApplicationModel subclass: #CIBuildServerModel dinsdag 19 augustus 14
  • 9. Demo • Show code • Run tutorial:1 • Show application • Add 2 projects • 1 project defines steps and triggers dinsdag 19 augustus 14
  • 10. Default commands • CRUD • User rights • Domain constraints CIProject>>canRemove ^self builds isEmpty dinsdag 19 augustus 14
  • 11. Custom commands • Domain object has containerActions • Label • Condition • Action CIProject>>containerActions: aContainer <magritteContainer> ^aContainer addCommand: 'build' condition: #canBuild action: #startBuild; yourself dinsdag 19 augustus 14
  • 12. Custom components • Easy extend model with custom components • Demo: add status description + component dinsdag 19 augustus 14
  • 13. User Management • Only allow changes by logged in users • Restrict access to views/actions • Controlled by “hasUserManagent” • Defaults to true if there is an admin user • (CRUD) Rights and roles model. dinsdag 19 augustus 14
  • 14. Demo • Add user management dinsdag 19 augustus 14
  • 15. QCMagritte supports ... Application Template Influences (AJAX) Table Support Search (Queries) Application navigation Multi-language User management Commands Hierarchical domain structure Menu structure dinsdag 19 augustus 14
  • 16. Influences • disable timeout • user first, last name • How to avoid cycles dinsdag 19 augustus 14
  • 17. Application navigation • Mostly announcement based (still some call’s left, slowly being replaced) • QCPageChoice shows how dinsdag 19 augustus 14
  • 18. Parent Object • Hierarchical ownership model for the domain • Only one owner: parent • Backlink to model = parent model • QCQueriedToManyComponent • search support • newInstance sets parent if needed dinsdag 19 augustus 14
  • 19. Multilanguage • In-application support for multiple languages • Each user can have own language preference • Application has default language • Keep default values for untranslated • Default translation of labels, groups, comments, error messages. Others: asMultilanguageString dinsdag 19 augustus 14
  • 20. Search • Model-wide search, from a starting point • Description-type specific • everything transformed to string representation dinsdag 19 augustus 14
  • 21. Table support • Select on field values, smart filter • Sorting • Export CSV • Select columns • Add calculated columns dinsdag 19 augustus 14
  • 22. Menu structure • Tree based, announcements • Autocollapse: expand current selection dinsdag 19 augustus 14