SlideShare une entreprise Scribd logo
1  sur  32
1
DX External Data Provider in an headless world
January 25th, 2017
2
Introduction
What will you see?
External data provider
Rendering capabilities of DX
Learn how to bake a cake
There are 28 slides and 3 bonus
3
The basics: get content,
display it.
1
4
1
Simple use case
Goal to achieve:
- Give the world access to my catalog
Requirements:
- A Catalog
- A web server application (the world)
5
1
Things to do
- Expose the catalog to the world
- Create a connector in the web server application to read the
Catalog
2 connectors :
- ExposeCatalog
- DisplayCatalog
6
Now, complicate things a bit
2
7
2 Add a new source of content
Goal to achieve:
- Provide content from a completely different Catalog
Things to do:
- Create a connector to this catalog
- Edit the display connector to fit the new structure
8
2 Add a new output
Goal to achieve:
- Expose the content to an Android / iOS / raspberry application
Things to do:
- Edit the 2 connectors to support this new output
- Create a new output connector to support all the external
sources with their input connectors
9
2
10
2 And life goes on ...
New outputs to add
New sources to add
Time needed increase dramatically
Complex to maintain
11
2 DX
Use DX as a solution between your content sources and the outside
world
Using the External Data Provider to get the Data
Using the rendering mechanism and structure to deliver it
- Quick development
- Easy to maintain
- Easy to evolve
12
2
13
3
Your content in DX:
External Data Providers
14
What is an External Data Provider ?
Functionally: A way to virtualize content in
DX JCR tree
Technically: A simple DX module
3
15
How to create an External Data
Provider
Set an external provider declaration based on
org.jahia.modules.external.ExternalContentStoreProvider
Define an External Data Source implementing
org.jahia.modules.external.ExternalDataSource
Create an External Data object
3
16
ExternalContentStoreProvider
Use spring to instantiate the provider.
<bean id="ExternalGenericDatabaseProvider" class="org.jahia.modules.external.ExternalContentStoreProvider"
parent="AbstractJCRStoreProvider">
<property name="key" value="ExternalGenericDatabaseProvider"/>
<property name="mountPoint" value="/external-database-generic"/>
<property name="externalProviderInitializerService" ref="ExternalProviderInitializerService"/>
<property name="dataSource">
<bean class="org.jahia.modules.external.test.db.GenericDatabaseDataSource"/>
</property>
</bean>
The provider declaration can define provider capabilities such as:
- Extension support
- Lock support
3
17
External Data Source
Implement ExternalDataSource to build ExternalData
List<String> getChildren(String path)
ExternalData getItemByIdentifier(String identifier)
ExternalData getItemByPath(String path)
getSupportedNodeTypes()
isSupportsHierarchicalIdentifiers()
isSupportsUuid()
itemExists(String path)
3
18
3
External Data Object
To build it, use the default Constructor
ExternalData(String id, String path, String type, Map<String, String[]> properties, boolean isNew)
19
3
Extend an External Data Source
The External Data source can be extended implementing the
following interfaces:
AccessControllable
SupportPrivileges
Searchable
Writable
CanCheckAvailability
CanLoadChildrenInBatch
Initializable
LazyProperty
Referenceable
20
3
Extension
With extensions, it is possible to enhance the external content with
custom properties.
This can be useful to add ratings, comments
The content is stored in a dedicated place in the JCR.
21
3
Server settings
An External Data Provider is used to mount external content into
DX.
We provide a UI in the server settings to manage mount points
No documentation yet :'(
22
3
Usages
In DX:
- VFS to mount file system
- Sources in the Studio
- User and Group Provider
From modules (available on the store or in Github):
- CMIS
- Tmdb
- Database connector
- LDAP
23
4
Headless rendering
24
Headless
The rendering is detached from its content.
Consume JSON
Examples :
Single page app
Mobile rendering
Create a new edit UI
4
25
4
DX and Headless
DX natively offers to render content in an unitary way
DX can generate JSON
26
4
How to query and get JSON
Querying content can let you read the content, but also modifying it
- With the render chain:
Default json views that can be found in
/default/src/main/resources/nt_base/json
- Create an Action
- Use Jax-RS API (like in our JC Rest API module)
- Use GraphQL (this is the future)
27
5
Conclusion
28
Mix the things
Get your content in DX using the External Data
Provider
Generate JSON using DX capabilities
Enjoy !!
5
29
5
One more thing ..
Now that your content is in DX you can use :
- Edit engines
- DX flows
- DX modules
- Play with it as any other DX content
- Etc ..
30
Alternatively you can bake a cake
Here the recipe:
● nonstick vegetable oil spray
● 1 1/2 cups all-purpose flour
● 2 teaspoons baking powder
● 3/4 teaspoon kosher salt
● 1 cup sugar
● 1 tablespoon finely grated lemon zest
● 3/4 cup whole-milk Greek yogurt
● 1/2 cup vegetable oil
● 2 large eggs
● 1/2 teaspoon vanilla extract
5
31
Preparation
Preheat oven to 350°F. Coat a standard (8 1/2x4 1/4") loaf pan with nonstick vegetable oil spray.
Dust with flour; tap out excess. Whisk 1 1/2 cups all-purpose flour, 2 teaspoons baking powder, and 3/4 teaspoon kosher
salt in a medium bowl.
Using your fingers, rub 1 cup sugar with 1 tablespoon finely grated lemon zest in a large bowl until sugar is moist.
Add 3/4 cup whole-milk Greek yogurt, 1/2 cup vegetable oil, 2 large eggs, and 1/2 teaspoon vanilla extract; whisk to blend.
Fold in dry ingredients just to blend.
Pour batter into prepared pan; smooth top.
Bake until top of cake is golden brown and a tester inserted into center comes out clean, 50-55 minutes.
Let cake cool in pan on a wire rack for 15 minutes. Invert onto rack; let cool completely. DO AHEAD: Can be made 3 days
ahead. Store airtight at room temperature.
5
32
THE END!
THANKS FOR LISTENING

Contenu connexe

Similaire à External Data Provider an Headless Way to Share Content - Developers Meetup - January 2017

How to develop a gateway service using code based implementation
How to develop a gateway service using code based implementationHow to develop a gateway service using code based implementation
How to develop a gateway service using code based implementationnitin2517
 
( 5 ) Office 2007 Create A Business Data Catolog
( 5 ) Office 2007   Create A Business Data Catolog( 5 ) Office 2007   Create A Business Data Catolog
( 5 ) Office 2007 Create A Business Data CatologLiquidHub
 
Node collaboration - sharing information between your systems
Node collaboration - sharing information between your systemsNode collaboration - sharing information between your systems
Node collaboration - sharing information between your systemsm_richardson
 
OpenText Content Server CE 22.1 - OpenText Enterprise Connect Plug-in for Con...
OpenText Content Server CE 22.1 - OpenText Enterprise Connect Plug-in for Con...OpenText Content Server CE 22.1 - OpenText Enterprise Connect Plug-in for Con...
OpenText Content Server CE 22.1 - OpenText Enterprise Connect Plug-in for Con...pratiksha16570
 
Rational Publishing Engine with Rational DOORS
Rational Publishing Engine with Rational DOORSRational Publishing Engine with Rational DOORS
Rational Publishing Engine with Rational DOORSGEBS Reporting
 
Generate schema using wcf sql adapter 
Generate schema using wcf sql adapter Generate schema using wcf sql adapter 
Generate schema using wcf sql adapter ahmed zewita
 
Database development connection steps
Database development connection stepsDatabase development connection steps
Database development connection stepsAravindharamanan S
 
Informatica complex transformation i
Informatica complex transformation iInformatica complex transformation i
Informatica complex transformation iAmit Sharma
 
Optimizing your Database Import!
Optimizing your Database Import! Optimizing your Database Import!
Optimizing your Database Import! Nabil Nawaz
 
Continuous Applications at Scale of 100 Teams with Databricks Delta and Struc...
Continuous Applications at Scale of 100 Teams with Databricks Delta and Struc...Continuous Applications at Scale of 100 Teams with Databricks Delta and Struc...
Continuous Applications at Scale of 100 Teams with Databricks Delta and Struc...Databricks
 
( 5 ) Office 2007 Create A Business Data Catolog
( 5 ) Office 2007   Create A Business Data Catolog( 5 ) Office 2007   Create A Business Data Catolog
( 5 ) Office 2007 Create A Business Data CatologLiquidHub
 
DevOps Hackathon: Session 3 - Test Driven Infrastructure
DevOps Hackathon: Session 3 - Test Driven InfrastructureDevOps Hackathon: Session 3 - Test Driven Infrastructure
DevOps Hackathon: Session 3 - Test Driven InfrastructureAntons Kranga
 
Odoo Experience 2018 - From a Web Controller to a Full CMS
Odoo Experience 2018 - From a Web Controller to a Full CMSOdoo Experience 2018 - From a Web Controller to a Full CMS
Odoo Experience 2018 - From a Web Controller to a Full CMSElínAnna Jónasdóttir
 
Recipe Management with InduSoft Web Studio
Recipe Management with InduSoft Web StudioRecipe Management with InduSoft Web Studio
Recipe Management with InduSoft Web StudioAVEVA
 
BigQuery walk through.pptx
BigQuery walk through.pptxBigQuery walk through.pptx
BigQuery walk through.pptxVikRam S
 
Automating your infrastructure with Chef
Automating your infrastructure with ChefAutomating your infrastructure with Chef
Automating your infrastructure with ChefJohn Ewart
 

Similaire à External Data Provider an Headless Way to Share Content - Developers Meetup - January 2017 (20)

How to develop a gateway service using code based implementation
How to develop a gateway service using code based implementationHow to develop a gateway service using code based implementation
How to develop a gateway service using code based implementation
 
( 5 ) Office 2007 Create A Business Data Catolog
( 5 ) Office 2007   Create A Business Data Catolog( 5 ) Office 2007   Create A Business Data Catolog
( 5 ) Office 2007 Create A Business Data Catolog
 
Node collaboration - sharing information between your systems
Node collaboration - sharing information between your systemsNode collaboration - sharing information between your systems
Node collaboration - sharing information between your systems
 
OpenText Content Server CE 22.1 - OpenText Enterprise Connect Plug-in for Con...
OpenText Content Server CE 22.1 - OpenText Enterprise Connect Plug-in for Con...OpenText Content Server CE 22.1 - OpenText Enterprise Connect Plug-in for Con...
OpenText Content Server CE 22.1 - OpenText Enterprise Connect Plug-in for Con...
 
Rational Publishing Engine with Rational DOORS
Rational Publishing Engine with Rational DOORSRational Publishing Engine with Rational DOORS
Rational Publishing Engine with Rational DOORS
 
Week 03.pdf
Week 03.pdfWeek 03.pdf
Week 03.pdf
 
Generate schema using wcf sql adapter 
Generate schema using wcf sql adapter Generate schema using wcf sql adapter 
Generate schema using wcf sql adapter 
 
Scaling / optimizing search on netlog
Scaling / optimizing search on netlogScaling / optimizing search on netlog
Scaling / optimizing search on netlog
 
Database development connection steps
Database development connection stepsDatabase development connection steps
Database development connection steps
 
ssis lab
ssis labssis lab
ssis lab
 
Informatica complex transformation i
Informatica complex transformation iInformatica complex transformation i
Informatica complex transformation i
 
Optimizing your Database Import!
Optimizing your Database Import! Optimizing your Database Import!
Optimizing your Database Import!
 
Continuous Applications at Scale of 100 Teams with Databricks Delta and Struc...
Continuous Applications at Scale of 100 Teams with Databricks Delta and Struc...Continuous Applications at Scale of 100 Teams with Databricks Delta and Struc...
Continuous Applications at Scale of 100 Teams with Databricks Delta and Struc...
 
( 5 ) Office 2007 Create A Business Data Catolog
( 5 ) Office 2007   Create A Business Data Catolog( 5 ) Office 2007   Create A Business Data Catolog
( 5 ) Office 2007 Create A Business Data Catolog
 
Lab5
Lab5Lab5
Lab5
 
DevOps Hackathon: Session 3 - Test Driven Infrastructure
DevOps Hackathon: Session 3 - Test Driven InfrastructureDevOps Hackathon: Session 3 - Test Driven Infrastructure
DevOps Hackathon: Session 3 - Test Driven Infrastructure
 
Odoo Experience 2018 - From a Web Controller to a Full CMS
Odoo Experience 2018 - From a Web Controller to a Full CMSOdoo Experience 2018 - From a Web Controller to a Full CMS
Odoo Experience 2018 - From a Web Controller to a Full CMS
 
Recipe Management with InduSoft Web Studio
Recipe Management with InduSoft Web StudioRecipe Management with InduSoft Web Studio
Recipe Management with InduSoft Web Studio
 
BigQuery walk through.pptx
BigQuery walk through.pptxBigQuery walk through.pptx
BigQuery walk through.pptx
 
Automating your infrastructure with Chef
Automating your infrastructure with ChefAutomating your infrastructure with Chef
Automating your infrastructure with Chef
 

Plus de Jahia Solutions Group

The Road ahead: What we see as the future of digital. By Elie Auvray
The Road ahead: What we see as the future of digital. By Elie AuvrayThe Road ahead: What we see as the future of digital. By Elie Auvray
The Road ahead: What we see as the future of digital. By Elie AuvrayJahia Solutions Group
 
Monitoring and Data-Driven Decision Making with Daniel Maher
Monitoring and Data-Driven Decision Making with Daniel MaherMonitoring and Data-Driven Decision Making with Daniel Maher
Monitoring and Data-Driven Decision Making with Daniel MaherJahia Solutions Group
 
The ultimate search of the perfect customer experience By Brian Solis
The ultimate search of the perfect customer experience By Brian SolisThe ultimate search of the perfect customer experience By Brian Solis
The ultimate search of the perfect customer experience By Brian SolisJahia Solutions Group
 
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...Jahia Solutions Group
 
Data for Dummies by Dan Katz, CDO at Safran
Data for Dummies by Dan Katz, CDO at SafranData for Dummies by Dan Katz, CDO at Safran
Data for Dummies by Dan Katz, CDO at SafranJahia Solutions Group
 
Content and commerce: The perfect combo. By Catherine Barba
Content and commerce: The perfect combo. By Catherine BarbaContent and commerce: The perfect combo. By Catherine Barba
Content and commerce: The perfect combo. By Catherine BarbaJahia Solutions Group
 
The power of great customer experience in today’s world. Olivier Mourrieras &...
The power of great customer experience in today’s world. Olivier Mourrieras &...The power of great customer experience in today’s world. Olivier Mourrieras &...
The power of great customer experience in today’s world. Olivier Mourrieras &...Jahia Solutions Group
 
Making Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Making Digital simpler. Occam’s Razor, Horses, Zebras, and EvolutionMaking Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Making Digital simpler. Occam’s Razor, Horses, Zebras, and EvolutionJahia Solutions Group
 
Elasticsearch powered EDP by Cedric Mailleux
Elasticsearch powered EDP by Cedric MailleuxElasticsearch powered EDP by Cedric Mailleux
Elasticsearch powered EDP by Cedric MailleuxJahia Solutions Group
 
Jahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Cloud Offerings by Julian Maurel & Abass SafoutouJahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Cloud Offerings by Julian Maurel & Abass SafoutouJahia Solutions Group
 
Learn how to go headless with Jahia DX by Serge Huber
Learn how to go headless with Jahia DX by Serge HuberLearn how to go headless with Jahia DX by Serge Huber
Learn how to go headless with Jahia DX by Serge HuberJahia Solutions Group
 
Making the life of patients easier in the healthcare sector thanks to digital...
Making the life of patients easier in the healthcare sector thanks to digital...Making the life of patients easier in the healthcare sector thanks to digital...
Making the life of patients easier in the healthcare sector thanks to digital...Jahia Solutions Group
 
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...Jahia Solutions Group
 
Strategy for content with local and global sites by Romain Gauthier
Strategy for content with local and global sites by Romain GauthierStrategy for content with local and global sites by Romain Gauthier
Strategy for content with local and global sites by Romain GauthierJahia Solutions Group
 
Apache Unomi presentation and update. By Serge Huber, CTO Jahia
Apache Unomi presentation and update. By Serge Huber, CTO JahiaApache Unomi presentation and update. By Serge Huber, CTO Jahia
Apache Unomi presentation and update. By Serge Huber, CTO JahiaJahia Solutions Group
 
Personalisation and Headless in a business context by Lars Petersen
Personalisation and Headless in a business context by Lars PetersenPersonalisation and Headless in a business context by Lars Petersen
Personalisation and Headless in a business context by Lars PetersenJahia Solutions Group
 
Digital Revolution from Silo to Platform by Gilles Babinet
Digital Revolution from Silo to Platform by Gilles BabinetDigital Revolution from Silo to Platform by Gilles Babinet
Digital Revolution from Silo to Platform by Gilles BabinetJahia Solutions Group
 
A customer journey with AI by Xavier Vaccari, Softeam Group
A customer journey with AI by Xavier Vaccari, Softeam GroupA customer journey with AI by Xavier Vaccari, Softeam Group
A customer journey with AI by Xavier Vaccari, Softeam GroupJahia Solutions Group
 
Using CX to unlock Total Experience by David Balko, Tribal
Using CX to unlock Total Experience by David Balko, TribalUsing CX to unlock Total Experience by David Balko, Tribal
Using CX to unlock Total Experience by David Balko, TribalJahia Solutions Group
 
AI-monitor & Marketing Factory, customer case study by Valerie Voci
AI-monitor & Marketing Factory, customer case study by Valerie VociAI-monitor & Marketing Factory, customer case study by Valerie Voci
AI-monitor & Marketing Factory, customer case study by Valerie VociJahia Solutions Group
 

Plus de Jahia Solutions Group (20)

The Road ahead: What we see as the future of digital. By Elie Auvray
The Road ahead: What we see as the future of digital. By Elie AuvrayThe Road ahead: What we see as the future of digital. By Elie Auvray
The Road ahead: What we see as the future of digital. By Elie Auvray
 
Monitoring and Data-Driven Decision Making with Daniel Maher
Monitoring and Data-Driven Decision Making with Daniel MaherMonitoring and Data-Driven Decision Making with Daniel Maher
Monitoring and Data-Driven Decision Making with Daniel Maher
 
The ultimate search of the perfect customer experience By Brian Solis
The ultimate search of the perfect customer experience By Brian SolisThe ultimate search of the perfect customer experience By Brian Solis
The ultimate search of the perfect customer experience By Brian Solis
 
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
Docker, Kubernetes, Openshift: Jahia on steroids in production with Julian Ma...
 
Data for Dummies by Dan Katz, CDO at Safran
Data for Dummies by Dan Katz, CDO at SafranData for Dummies by Dan Katz, CDO at Safran
Data for Dummies by Dan Katz, CDO at Safran
 
Content and commerce: The perfect combo. By Catherine Barba
Content and commerce: The perfect combo. By Catherine BarbaContent and commerce: The perfect combo. By Catherine Barba
Content and commerce: The perfect combo. By Catherine Barba
 
The power of great customer experience in today’s world. Olivier Mourrieras &...
The power of great customer experience in today’s world. Olivier Mourrieras &...The power of great customer experience in today’s world. Olivier Mourrieras &...
The power of great customer experience in today’s world. Olivier Mourrieras &...
 
Making Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Making Digital simpler. Occam’s Razor, Horses, Zebras, and EvolutionMaking Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
Making Digital simpler. Occam’s Razor, Horses, Zebras, and Evolution
 
Elasticsearch powered EDP by Cedric Mailleux
Elasticsearch powered EDP by Cedric MailleuxElasticsearch powered EDP by Cedric Mailleux
Elasticsearch powered EDP by Cedric Mailleux
 
Jahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Cloud Offerings by Julian Maurel & Abass SafoutouJahia Cloud Offerings by Julian Maurel & Abass Safoutou
Jahia Cloud Offerings by Julian Maurel & Abass Safoutou
 
Learn how to go headless with Jahia DX by Serge Huber
Learn how to go headless with Jahia DX by Serge HuberLearn how to go headless with Jahia DX by Serge Huber
Learn how to go headless with Jahia DX by Serge Huber
 
Making the life of patients easier in the healthcare sector thanks to digital...
Making the life of patients easier in the healthcare sector thanks to digital...Making the life of patients easier in the healthcare sector thanks to digital...
Making the life of patients easier in the healthcare sector thanks to digital...
 
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
Impletementing Analytics - Stop talking, Start doing! by Ben Salmon, We are C...
 
Strategy for content with local and global sites by Romain Gauthier
Strategy for content with local and global sites by Romain GauthierStrategy for content with local and global sites by Romain Gauthier
Strategy for content with local and global sites by Romain Gauthier
 
Apache Unomi presentation and update. By Serge Huber, CTO Jahia
Apache Unomi presentation and update. By Serge Huber, CTO JahiaApache Unomi presentation and update. By Serge Huber, CTO Jahia
Apache Unomi presentation and update. By Serge Huber, CTO Jahia
 
Personalisation and Headless in a business context by Lars Petersen
Personalisation and Headless in a business context by Lars PetersenPersonalisation and Headless in a business context by Lars Petersen
Personalisation and Headless in a business context by Lars Petersen
 
Digital Revolution from Silo to Platform by Gilles Babinet
Digital Revolution from Silo to Platform by Gilles BabinetDigital Revolution from Silo to Platform by Gilles Babinet
Digital Revolution from Silo to Platform by Gilles Babinet
 
A customer journey with AI by Xavier Vaccari, Softeam Group
A customer journey with AI by Xavier Vaccari, Softeam GroupA customer journey with AI by Xavier Vaccari, Softeam Group
A customer journey with AI by Xavier Vaccari, Softeam Group
 
Using CX to unlock Total Experience by David Balko, Tribal
Using CX to unlock Total Experience by David Balko, TribalUsing CX to unlock Total Experience by David Balko, Tribal
Using CX to unlock Total Experience by David Balko, Tribal
 
AI-monitor & Marketing Factory, customer case study by Valerie Voci
AI-monitor & Marketing Factory, customer case study by Valerie VociAI-monitor & Marketing Factory, customer case study by Valerie Voci
AI-monitor & Marketing Factory, customer case study by Valerie Voci
 

Dernier

VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Anthony Dahanne
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profileakrivarotava
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 

Dernier (20)

VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profile
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 

External Data Provider an Headless Way to Share Content - Developers Meetup - January 2017

  • 1. 1 DX External Data Provider in an headless world January 25th, 2017
  • 2. 2 Introduction What will you see? External data provider Rendering capabilities of DX Learn how to bake a cake There are 28 slides and 3 bonus
  • 3. 3 The basics: get content, display it. 1
  • 4. 4 1 Simple use case Goal to achieve: - Give the world access to my catalog Requirements: - A Catalog - A web server application (the world)
  • 5. 5 1 Things to do - Expose the catalog to the world - Create a connector in the web server application to read the Catalog 2 connectors : - ExposeCatalog - DisplayCatalog
  • 7. 7 2 Add a new source of content Goal to achieve: - Provide content from a completely different Catalog Things to do: - Create a connector to this catalog - Edit the display connector to fit the new structure
  • 8. 8 2 Add a new output Goal to achieve: - Expose the content to an Android / iOS / raspberry application Things to do: - Edit the 2 connectors to support this new output - Create a new output connector to support all the external sources with their input connectors
  • 9. 9 2
  • 10. 10 2 And life goes on ... New outputs to add New sources to add Time needed increase dramatically Complex to maintain
  • 11. 11 2 DX Use DX as a solution between your content sources and the outside world Using the External Data Provider to get the Data Using the rendering mechanism and structure to deliver it - Quick development - Easy to maintain - Easy to evolve
  • 12. 12 2
  • 13. 13 3 Your content in DX: External Data Providers
  • 14. 14 What is an External Data Provider ? Functionally: A way to virtualize content in DX JCR tree Technically: A simple DX module 3
  • 15. 15 How to create an External Data Provider Set an external provider declaration based on org.jahia.modules.external.ExternalContentStoreProvider Define an External Data Source implementing org.jahia.modules.external.ExternalDataSource Create an External Data object 3
  • 16. 16 ExternalContentStoreProvider Use spring to instantiate the provider. <bean id="ExternalGenericDatabaseProvider" class="org.jahia.modules.external.ExternalContentStoreProvider" parent="AbstractJCRStoreProvider"> <property name="key" value="ExternalGenericDatabaseProvider"/> <property name="mountPoint" value="/external-database-generic"/> <property name="externalProviderInitializerService" ref="ExternalProviderInitializerService"/> <property name="dataSource"> <bean class="org.jahia.modules.external.test.db.GenericDatabaseDataSource"/> </property> </bean> The provider declaration can define provider capabilities such as: - Extension support - Lock support 3
  • 17. 17 External Data Source Implement ExternalDataSource to build ExternalData List<String> getChildren(String path) ExternalData getItemByIdentifier(String identifier) ExternalData getItemByPath(String path) getSupportedNodeTypes() isSupportsHierarchicalIdentifiers() isSupportsUuid() itemExists(String path) 3
  • 18. 18 3 External Data Object To build it, use the default Constructor ExternalData(String id, String path, String type, Map<String, String[]> properties, boolean isNew)
  • 19. 19 3 Extend an External Data Source The External Data source can be extended implementing the following interfaces: AccessControllable SupportPrivileges Searchable Writable CanCheckAvailability CanLoadChildrenInBatch Initializable LazyProperty Referenceable
  • 20. 20 3 Extension With extensions, it is possible to enhance the external content with custom properties. This can be useful to add ratings, comments The content is stored in a dedicated place in the JCR.
  • 21. 21 3 Server settings An External Data Provider is used to mount external content into DX. We provide a UI in the server settings to manage mount points No documentation yet :'(
  • 22. 22 3 Usages In DX: - VFS to mount file system - Sources in the Studio - User and Group Provider From modules (available on the store or in Github): - CMIS - Tmdb - Database connector - LDAP
  • 24. 24 Headless The rendering is detached from its content. Consume JSON Examples : Single page app Mobile rendering Create a new edit UI 4
  • 25. 25 4 DX and Headless DX natively offers to render content in an unitary way DX can generate JSON
  • 26. 26 4 How to query and get JSON Querying content can let you read the content, but also modifying it - With the render chain: Default json views that can be found in /default/src/main/resources/nt_base/json - Create an Action - Use Jax-RS API (like in our JC Rest API module) - Use GraphQL (this is the future)
  • 28. 28 Mix the things Get your content in DX using the External Data Provider Generate JSON using DX capabilities Enjoy !! 5
  • 29. 29 5 One more thing .. Now that your content is in DX you can use : - Edit engines - DX flows - DX modules - Play with it as any other DX content - Etc ..
  • 30. 30 Alternatively you can bake a cake Here the recipe: ● nonstick vegetable oil spray ● 1 1/2 cups all-purpose flour ● 2 teaspoons baking powder ● 3/4 teaspoon kosher salt ● 1 cup sugar ● 1 tablespoon finely grated lemon zest ● 3/4 cup whole-milk Greek yogurt ● 1/2 cup vegetable oil ● 2 large eggs ● 1/2 teaspoon vanilla extract 5
  • 31. 31 Preparation Preheat oven to 350°F. Coat a standard (8 1/2x4 1/4") loaf pan with nonstick vegetable oil spray. Dust with flour; tap out excess. Whisk 1 1/2 cups all-purpose flour, 2 teaspoons baking powder, and 3/4 teaspoon kosher salt in a medium bowl. Using your fingers, rub 1 cup sugar with 1 tablespoon finely grated lemon zest in a large bowl until sugar is moist. Add 3/4 cup whole-milk Greek yogurt, 1/2 cup vegetable oil, 2 large eggs, and 1/2 teaspoon vanilla extract; whisk to blend. Fold in dry ingredients just to blend. Pour batter into prepared pan; smooth top. Bake until top of cake is golden brown and a tester inserted into center comes out clean, 50-55 minutes. Let cake cool in pan on a wire rack for 15 minutes. Invert onto rack; let cool completely. DO AHEAD: Can be made 3 days ahead. Store airtight at room temperature. 5