SlideShare a Scribd company logo
“Framework Principal" pattern
Philippe Rabier - twitter.com/prabier
Sophiacom
@prabier
Follow me!
Why this presentation?
•What is a Framework Principal?
• Starter class automatically instantiated, very early
• Used to initialize your stuffs
• Independent from the Application
• @see ERXFrameworkPrincipal
What is the goal?
Resource optimization!
Feedback fromYou ’N Push
Sandbox environment
1 application
Back Office FTP Server Web Services
Job Scheduler
In-App
Purchase
Service
Push
Notification
Service
Production environment
Back Office FTP Server Web Services
Job Scheduler
In-App
Purchase
Service
Push
Notification
Service
4 applications
How to do that?
Not rocket science!
• Make your FP runnable. Change the build.properties like this:
principalClass=ca.wowodc.pascal.util.MyFrameworkPrincipal
• Create an empty Wonder application
• Add the frameworks to the classpath
• Choose a rule for your properties file names like
Properties.staging or Properties.production
• Set your properties
• Set the appropriate user name in the WOMonitor configuration
• …et voilà!
The Recipe
Skeleton of a FP
	 public static boolean serviceMustRun()
	 {
	 	 return ERXProperties.booleanForKeyWithDefault("myServiceToLaunch", false);
	 }
	 public void finishInitialization()
	 {
	 	 if (serviceMustRun() )
	 	 {
	 	 	 // your code
	 	 	 ...		 	 	
	 	 }
	 }
	 public boolean isServiceRunning()
	 {
	 	 return a condition;
	 }
Skeleton of a Properties file
#Launch first service
firstServiceToLaunch=true
#second service is not running
secondServiceToLaunch=false
WOMonitor configs
The application will look for Properties.production file
The application will look for Properties.sandbox file
2 Strategies
• Only one application
• user name is different for each application
• ex: Properties.scheduler, Properties.backoffice, …
• Several specialized applications
• user name is the same for every app like Properties.production
• applications are different: scheduler.woa, backoffice.woa, …
Do you know?
• ERRest can be configured in a FP (set up the request handler, the
routes, …)
• D2W applications could be defined in a FP (the
ERXNavigationManager loads all navigationMenu.plist in any
frameworks, the rules can be anywhere, …).
@prabier
Follow me!
Q&A
“Framework Principal" pattern

More Related Content

What's hot (20)

PDF
Future of Java
Eberhard Wolff
 
PDF
MidwestPHP 2016 - Adventures in Laravel 5
Joe Ferguson
 
PDF
Laravel Forge: Hello World to Hello Production
Joe Ferguson
 
PDF
Continuous delivery for native apps
Niels Frydenholm
 
PDF
Using JHipster 4 for generating Angular/Spring Boot apps
Yakov Fain
 
PDF
Migrating 25K lines of Ant scripting to Gradle
🎤 Hanno Embregts 🎸
 
PDF
All Aboard for Laravel 5.1
Jason McCreary
 
PDF
Intro JavaScript
koppenolski
 
PPTX
BSides Rochester 2018: Justin Moore: Automated HTTP Request Repeating With Bu...
JosephTesta9
 
PDF
Azure web functions little bites of services
Aaron Petry
 
PPTX
Azphp phpunit-jenkins
Eric Cope
 
PDF
Continuous delivery of your legacy application
ColdFusionConference
 
PDF
Engage 2020: Hello are you listening, There is stream for everything
Frank van der Linden
 
PDF
OSCamp 2019 | #3 Ansible: Automated Tests of Ansible code with GitLab, Vagran...
NETWAYS
 
PDF
CI/CD and Asset Serving for Single Page Apps
Mike North
 
PPTX
Helpful Automation Techniques - Selenium Camp 2014
Justin Ison
 
PDF
The Many Ways to Test Your React App
All Things Open
 
PDF
Laravel 5 New Features
Joe Ferguson
 
PDF
Knowing Laravel 5 : The most popular PHP framework
Bukhori Aqid
 
PPTX
Moving From a Selenium Grid to the Cloud - A Real Life Story
Sauce Labs
 
Future of Java
Eberhard Wolff
 
MidwestPHP 2016 - Adventures in Laravel 5
Joe Ferguson
 
Laravel Forge: Hello World to Hello Production
Joe Ferguson
 
Continuous delivery for native apps
Niels Frydenholm
 
Using JHipster 4 for generating Angular/Spring Boot apps
Yakov Fain
 
Migrating 25K lines of Ant scripting to Gradle
🎤 Hanno Embregts 🎸
 
All Aboard for Laravel 5.1
Jason McCreary
 
Intro JavaScript
koppenolski
 
BSides Rochester 2018: Justin Moore: Automated HTTP Request Repeating With Bu...
JosephTesta9
 
Azure web functions little bites of services
Aaron Petry
 
Azphp phpunit-jenkins
Eric Cope
 
Continuous delivery of your legacy application
ColdFusionConference
 
Engage 2020: Hello are you listening, There is stream for everything
Frank van der Linden
 
OSCamp 2019 | #3 Ansible: Automated Tests of Ansible code with GitLab, Vagran...
NETWAYS
 
CI/CD and Asset Serving for Single Page Apps
Mike North
 
Helpful Automation Techniques - Selenium Camp 2014
Justin Ison
 
The Many Ways to Test Your React App
All Things Open
 
Laravel 5 New Features
Joe Ferguson
 
Knowing Laravel 5 : The most popular PHP framework
Bukhori Aqid
 
Moving From a Selenium Grid to the Cloud - A Real Life Story
Sauce Labs
 

Viewers also liked (20)

PDF
COScheduler
WO Community
 
PDF
COScheduler In Depth
WO Community
 
PDF
Migrating existing Projects to Wonder
WO Community
 
PDF
Using Nagios to monitor your WO systems
WO Community
 
PDF
Apache Cayenne for WO Devs
WO Community
 
PDF
Life outside WO
WO Community
 
PDF
Chaining the Beast - Testing Wonder Applications in the Real World
WO Community
 
PDF
Unit Testing with WOUnit
WO Community
 
PDF
Advanced Apache Cayenne
WO Community
 
PDF
iOS for ERREST
WO Community
 
PDF
Filtering data with D2W
WO Community
 
PDF
WOver
WO Community
 
PDF
Build and deployment
WO Community
 
PDF
iOS for ERREST - alternative version
WO Community
 
PDF
Reenabling SOAP using ERJaxWS
WO Community
 
PDF
D2W Stateful Controllers
WO Community
 
PDF
KAAccessControl
WO Community
 
PDF
Deploying WO on Windows
WO Community
 
PDF
High availability
WO Community
 
PDF
In memory OLAP engine
WO Community
 
COScheduler
WO Community
 
COScheduler In Depth
WO Community
 
Migrating existing Projects to Wonder
WO Community
 
Using Nagios to monitor your WO systems
WO Community
 
Apache Cayenne for WO Devs
WO Community
 
Life outside WO
WO Community
 
Chaining the Beast - Testing Wonder Applications in the Real World
WO Community
 
Unit Testing with WOUnit
WO Community
 
Advanced Apache Cayenne
WO Community
 
iOS for ERREST
WO Community
 
Filtering data with D2W
WO Community
 
Build and deployment
WO Community
 
iOS for ERREST - alternative version
WO Community
 
Reenabling SOAP using ERJaxWS
WO Community
 
D2W Stateful Controllers
WO Community
 
KAAccessControl
WO Community
 
Deploying WO on Windows
WO Community
 
High availability
WO Community
 
In memory OLAP engine
WO Community
 
Ad

Similar to "Framework Principal" pattern (20)

PPTX
Build Your First SharePoint Framework Webpart
Eric Overfield
 
PDF
WordCamp Sheffield 2014 Theme Workflow Presentation
Jonny Allbut
 
PDF
Beyond Fluffy Bunny. How I leveraged WebObjects in my lean startup.
WO Community
 
PDF
Phpworks enterprise-php-1227605806710884-9
PrinceGuru MS
 
PDF
WordPress 4.4 and Beyond
Scott Taylor
 
PDF
SpringBoot
Jaran Flaath
 
PPTX
F5 Automation - The Journey
World Wide Technology
 
PPTX
Mark Wall - F5 Agility 2017 - F5 Automation The Journey - PPT
Mark Wall
 
PDF
Drupal 8 - Quick bites
Brahampal Singh
 
PDF
Deep Dive Into NightWatch- Workshop by Pallavi Sharma.pdf
Pallavi Sharma
 
PDF
Introduce Flux & react in practices (KKBOX)
Hsuan Fu Lien
 
PPTX
What is an Automation Framework ?
Sriram Angajala
 
PPTX
All You Need to Know for Automated SharePoint Site Provisioning with PnP Powe...
Eric Overfield
 
PPTX
Introduction to cypress in Angular (Chinese)
Hong Tat Yew
 
PPTX
Web development with Python
Raman Balyan
 
PPTX
Supercharge Your SharePoint Framework Webpart with React
Eric Overfield
 
PPTX
Modern Automated Site Provisioning for SharePoint Online
DocFluix, LLC
 
PPTX
Setting Up CircleCI Workflows for Your Salesforce Apps
Daniel Stange
 
PPTX
Move past bootstrap and build our lightweight responsive framework w.v1.2
Eric Overfield
 
PPTX
Automated PHP delivery with Bamboo @Rakuten ICHIBA
Takahiro Yamaki
 
Build Your First SharePoint Framework Webpart
Eric Overfield
 
WordCamp Sheffield 2014 Theme Workflow Presentation
Jonny Allbut
 
Beyond Fluffy Bunny. How I leveraged WebObjects in my lean startup.
WO Community
 
Phpworks enterprise-php-1227605806710884-9
PrinceGuru MS
 
WordPress 4.4 and Beyond
Scott Taylor
 
SpringBoot
Jaran Flaath
 
F5 Automation - The Journey
World Wide Technology
 
Mark Wall - F5 Agility 2017 - F5 Automation The Journey - PPT
Mark Wall
 
Drupal 8 - Quick bites
Brahampal Singh
 
Deep Dive Into NightWatch- Workshop by Pallavi Sharma.pdf
Pallavi Sharma
 
Introduce Flux & react in practices (KKBOX)
Hsuan Fu Lien
 
What is an Automation Framework ?
Sriram Angajala
 
All You Need to Know for Automated SharePoint Site Provisioning with PnP Powe...
Eric Overfield
 
Introduction to cypress in Angular (Chinese)
Hong Tat Yew
 
Web development with Python
Raman Balyan
 
Supercharge Your SharePoint Framework Webpart with React
Eric Overfield
 
Modern Automated Site Provisioning for SharePoint Online
DocFluix, LLC
 
Setting Up CircleCI Workflows for Your Salesforce Apps
Daniel Stange
 
Move past bootstrap and build our lightweight responsive framework w.v1.2
Eric Overfield
 
Automated PHP delivery with Bamboo @Rakuten ICHIBA
Takahiro Yamaki
 
Ad

More from WO Community (12)

PDF
Localizing your apps for multibyte languages
WO Community
 
PDF
WOdka
WO Community
 
PDF
ERGroupware
WO Community
 
PDF
D2W Branding Using jQuery ThemeRoller
WO Community
 
PDF
CMS / BLOG and SnoWOman
WO Community
 
PDF
Using GIT
WO Community
 
PDF
Persistent Session Storage
WO Community
 
PDF
Back2 future
WO Community
 
PDF
WebObjects Optimization
WO Community
 
PDF
Dynamic Elements
WO Community
 
PDF
Practical ERSync
WO Community
 
PDF
ERRest: the Basics
WO Community
 
Localizing your apps for multibyte languages
WO Community
 
ERGroupware
WO Community
 
D2W Branding Using jQuery ThemeRoller
WO Community
 
CMS / BLOG and SnoWOman
WO Community
 
Using GIT
WO Community
 
Persistent Session Storage
WO Community
 
Back2 future
WO Community
 
WebObjects Optimization
WO Community
 
Dynamic Elements
WO Community
 
Practical ERSync
WO Community
 
ERRest: the Basics
WO Community
 

Recently uploaded (20)

PDF
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PPTX
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Timothy Rottach - Ramp up on AI Use Cases, from Vector Search to AI Agents wi...
AWS Chicago
 
PDF
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
Python basic programing language for automation
DanialHabibi2
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Timothy Rottach - Ramp up on AI Use Cases, from Vector Search to AI Agents wi...
AWS Chicago
 
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 

"Framework Principal" pattern

  • 1. “Framework Principal" pattern Philippe Rabier - twitter.com/prabier Sophiacom
  • 4. •What is a Framework Principal? • Starter class automatically instantiated, very early • Used to initialize your stuffs • Independent from the Application • @see ERXFrameworkPrincipal
  • 5. What is the goal? Resource optimization!
  • 7. Sandbox environment 1 application Back Office FTP Server Web Services Job Scheduler In-App Purchase Service Push Notification Service
  • 8. Production environment Back Office FTP Server Web Services Job Scheduler In-App Purchase Service Push Notification Service 4 applications
  • 9. How to do that? Not rocket science!
  • 10. • Make your FP runnable. Change the build.properties like this: principalClass=ca.wowodc.pascal.util.MyFrameworkPrincipal • Create an empty Wonder application • Add the frameworks to the classpath • Choose a rule for your properties file names like Properties.staging or Properties.production • Set your properties • Set the appropriate user name in the WOMonitor configuration • …et voilà! The Recipe
  • 11. Skeleton of a FP public static boolean serviceMustRun() { return ERXProperties.booleanForKeyWithDefault("myServiceToLaunch", false); } public void finishInitialization() { if (serviceMustRun() ) { // your code ... } } public boolean isServiceRunning() { return a condition; }
  • 12. Skeleton of a Properties file #Launch first service firstServiceToLaunch=true #second service is not running secondServiceToLaunch=false
  • 13. WOMonitor configs The application will look for Properties.production file The application will look for Properties.sandbox file
  • 14. 2 Strategies • Only one application • user name is different for each application • ex: Properties.scheduler, Properties.backoffice, … • Several specialized applications • user name is the same for every app like Properties.production • applications are different: scheduler.woa, backoffice.woa, …
  • 15. Do you know? • ERRest can be configured in a FP (set up the request handler, the routes, …) • D2W applications could be defined in a FP (the ERXNavigationManager loads all navigationMenu.plist in any frameworks, the rules can be anywhere, …).