SlideShare a Scribd company logo
Matt Nolan
CTO, FOEX GmbH
Unlocking the Power of the
APEX Plugin Architecture
Why APEX?
Unlocking the power of the APEX Plugin Architecture
Missing Tools
Missing Tools
1. Display a List of images from the DB
2. Display on all device types (Phone, Tablet, Desktop)
3. > 1000 images AND > 1000 users
4. Load on Scroll
5. Quickly switch between multiple viewing styles i.e. templates
6. Re-order the images via drag & drop
7. Edit image file names and descriptions inline (added for KSCOPE17)
Real Example
(Requirements)
Standard APEX Demo
1. Display a List of images from the DB
2. Display on all device types (Phone, Tablet, Desktop)
3. > 1000 images AND > 1000 users
4. Load on Scroll
5. Quickly switch between multiple viewing styles i.e. templates
6. Re-order the images via drag & drop
7. Edit image file names and descriptions inline (added for KSCOPE17)
Real Example
(Requirements)
1.All images will be displayed at once even if they are hidden.
This will be a serious performance issue
2.Changing viewing styles will require 2+ regions and 2+ sets
of the same data/multiple queries
3.Existing APEX Lists have no refresh or pagination capability.
It’s all or nothing!
4.There is no inline editing capability
5.We can provide a responsive view using the Universal
Theme
Can I use Standard APEX?
Can I extend APEX?
What can I do?
• Responsive Design: Universal Theme
• Multiple Viewing Styles: http://www.slideshare.net/MarkoGoriki/speed-
up-your-apex-apps-with-json-and-handlebars
• Lazy Loading: https://github.com/emn178/jquery-lazyload-any
• Load on Scroll: http://jscroll.com/
• Drag & Drop: http://rimblas.com/blog/2016/08/implementing-drag-drop-
in-your-apex-applications/
• Editing: http://slides.com/rimblas/deliver-a-knockout-with-your-apex-
applications
Research Results
Will writing a HowTo Suffice?
• Separates Developer Responsibilities
• The Focus is on Design
• They are Modular & Reusable
• Loosely Coupled
• Encapsulates Complexity
• Simplifies how you Document
• Easy to Version Control
• Certify against versions of APEX
• Decreases Mistakes
• Increases Development Speed
• Provides Code Centralisation
• Improves Upgradeability
• Easy to Identify Plugin Usage
• Easy to Share (Social)
• Boosts your Developer Profile
• Promotes Testing & Demo creation
Benefits of Plugins
I don’t have time?
What Plugins Can I Build?
• Region Plugins
• Item Plugins
• Dynamic Action Plugins
• Process Plugins
• Authentication Plugins
• Authorization Scheme Plugins
What skills do I need?
• APEX World
• Apex-Plugin.com
• OTN
• Packaged Applications
• GitHub - look at the code
Existing Plugins
APEX Libraries
• Skill set
• Complexity
• Time
• Cost
• Benefit
• Support
What Should I Consider?
What Should I Consider?
• Target Multiple Devices
• Keeping it generic and as simple as possible
• simple configuration & hide complexity
• reduce/eliminate coding requirements for developers
• Abstract your JS API with one or more Dynamic Actions
• Give Advanced Developers Control
• Globalisation / Translation
• APEX_PLUGIN_UTIL
• APEX_JSON
• APEX_ESCAPE
• APEX_DEBUG
• APEX_JAVASCRIPT & APEX_CSS
• APEX_WEBSERVICES
• You have the full capabilities of the Database
• APEX Javascript API’s e.g. apex.server, apex.event, apex.debug
• jQuery - promises, deferreds, millions of plugins
Useful API’s
What about performance?Increasing Performance
Client Side Templating
Performance
(Borrowed From Marko Goriki’s Presentation)
Execution Time Response Size (KB)
75% Reduction50% Reduction
APEX “Image Cards” Template
Mustache Template
1. Add loop control {{#each data}}
2. Replace #NAME# with {{NAME}}
Adding Lazy Loading
Adding Editing
Unlocking the power of the APEX Plugin Architecture
Adding Editing
Plugin Javascript Design
Javascript
Design
jQuery UI Widget
https://learn.jquery.com/jquery-ui/widget-factory/how-to-use-the-widget-factory/
jQuery UI Widget
https://learn.jquery.com/jquery-ui/widget-factory/how-to-use-the-widget-factory/
Demo
Solution
• 124 lines of PLSQL
• 797 lines of Javascript
• 5 Javascript Libraries
• 2 APEX Plugins
• 1 Demo application
• Documentation
• Time spent: 5 days
• Cost Estimate: 4,000 USD
1. Display a List of images from the DB
2. Display on all device types (Phone,
Tablet, Desktop)
3. > 1000 images AND > 1000 users
4. Load on Scroll
5. Quickly switch between multiple
viewing styles i.e. templates
6. Re-order the images via drag & drop
7. Edit & Save filename/description
=
What does the code look like?
• Use APEX API’s and (Reputable) 3rd Party Libraries
• Use Packages for your PLSQL
• Place Files on the web server for performance
• Expose events in your plugin
• Provide an associated Dynamic action as an API
• Document Usage & Provide Demos
• Use version control
• Utilise File Substitutions
• Use the Publish & Subscribe feature for centralisation
ā'pěks(#orclapex)
Questions?
@FOEXplugins
FOEX-gmbh
FOEXplugins
Let’s connect:
Thank You !
@Matt_FOEX
www.tryfoexnow.com

More Related Content

PPTX
Browser Developer Tools
PPT
"Spring Boot. Boot up your development" Сергей Моренец
PDF
Agile documentation with Confluence and Sparx Enterprise Architect
PPTX
[Patel] SPFx: An ISV Insight into latest Microsoft's customization model
PPTX
Microsoft Azure WebJobs
PDF
C# Advanced L10-Workflow Foundation
PPTX
Asp.net core 1.0 (Peter Himschoot)
PPT
Netbeans 6.1 Talk
Browser Developer Tools
"Spring Boot. Boot up your development" Сергей Моренец
Agile documentation with Confluence and Sparx Enterprise Architect
[Patel] SPFx: An ISV Insight into latest Microsoft's customization model
Microsoft Azure WebJobs
C# Advanced L10-Workflow Foundation
Asp.net core 1.0 (Peter Himschoot)
Netbeans 6.1 Talk

What's hot (20)

PDF
Write Once, Run Everywhere - Ember.js Munich
PDF
Introduction to Selenium Webdriver - SpringPeople
PPTX
Deep-dive building solutions on the SharePoint Framework
PDF
Building cross platform web apps
PPTX
ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...
PDF
Get Started with ASP.NET Core Training, Tutorial - Beginner to Advance
PDF
Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"
PDF
Microsoft Azure Websites Webjobs
PPTX
Building your first android app using xamarin (Gill Cleeren)
PDF
SpringPeople Introduction to iOS Apps Development
PDF
Jfokus 2015 - Immutable Server generation: the new App Deployment
PDF
C# Advanced L01-Intro and Warmup
PPTX
Techorama 2019 - ASP.NET Core One Hour Makeover
PDF
Create SASSy web parts in SPFx
PPTX
ECS 19 - Chris O'Brien - The hit list - Office 365 dev techniques you should ...
PDF
SPUnite17 Timer Jobs Event Handlers
PDF
O365Con18 - Using ARM Templates to Deploy Solutions on Azure - Kevin Timmermann
PPTX
SharePoint Framework - Developer Preview
PDF
Website building exercise
PPTX
SharePoint Development with the SharePoint Framework
Write Once, Run Everywhere - Ember.js Munich
Introduction to Selenium Webdriver - SpringPeople
Deep-dive building solutions on the SharePoint Framework
Building cross platform web apps
ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...
Get Started with ASP.NET Core Training, Tutorial - Beginner to Advance
Michael North "Ember.js 2 - Future-friendly ambitious apps, that scale!"
Microsoft Azure Websites Webjobs
Building your first android app using xamarin (Gill Cleeren)
SpringPeople Introduction to iOS Apps Development
Jfokus 2015 - Immutable Server generation: the new App Deployment
C# Advanced L01-Intro and Warmup
Techorama 2019 - ASP.NET Core One Hour Makeover
Create SASSy web parts in SPFx
ECS 19 - Chris O'Brien - The hit list - Office 365 dev techniques you should ...
SPUnite17 Timer Jobs Event Handlers
O365Con18 - Using ARM Templates to Deploy Solutions on Azure - Kevin Timmermann
SharePoint Framework - Developer Preview
Website building exercise
SharePoint Development with the SharePoint Framework
Ad

Similar to Unlocking the power of the APEX Plugin Architecture (20)

PDF
UKLUG 2012 - XPages, Beyond the basics
PPTX
Oracle OpenWorld 2014 Review Part Four - PaaS Middleware
PPTX
Oracle Apex Technical Introduction
PDF
The future of web development write once, run everywhere with angular js an...
PPTX
The future of web development write once, run everywhere with angular.js and ...
PPT
Evolutionary Database Design
PDF
Angular - Chapter 1 - Introduction
PDF
APEX 4.2 New Features
PDF
APEX Application Lifecycle and Deployment 20220714.pdf
PDF
JavaFX Enterprise (JavaOne 2014)
PDF
WebNet Conference 2012 - Designing complex applications using html5 and knock...
PPTX
Accelerating time to delivery: Modernizing Application Development
KEY
Developing High Performance Web Apps - CodeMash 2011
PDF
WebObjects Developer Tools
PPTX
Single Page Applications: Your Browser is the OS!
PPT
Liquibase – a time machine for your data
PPTX
[DanNotes] XPages - Beyound the Basics
PDF
APEX Alpe Adria Mike Hichwa Keynote April 11th 2019- Zagreb
PDF
SPUnite17 Building Great Client Side Web Parts with SPFx
PDF
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
UKLUG 2012 - XPages, Beyond the basics
Oracle OpenWorld 2014 Review Part Four - PaaS Middleware
Oracle Apex Technical Introduction
The future of web development write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular.js and ...
Evolutionary Database Design
Angular - Chapter 1 - Introduction
APEX 4.2 New Features
APEX Application Lifecycle and Deployment 20220714.pdf
JavaFX Enterprise (JavaOne 2014)
WebNet Conference 2012 - Designing complex applications using html5 and knock...
Accelerating time to delivery: Modernizing Application Development
Developing High Performance Web Apps - CodeMash 2011
WebObjects Developer Tools
Single Page Applications: Your Browser is the OS!
Liquibase – a time machine for your data
[DanNotes] XPages - Beyound the Basics
APEX Alpe Adria Mike Hichwa Keynote April 11th 2019- Zagreb
SPUnite17 Building Great Client Side Web Parts with SPFx
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Ad

Recently uploaded (20)

PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Empathic Computing: Creating Shared Understanding
PDF
Encapsulation theory and applications.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
cuic standard and advanced reporting.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Machine learning based COVID-19 study performance prediction
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Empathic Computing: Creating Shared Understanding
Encapsulation theory and applications.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
MYSQL Presentation for SQL database connectivity
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
20250228 LYD VKU AI Blended-Learning.pptx
Approach and Philosophy of On baking technology
Diabetes mellitus diagnosis method based random forest with bat algorithm
cuic standard and advanced reporting.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Spectral efficient network and resource selection model in 5G networks
The Rise and Fall of 3GPP – Time for a Sabbatical?
Digital-Transformation-Roadmap-for-Companies.pptx
Machine learning based COVID-19 study performance prediction

Unlocking the power of the APEX Plugin Architecture

  • 1. Matt Nolan CTO, FOEX GmbH Unlocking the Power of the APEX Plugin Architecture
  • 6. 1. Display a List of images from the DB 2. Display on all device types (Phone, Tablet, Desktop) 3. > 1000 images AND > 1000 users 4. Load on Scroll 5. Quickly switch between multiple viewing styles i.e. templates 6. Re-order the images via drag & drop 7. Edit image file names and descriptions inline (added for KSCOPE17) Real Example (Requirements)
  • 8. 1. Display a List of images from the DB 2. Display on all device types (Phone, Tablet, Desktop) 3. > 1000 images AND > 1000 users 4. Load on Scroll 5. Quickly switch between multiple viewing styles i.e. templates 6. Re-order the images via drag & drop 7. Edit image file names and descriptions inline (added for KSCOPE17) Real Example (Requirements)
  • 9. 1.All images will be displayed at once even if they are hidden. This will be a serious performance issue 2.Changing viewing styles will require 2+ regions and 2+ sets of the same data/multiple queries 3.Existing APEX Lists have no refresh or pagination capability. It’s all or nothing! 4.There is no inline editing capability 5.We can provide a responsive view using the Universal Theme Can I use Standard APEX?
  • 10. Can I extend APEX?
  • 11. What can I do?
  • 12. • Responsive Design: Universal Theme • Multiple Viewing Styles: http://www.slideshare.net/MarkoGoriki/speed- up-your-apex-apps-with-json-and-handlebars • Lazy Loading: https://github.com/emn178/jquery-lazyload-any • Load on Scroll: http://jscroll.com/ • Drag & Drop: http://rimblas.com/blog/2016/08/implementing-drag-drop- in-your-apex-applications/ • Editing: http://slides.com/rimblas/deliver-a-knockout-with-your-apex- applications Research Results
  • 13. Will writing a HowTo Suffice?
  • 14. • Separates Developer Responsibilities • The Focus is on Design • They are Modular & Reusable • Loosely Coupled • Encapsulates Complexity • Simplifies how you Document • Easy to Version Control • Certify against versions of APEX • Decreases Mistakes • Increases Development Speed • Provides Code Centralisation • Improves Upgradeability • Easy to Identify Plugin Usage • Easy to Share (Social) • Boosts your Developer Profile • Promotes Testing & Demo creation Benefits of Plugins
  • 15. I don’t have time?
  • 16. What Plugins Can I Build? • Region Plugins • Item Plugins • Dynamic Action Plugins • Process Plugins • Authentication Plugins • Authorization Scheme Plugins
  • 17. What skills do I need?
  • 18. • APEX World • Apex-Plugin.com • OTN • Packaged Applications • GitHub - look at the code Existing Plugins
  • 20. • Skill set • Complexity • Time • Cost • Benefit • Support What Should I Consider?
  • 21. What Should I Consider? • Target Multiple Devices • Keeping it generic and as simple as possible • simple configuration & hide complexity • reduce/eliminate coding requirements for developers • Abstract your JS API with one or more Dynamic Actions • Give Advanced Developers Control • Globalisation / Translation
  • 22. • APEX_PLUGIN_UTIL • APEX_JSON • APEX_ESCAPE • APEX_DEBUG • APEX_JAVASCRIPT & APEX_CSS • APEX_WEBSERVICES • You have the full capabilities of the Database • APEX Javascript API’s e.g. apex.server, apex.event, apex.debug • jQuery - promises, deferreds, millions of plugins Useful API’s
  • 25. Performance (Borrowed From Marko Goriki’s Presentation) Execution Time Response Size (KB) 75% Reduction50% Reduction
  • 27. Mustache Template 1. Add loop control {{#each data}} 2. Replace #NAME# with {{NAME}}
  • 35. Demo
  • 36. Solution • 124 lines of PLSQL • 797 lines of Javascript • 5 Javascript Libraries • 2 APEX Plugins • 1 Demo application • Documentation • Time spent: 5 days • Cost Estimate: 4,000 USD 1. Display a List of images from the DB 2. Display on all device types (Phone, Tablet, Desktop) 3. > 1000 images AND > 1000 users 4. Load on Scroll 5. Quickly switch between multiple viewing styles i.e. templates 6. Re-order the images via drag & drop 7. Edit & Save filename/description =
  • 37. What does the code look like?
  • 38. • Use APEX API’s and (Reputable) 3rd Party Libraries • Use Packages for your PLSQL • Place Files on the web server for performance • Expose events in your plugin • Provide an associated Dynamic action as an API • Document Usage & Provide Demos • Use version control • Utilise File Substitutions • Use the Publish & Subscribe feature for centralisation