Empowering Advanced Users: Extending OutSystems UI Framework with Openness and Extensibility

Bernardo Cardoso
Bernardo CardosoFrontend Engineer
Extending OutSystems UI Framework with
Openness and Extensibility
Bernardo Cardoso
Senior Software Engineer @OutSystems
Empowering Advanced
Users
What you’ll
learn here
1. How we got here
2. Now & Future
• The new vision
• Why
• How
3. Extensibility Vision
4. Demo
5. Public GitHub Repo
6. See you later
How we got here
From Silk to OutSystems UI
2015-2016
Silk UI/ Silk UI Mobile
● Great out-of-the-box defaults.
● Completely closed Patterns.
Extensibility
Developer Experience
2018
OutSystems UI Web
● Increased extensibility & customization with
ExtendedClass and CSS Variables.
● Atomic Design.
● Less emphasis on defaults, as increased
modularity was expected to be used by
developers.
Extensibility
Developer Experience
2015-2016
2019
OutSystems UI
● Continuity of OutSystems UI Web CSS
improvements.
● Loss on the JavasScript extensibility, as
this was a continuation of the old Silk UI
Mobile.
2015-2016
2018
Extensibility
Developer Experience
2019
2022
OutSystems UI (New JS Framework)
● Great increase on extensibility.
● Improvement of the out-of-the-box
defaults and developer experience.
2015-2016
2018
Extensibility
Developer Experience
Now & Future
The new vision
Why
Give more power to customers
Why
Give more power to customers
Improve low-code developer experience
Why
Give more power to customers
Improve low-code developer experience
Why
Improve code quality and security
How
Scalability
How
Scalability
Openness
How
Scalability
Openness
Community driven
How
The tools
A new JavaScript Framework, that holds all Patterns Classes and API’s
used on the low-code side.
Implementation of TypeScript and SCSS.
All done on Visual Studio Code and stored on GitHub.
#scalability
#scalability
Providers
#scalability
Providers
OSFramework
#scalability
OutSystems Low-Code
Providers
OSFramework
OSUI API
#scalability
OutSystems Low-Code
Providers
OSFramework
OSUI API
#scalability
OnInitialize
OnReady
ParametersChange
Destroy
OutSystems.OSUI.<PatternsName>API.Create
OutSystems.OSUI.<PatternsName>API.Initialize
OutSystems.OSUI.<PatternsName>API.ChangeProperty
OutSystems.OSUI.<PatternsName>API.Destroy
OutSystems Low-Code
Providers
OSFramework
OSUI API
#scalability
For more information about the architecture
behind it, check the amazing talk by Ruben
Gonçalves: Building Frameworks: from concept to
completion.
You can also check the public OutSystems UI JS
TypeDocs’s Documentation, with UML Diagrams
with detailed information about properties,
methods, interfaces, inheritance, etc., for each
Pattern’s JS Class.
#openness
Extensibility Vision
Block’s Input Parameters
OutSystems UI Providers Client Actions
OutSystems UI JS API
Custom Code
OutSystems UI Client Actions
Blocks Input Parameters
● Root level
● OptionalConfigs
structures
#openness #scalability
Block’s Input Parameters
OutSystems UI Providers Client Actions
OutSystems UI JS API
Custom Code
OutSystems UI Client Actions
UI Patterns’s Client Actions
● Low-code wrappers for the
API calls on OutSystems UI
JS.
● Covers basic use-cases like
Open/Close/Disabled/etc or
it can be used to offer other
non-essential use-cases,
that wouldn’t fit as Input
Parameters.
#openness #scalability
Block’s Input Parameters
OutSystems UI Providers Client Actions
OutSystems UI JS API
Custom Code
OutSystems UI Client Actions
“The new AdvancedFormat”
● Set[ProviderName]Configs
● Set[ProviderName]Event
● Unset[ProviderName]Event
#openness #scalability
Check a full detailed example on this article:
OutSystems UI Extensibility Part I
https://medium.com/@bernardocardoso/outsystems-ui-extensibility-part-i-f0d5304896ee
Amazing Author
Block’s Input Parameters
OutSystems UI Providers Client Actions
OutSystems UI JS API
Custom Code
OutSystems UI Client Actions
Direct usage of API’s from
OutSystems UI, that are not
covered by Client Actions.
Better to use them on the
Initialized event of each
Pattern.
#openness #scalability
Block’s Input Parameters
OutSystems UI Providers Client Actions
OutSystems UI JS API
Custom Code
OutSystems UI Client Actions
● Extend Pattern’s JS
Classes
● Install OutSystems UI
npm package
● Create new Patterns
using our TypeScript
architecture
● Generate your own scss
theme.
#openness #scalability
Check a full detailed example on this article:
OutSystems UI Extensibility Part II
https://medium.com/@bernardocardoso/outsystems-ui-extensibility-part-ii-dd35da19de4e
Amazing Author
Approachability
C
o
m
p
l
e
x
i
t
y
Block’s Input Parameters
OutSystems UI Providers Client Actions
OutSystems UI JS API
Custom Code
OutSystems UI Client Actions
Configurability
(OutSystems Low-Code)
More extensibility solutions
abstracted to low-code.
#openness #scalability
Approachability
C
o
m
p
l
e
x
i
t
y
Block’s Input Parameters
OutSystems UI Providers Client Actions
OutSystems UI JS API
Custom Code
OutSystems UI Client Actions
High Code
(JavaScript/TypeScript)
More freedom for advanced
developers, that know and
want to have control of the
code behind the UI Patterns.
#openness #scalability
Configurability
(OutSystems Low-Code)
More extensibility solutions
abstracted to low-code.
Extensibility Example
Install npm package & extend UI Pattern’s
JS Class
Github Repo
#openness #community-driven
OutSystems UI npm package
OutSystems UI Git Repository
PR’s are very much
welcomed! 👍
OutSystems UI npm package
OutSystems UI Git Repository
PR’s are very much
welcomed! 👍
#openness #community-driven
https://medium.com/@bernardocardoso
https://www.linkedin.com/in/bernardo-cardoso-0a740b95/
Thank You
Bernardo Cardoso
Senior Software Engineer @OutSystems
40
RATE THE SESSION
Go to the app > agenda > select the session > rate.
Extending OutSystems UI Framework with
Openness and Extensibility
Empowering Advanced
Users
1 de 41

Recomendados

Characteristics of Embedded Systems por
Characteristics of Embedded SystemsCharacteristics of Embedded Systems
Characteristics of Embedded SystemsShreyaBhoje
310 vistas19 diapositivas
Microprocessors por
MicroprocessorsMicroprocessors
MicroprocessorsRajat Dhiman
3.4K vistas19 diapositivas
Arm cortex R(real time)processor series por
Arm cortex R(real time)processor series Arm cortex R(real time)processor series
Arm cortex R(real time)processor series Ronak047
1.6K vistas12 diapositivas
OMAP por
OMAPOMAP
OMAPnmitmtech-2016
13.3K vistas44 diapositivas
Vlsi design flow por
Vlsi design flowVlsi design flow
Vlsi design flowRajendra Kumar
4.9K vistas15 diapositivas
PPT ON PCB DESIGN INTERNSHIP por
PPT ON PCB DESIGN INTERNSHIPPPT ON PCB DESIGN INTERNSHIP
PPT ON PCB DESIGN INTERNSHIPSujoyHalder4
2.7K vistas30 diapositivas

Más contenido relacionado

La actualidad más candente

DRAM por
DRAMDRAM
DRAMrohitladdu
20.9K vistas28 diapositivas
Embedded system in Smart Cards por
Embedded system in Smart CardsEmbedded system in Smart Cards
Embedded system in Smart CardsRebecca D'souza
4.3K vistas9 diapositivas
Dynamic logic circuits por
Dynamic logic circuitsDynamic logic circuits
Dynamic logic circuitsKalyan Kumar Kalita
18.4K vistas24 diapositivas
VLSI Power Reduction por
VLSI Power ReductionVLSI Power Reduction
VLSI Power ReductionMahesh Dananjaya
6K vistas33 diapositivas
Fpga(field programmable gate array) por
Fpga(field programmable gate array) Fpga(field programmable gate array)
Fpga(field programmable gate array) Iffat Anjum
6.7K vistas41 diapositivas
Architecture of 16C6X por
Architecture of 16C6XArchitecture of 16C6X
Architecture of 16C6Xv Kalairajan
3.3K vistas13 diapositivas

La actualidad más candente(20)

Embedded system in Smart Cards por Rebecca D'souza
Embedded system in Smart CardsEmbedded system in Smart Cards
Embedded system in Smart Cards
Rebecca D'souza4.3K vistas
Fpga(field programmable gate array) por Iffat Anjum
Fpga(field programmable gate array) Fpga(field programmable gate array)
Fpga(field programmable gate array)
Iffat Anjum6.7K vistas
Architecture of 16C6X por v Kalairajan
Architecture of 16C6XArchitecture of 16C6X
Architecture of 16C6X
v Kalairajan3.3K vistas
System On Chip por anishgoel
System On ChipSystem On Chip
System On Chip
anishgoel58.5K vistas
MICROCONTROLLER 8051- Architecture & Pin Configuration por AKHIL MADANKAR
MICROCONTROLLER 8051- Architecture & Pin Configuration MICROCONTROLLER 8051- Architecture & Pin Configuration
MICROCONTROLLER 8051- Architecture & Pin Configuration
AKHIL MADANKAR10.3K vistas
Fabrication process of Integrated Circuit (IC's) por COMSATS Abbottabad
Fabrication process of Integrated Circuit (IC's)Fabrication process of Integrated Circuit (IC's)
Fabrication process of Integrated Circuit (IC's)
COMSATS Abbottabad26.9K vistas
Microcontroller 8051 por Sadiq Rahim
Microcontroller 8051Microcontroller 8051
Microcontroller 8051
Sadiq Rahim1.2K vistas
1. FPGA architectures.pdf por TesfuFiseha1
1. FPGA architectures.pdf1. FPGA architectures.pdf
1. FPGA architectures.pdf
TesfuFiseha1143 vistas
Language for Embedded System por vkrhanjeeth .
Language for Embedded System Language for Embedded System
Language for Embedded System
vkrhanjeeth .1.5K vistas
Mos transistor por Murali Rai
Mos transistorMos transistor
Mos transistor
Murali Rai6.5K vistas
Power dissipation cmos por Rajesh Tiwary
Power dissipation cmosPower dissipation cmos
Power dissipation cmos
Rajesh Tiwary22.8K vistas
Snapdragon SoC and ARMv7 Architecture por Santosh Verma
Snapdragon SoC and ARMv7 ArchitectureSnapdragon SoC and ARMv7 Architecture
Snapdragon SoC and ARMv7 Architecture
Santosh Verma3.2K vistas

Similar a Empowering Advanced Users: Extending OutSystems UI Framework with Openness and Extensibility

Introduction to UX for Mesiniaga Academy por
Introduction to UX for Mesiniaga AcademyIntroduction to UX for Mesiniaga Academy
Introduction to UX for Mesiniaga AcademyZainul Zain
387 vistas67 diapositivas
Play with azure functions por
Play with azure functionsPlay with azure functions
Play with azure functionsBaskar rao Dsn
105 vistas28 diapositivas
Azure Functions in Action #CodePaLOUsa por
Azure Functions in Action #CodePaLOUsaAzure Functions in Action #CodePaLOUsa
Azure Functions in Action #CodePaLOUsaBaskar rao Dsn
93 vistas26 diapositivas
Tips for Beginning Cognos Report Studio Authors: Demonstration of Techniques por
Tips for Beginning Cognos Report Studio Authors: Demonstration of TechniquesTips for Beginning Cognos Report Studio Authors: Demonstration of Techniques
Tips for Beginning Cognos Report Studio Authors: Demonstration of TechniquesSenturus
735 vistas34 diapositivas
Udvid din test portefølje med coded ui test og cloud load test por
Udvid din test portefølje med coded ui test og cloud load testUdvid din test portefølje med coded ui test og cloud load test
Udvid din test portefølje med coded ui test og cloud load testPeter Lindberg
1.5K vistas39 diapositivas
King Tut Architecture por
King Tut ArchitectureKing Tut Architecture
King Tut ArchitectureGary Pedretti
1.2K vistas46 diapositivas

Similar a Empowering Advanced Users: Extending OutSystems UI Framework with Openness and Extensibility(20)

Introduction to UX for Mesiniaga Academy por Zainul Zain
Introduction to UX for Mesiniaga AcademyIntroduction to UX for Mesiniaga Academy
Introduction to UX for Mesiniaga Academy
Zainul Zain387 vistas
Azure Functions in Action #CodePaLOUsa por Baskar rao Dsn
Azure Functions in Action #CodePaLOUsaAzure Functions in Action #CodePaLOUsa
Azure Functions in Action #CodePaLOUsa
Baskar rao Dsn93 vistas
Tips for Beginning Cognos Report Studio Authors: Demonstration of Techniques por Senturus
Tips for Beginning Cognos Report Studio Authors: Demonstration of TechniquesTips for Beginning Cognos Report Studio Authors: Demonstration of Techniques
Tips for Beginning Cognos Report Studio Authors: Demonstration of Techniques
Senturus735 vistas
Udvid din test portefølje med coded ui test og cloud load test por Peter Lindberg
Udvid din test portefølje med coded ui test og cloud load testUdvid din test portefølje med coded ui test og cloud load test
Udvid din test portefølje med coded ui test og cloud load test
Peter Lindberg1.5K vistas
King Tut Architecture por Gary Pedretti
King Tut ArchitectureKing Tut Architecture
King Tut Architecture
Gary Pedretti1.2K vistas
Shield UI JavaScript Chart por JStoikov
Shield UI JavaScript ChartShield UI JavaScript Chart
Shield UI JavaScript Chart
JStoikov3.2K vistas
Transitioning to Cognos Workspace Advanced: Migrating from Query & Analysis S... por Senturus
Transitioning to Cognos Workspace Advanced: Migrating from Query & Analysis S...Transitioning to Cognos Workspace Advanced: Migrating from Query & Analysis S...
Transitioning to Cognos Workspace Advanced: Migrating from Query & Analysis S...
Senturus1.9K vistas
Sitecore user group mumbai sitecore commerce extension por Jitendra Soni
Sitecore user group mumbai  sitecore commerce extensionSitecore user group mumbai  sitecore commerce extension
Sitecore user group mumbai sitecore commerce extension
Jitendra Soni50 vistas
Ahmedabad Salesforce Meetup por Shankar Sharma
Ahmedabad Salesforce MeetupAhmedabad Salesforce Meetup
Ahmedabad Salesforce Meetup
Shankar Sharma351 vistas
CookpadTechConf2018-(Mobile)TestAutomation por Kazuaki Matsuo
CookpadTechConf2018-(Mobile)TestAutomationCookpadTechConf2018-(Mobile)TestAutomation
CookpadTechConf2018-(Mobile)TestAutomation
Kazuaki Matsuo3.1K vistas
Getting Started With Coded UI testing: Building Your First Automated Test por Imaginet
Getting Started With Coded UI testing: Building Your First Automated TestGetting Started With Coded UI testing: Building Your First Automated Test
Getting Started With Coded UI testing: Building Your First Automated Test
Imaginet1.5K vistas
Where Does IBM Web Experience Factory Fit in your Architecture? TECH-D22 from... por Davalen LLC
Where Does IBM Web Experience Factory Fit in your Architecture? TECH-D22 from...Where Does IBM Web Experience Factory Fit in your Architecture? TECH-D22 from...
Where Does IBM Web Experience Factory Fit in your Architecture? TECH-D22 from...
Davalen LLC4.9K vistas
TomaszPoszytek_ALM-Fundamentals_SS2023.pdf por Tomasz Poszytek
TomaszPoszytek_ALM-Fundamentals_SS2023.pdfTomaszPoszytek_ALM-Fundamentals_SS2023.pdf
TomaszPoszytek_ALM-Fundamentals_SS2023.pdf
Tomasz Poszytek16 vistas

Último

EV Charging App Case por
EV Charging App Case EV Charging App Case
EV Charging App Case iCoderz Solutions
10 vistas1 diapositiva
Quality Engineer: A Day in the Life por
Quality Engineer: A Day in the LifeQuality Engineer: A Day in the Life
Quality Engineer: A Day in the LifeJohn Valentino
10 vistas18 diapositivas
Supercharging your Python Development Environment with VS Code and Dev Contai... por
Supercharging your Python Development Environment with VS Code and Dev Contai...Supercharging your Python Development Environment with VS Code and Dev Contai...
Supercharging your Python Development Environment with VS Code and Dev Contai...Dawn Wages
5 vistas51 diapositivas
Introduction to Maven por
Introduction to MavenIntroduction to Maven
Introduction to MavenJohn Valentino
7 vistas10 diapositivas
.NET Deserialization Attacks por
.NET Deserialization Attacks.NET Deserialization Attacks
.NET Deserialization AttacksDharmalingam Ganesan
7 vistas50 diapositivas
Playwright Retries por
Playwright RetriesPlaywright Retries
Playwright Retriesartembondar5
7 vistas1 diapositiva

Último(20)

Quality Engineer: A Day in the Life por John Valentino
Quality Engineer: A Day in the LifeQuality Engineer: A Day in the Life
Quality Engineer: A Day in the Life
John Valentino10 vistas
Supercharging your Python Development Environment with VS Code and Dev Contai... por Dawn Wages
Supercharging your Python Development Environment with VS Code and Dev Contai...Supercharging your Python Development Environment with VS Code and Dev Contai...
Supercharging your Python Development Environment with VS Code and Dev Contai...
Dawn Wages5 vistas
Mobile App Development Company por Richestsoft
Mobile App Development CompanyMobile App Development Company
Mobile App Development Company
Richestsoft 5 vistas
Transport Management System - Shipment & Container Tracking por Freightoscope
Transport Management System - Shipment & Container TrackingTransport Management System - Shipment & Container Tracking
Transport Management System - Shipment & Container Tracking
Freightoscope 6 vistas
aATP - New Correlation Confirmation Feature.pptx por EsatEsenek1
aATP - New Correlation Confirmation Feature.pptxaATP - New Correlation Confirmation Feature.pptx
aATP - New Correlation Confirmation Feature.pptx
EsatEsenek1222 vistas
How to build dyanmic dashboards and ensure they always work por Wiiisdom
How to build dyanmic dashboards and ensure they always workHow to build dyanmic dashboards and ensure they always work
How to build dyanmic dashboards and ensure they always work
Wiiisdom16 vistas
Understanding HTML terminology por artembondar5
Understanding HTML terminologyUnderstanding HTML terminology
Understanding HTML terminology
artembondar58 vistas
Dapr Unleashed: Accelerating Microservice Development por Miroslav Janeski
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice Development
Miroslav Janeski16 vistas
Top-5-production-devconMunich-2023-v2.pptx por Tier1 app
Top-5-production-devconMunich-2023-v2.pptxTop-5-production-devconMunich-2023-v2.pptx
Top-5-production-devconMunich-2023-v2.pptx
Tier1 app9 vistas
JioEngage_Presentation.pptx por admin125455
JioEngage_Presentation.pptxJioEngage_Presentation.pptx
JioEngage_Presentation.pptx
admin1254559 vistas

Empowering Advanced Users: Extending OutSystems UI Framework with Openness and Extensibility