SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
By @Florent_Torre - Paris Open Source Summit 2019
Deploy your content with Entity Share
1. Why sharing content?
▪ The 2 main use cases of sharing content
2. Why the Entity Share module?
▪ Differences with the Webfactory module
▪ Differences with the Deploy ecosystem
3. Entity Share’s architecture
▪ JSON:API usage
▪ Architecture
▪ Ecosystem
▪ Known problems
▪ Limitations
▪ Feature requests
▪ Roadmap
▪ Perspectives
4. Demo
WHY SHARING CONTENT ?
IN CONTEXT
THE 2MAIN USE CASES OF SHARING CONTENT
4
DEPLOY CONTENT ON MULTIPLE WEBSITES IN INDUSTRIALIZATION PROCESS
THE 2MAIN USE CASES OF SHARING CONTENT
5
DEPLOY CONTENT ON MULTIPLE WEBSITES IN INDUSTRIALIZATION PROCESS
▪Either architecture with content hub
▪Or cross-communications between different sites
THE 2MAIN USE CASES OF SHARING CONTENT
6
DEPLOY CONTENT ON MULTIPLE WEBSITES IN INDUSTRIALIZATION PROCESS
▪Deploy content from preproduction to production
(content staging), same as the content hub case
▪Retrieve content from production to development
environments
WHY
ENTITY SHARE?
ALTERNATIVES
DISCOVERY
7
CHALLENGES
FORCES
IN SHORT
▪ Created in 2001
▪ PHP
▪ 100% developed by the
community (3000)
Very big ecosystem,
composed from a wide
range of actors in size and
type
Contrib modules
▪ Webfactory
▪ Deploy
Acquia has a turnkey
solution for
▪ Websites creation
▪ Websites cloning
▪ Sharing content
The product Acquia
Content Hub is binding
▪ Content storage outside
of Drupal
▪ High costs
8
WEBFACTORY MODULE LIMITATIONS
Allows multi-site management from a central website
Facilitates the deployment of new sites
▪ Deploy a new “profile" directly from the backoffice
Sharing content from the central website
▪ Share entities: node
▪ A "channel" mechanism allows only certain entities
to be shared at certain websites
Usage of Core webservices
9
THE DEPLOY ECOSYSTEM
Pushed by the community
Quite unstable
▪ At least at the beginning of 2017
Binding at the workflow level
More for content staging
10
ENTITY SHARE’S
ARCHITECTURE
And how to help us!
JSON:API USAGE
▪To provide entities listings
▪More stable and documented than GraphQL (At the
beginning of 2017)
▪At the beginning of 2017, already an initiative for
JSON:API to become a Core module
▪Easy to use
12
JSON:API USAGE
ENTITY SHARE
PROVIDES A UI
ON TOP OF THE
JSON:API
public function extractEntity(array $data) {
// Format JSON as in
// JsonApiDocumentTopLevelNormalizerTest::testDenormalize().
$prepared_json = [
'data' => [
'type' => $data['type'],
'attributes' => $data['attributes'],
],
];
$parsed_type = explode('--', $data['type']);
return
$this->jsonapiDocumentTopLevelNormalizer->denormalize($prepared_json,
NULL, 'api_json', [
'resource_type' => $this->resourceTypeRepository->get(
$parsed_type[0],
$parsed_type[1]
),
]);
}
13
ARCHITECTURE: 2 SUB-MODULES
Entity share server
▪ Activate on the website that will provide the
contents
▪ Provides the channel system
▪ Prepare a JSON:API endpoint URL to call by the
client website: entity type, bundle, language,
filters, sorts
▪ Plus listing of channels according to the
authorized user
Entity share client
▪ Activate on the website that will pull (or push)
content
▪ Allow to set the websites on which to connect to
▪ Provides a pull form (and push form but on an
experimental branch)
THE 2 SUB-MODULES MAY BE ENABLED ON
THE SAME SITE.
14
ARCHITECTURE: GLOBAL VIEW OF THE PROCESS
Check if an entity exists with this UUID
▪ If no entity is found, create a new one
▪ If an entity exists, create or update the translation
regarding the language in the JSON data.
Store the UUID in the processed entities list
to avoid infinite loop
Manage entity reference fields
▪ For each “relationship” (JSON;API) field, request the
endpoint showing the list of entities referenced by
the field
▪ For each of these entities, do the initial process
▪ Put the ids of the processed entities in the entity
reference field value
Manage physical files
▪ If the entity is a file, use its properties (URI) to get
the content of the file
WHEN PULLING, FOR EACH SELECTED ENTITY
15
ENTITY SHARE’S ECOSYSTEM
Entity Share async (sub-module)
▪ To mark content to be synced later by a
queue during cron execution
Entity Share cron (separated project)
▪ https://www.drupal.org/project/entity_sh
are_cron
▪ Provides an UI to configure frequency of
automated pull of channels
▪ For more complex usage, there is an
example module in Entity Share:
entity_share_client_test
16
KNOWN PROBLEMS
Workaround for Core limitation on link fields
with internal link values: Use JSON:API Extras
Metatag field breaks the import (#3060702)
Not working when server website is behind
HTTP authentication (#2856713)
Implementation relies on some JSON:API
internal classes (#2939827)
Support of Dynamic Entity reference field is
broken since JSON:API 2.x (#3056102) ALL THE DETAILS ON THE PROJECT PAGE
AND IN THE MODULE ISSUES QUEUE
17
LIMITATIONS
To avoid side effects, config entities and users
are not handled
Impossible to import non-translatable entities
(#2996220)
Impossible to import content in a language not
enabled (#3064328)
Push form (#2856715):
▪ Impossible to PATCH translations (JSON:API)
▪ Impossible to PATCH file field (JSON:API)
18
FEATURE REQUESTS
Better Pull form (#3077808, #3077810, #3077815,
#2891653, #2856719, #3064252)
Avoid to synchronize already synced entities
(#3080629, #3077976, #3009258)
Parse RTE to get referenced entities (#3056911) :
▪ Entity embed
▪ Linkit
Parse Link fields to get referenced entities (#3064276)
Allow an entity to be updated locally after being
synchronized once (#2975806)
Compatibility with Block field (#3064331)
Manage Pathauto behavior (#3064320)
Better channel form (#2856717)
19
ROADMAP
Priority 1:
▪ Automated tests!!! (#2909022)
▪ bug reports
Priority 2:
▪ Rework services and tests for better architecture
and DX (#3060694)
▪ No more depend on JSON:API internal classes
(#2939827)
Priority 3:
▪ Feature requests depending on client needs and
sponsored collaborations.
▪ Now a feature request must have automated tests
before being merged!!!
ALL THE DETAILS ON THE PROJECT PAGE
AND IN THE MODULE ISSUES QUEUE
20
PERSPECTIVES
Entity Share V2?:
▪ Availability to have multiple bundles per channel
(JSON:API Cross Bundles)
▪ System of configurable plugins to control behavior:
▪ Depth of handled relationships
▪ Sync all translations at once
▪ Parse RTE
▪ Parse Link field
▪ …
See this issue to give and discuss the ideas.
21
Thanks for your attention!
And thanks to all the contributors!
Deploy your contents with entity share

Weitere ähnliche Inhalte

Was ist angesagt?

Power Apps? なにそれ? おいしいの?
Power Apps? なにそれ? おいしいの?Power Apps? なにそれ? おいしいの?
Power Apps? なにそれ? おいしいの?Junichi Kodama
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道nishio
 
SharePointリストのフォームのカスタマイズを利用したときにハマること
SharePointリストのフォームのカスタマイズを利用したときにハマることSharePointリストのフォームのカスタマイズを利用したときにハマること
SharePointリストのフォームのカスタマイズを利用したときにハマることた な
 
8 Yr Software QA_Resume_Automation and Manual
8 Yr  Software QA_Resume_Automation  and Manual8 Yr  Software QA_Resume_Automation  and Manual
8 Yr Software QA_Resume_Automation and ManualAbhilash Sekhar
 
FORCAS presentation
FORCAS presentationFORCAS presentation
FORCAS presentationYukikoKamei
 
DataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みDataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みRakuten Group, Inc.
 

Was ist angesagt? (9)

Power Apps? なにそれ? おいしいの?
Power Apps? なにそれ? おいしいの?Power Apps? なにそれ? おいしいの?
Power Apps? なにそれ? おいしいの?
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道
 
SharePointリストのフォームのカスタマイズを利用したときにハマること
SharePointリストのフォームのカスタマイズを利用したときにハマることSharePointリストのフォームのカスタマイズを利用したときにハマること
SharePointリストのフォームのカスタマイズを利用したときにハマること
 
8 Yr Software QA_Resume_Automation and Manual
8 Yr  Software QA_Resume_Automation  and Manual8 Yr  Software QA_Resume_Automation  and Manual
8 Yr Software QA_Resume_Automation and Manual
 
Manual do telefone grandstream 2110
Manual do telefone grandstream 2110Manual do telefone grandstream 2110
Manual do telefone grandstream 2110
 
Karthik .net resume
Karthik  .net resumeKarthik  .net resume
Karthik .net resume
 
FORCAS presentation
FORCAS presentationFORCAS presentation
FORCAS presentation
 
DataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みDataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組み
 
Kunal bhatia resume mass
Kunal bhatia   resume massKunal bhatia   resume mass
Kunal bhatia resume mass
 

Ähnlich wie Deploy your contents with entity share

Headless Drupal en pratique
Headless Drupal en pratiqueHeadless Drupal en pratique
Headless Drupal en pratiqueSimon Morvan
 
Plone FSR
Plone FSRPlone FSR
Plone FSRfulv
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...IT Event
 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialPatrick Chanezon
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...SPTechCon
 
Refactoring Large Web Applications with Backbone.js
Refactoring Large Web Applications with Backbone.jsRefactoring Large Web Applications with Backbone.js
Refactoring Large Web Applications with Backbone.jsStacy London
 
Refactor Large applications with Backbone
Refactor Large applications with BackboneRefactor Large applications with Backbone
Refactor Large applications with BackboneColdFusionConference
 
Refactor Large apps with Backbone
Refactor Large apps with BackboneRefactor Large apps with Backbone
Refactor Large apps with BackbonedevObjective
 
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
ZZ BC#7.5 asp.net mvc practice  and guideline refresh! ZZ BC#7.5 asp.net mvc practice  and guideline refresh!
ZZ BC#7.5 asp.net mvc practice and guideline refresh! Chalermpon Areepong
 
SharePoint 2014: Where to save my data, for devs!
SharePoint 2014: Where to save my data, for devs!SharePoint 2014: Where to save my data, for devs!
SharePoint 2014: Where to save my data, for devs!Ben Steinhauser
 
O365 Saturday - Deepdive SharePoint Client Side Rendering
O365 Saturday - Deepdive SharePoint Client Side RenderingO365 Saturday - Deepdive SharePoint Client Side Rendering
O365 Saturday - Deepdive SharePoint Client Side RenderingRiwut Libinuko
 
Jaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social WebJaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social WebPatrick Chanezon
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Mack Hardy
 
SharePoint Saturday Lisbon 2017 - SharePoint Framework, Angular & Azure Funct...
SharePoint Saturday Lisbon 2017 - SharePoint Framework, Angular & Azure Funct...SharePoint Saturday Lisbon 2017 - SharePoint Framework, Angular & Azure Funct...
SharePoint Saturday Lisbon 2017 - SharePoint Framework, Angular & Azure Funct...Sébastien Levert
 
How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...Katia Aresti
 
Crafting Evolvable Api Responses
Crafting Evolvable Api ResponsesCrafting Evolvable Api Responses
Crafting Evolvable Api Responsesdarrelmiller71
 
Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Estelle Weyl
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfoliocummings49
 

Ähnlich wie Deploy your contents with entity share (20)

Headless Drupal en pratique
Headless Drupal en pratiqueHeadless Drupal en pratique
Headless Drupal en pratique
 
Plone FSR
Plone FSRPlone FSR
Plone FSR
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...
 
Google Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocialGoogle Devfest Singapore - OpenSocial
Google Devfest Singapore - OpenSocial
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
 
Resume
ResumeResume
Resume
 
Refactoring Large Web Applications with Backbone.js
Refactoring Large Web Applications with Backbone.jsRefactoring Large Web Applications with Backbone.js
Refactoring Large Web Applications with Backbone.js
 
Refactor Large applications with Backbone
Refactor Large applications with BackboneRefactor Large applications with Backbone
Refactor Large applications with Backbone
 
Refactor Large apps with Backbone
Refactor Large apps with BackboneRefactor Large apps with Backbone
Refactor Large apps with Backbone
 
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
ZZ BC#7.5 asp.net mvc practice  and guideline refresh! ZZ BC#7.5 asp.net mvc practice  and guideline refresh!
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
 
SharePoint 2014: Where to save my data, for devs!
SharePoint 2014: Where to save my data, for devs!SharePoint 2014: Where to save my data, for devs!
SharePoint 2014: Where to save my data, for devs!
 
O365 Saturday - Deepdive SharePoint Client Side Rendering
O365 Saturday - Deepdive SharePoint Client Side RenderingO365 Saturday - Deepdive SharePoint Client Side Rendering
O365 Saturday - Deepdive SharePoint Client Side Rendering
 
Jaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social WebJaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social Web
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
SharePoint Saturday Lisbon 2017 - SharePoint Framework, Angular & Azure Funct...
SharePoint Saturday Lisbon 2017 - SharePoint Framework, Angular & Azure Funct...SharePoint Saturday Lisbon 2017 - SharePoint Framework, Angular & Azure Funct...
SharePoint Saturday Lisbon 2017 - SharePoint Framework, Angular & Azure Funct...
 
How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...
 
Crafting Evolvable Api Responses
Crafting Evolvable Api ResponsesCrafting Evolvable Api Responses
Crafting Evolvable Api Responses
 
Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0
 
Uma SunilKumar Resume
Uma SunilKumar ResumeUma SunilKumar Resume
Uma SunilKumar Resume
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfolio
 

Mehr von Smile I.T is open

Streamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon SessionStreamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon SessionSmile I.T is open
 
[Smile] atelier spark - salon big data 13032018
[Smile]   atelier spark - salon big data 13032018[Smile]   atelier spark - salon big data 13032018
[Smile] atelier spark - salon big data 13032018Smile I.T is open
 
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & AkeneoSéminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & AkeneoSmile I.T is open
 
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Smile I.T is open
 
Séminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application MétierSéminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application MétierSmile I.T is open
 
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...Smile I.T is open
 
eZ conference - Symfony Bundle enabling webfactory features
eZ conference - Symfony Bundle enabling webfactory featureseZ conference - Symfony Bundle enabling webfactory features
eZ conference - Symfony Bundle enabling webfactory featuresSmile I.T is open
 
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogueSéminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogueSmile I.T is open
 
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...Smile I.T is open
 
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Smile I.T is open
 
Meet Magento : Connected store with magento 2
Meet Magento : Connected store with magento 2Meet Magento : Connected store with magento 2
Meet Magento : Connected store with magento 2Smile I.T is open
 
Séminaire IoT EISTI du 14 avril 2016 avec Open Wide / Smile
Séminaire IoT EISTI du 14 avril 2016 avec Open Wide / SmileSéminaire IoT EISTI du 14 avril 2016 avec Open Wide / Smile
Séminaire IoT EISTI du 14 avril 2016 avec Open Wide / SmileSmile I.T is open
 
Présentation sur l'accessibilité numérique / Evènement université de Lille 3
Présentation sur l'accessibilité numérique / Evènement université de Lille 3 Présentation sur l'accessibilité numérique / Evènement université de Lille 3
Présentation sur l'accessibilité numérique / Evènement université de Lille 3 Smile I.T is open
 
Webinar Smile : Comment industrialiser votre SI avec Ansible ?
Webinar Smile : Comment industrialiser votre SI avec Ansible ?Webinar Smile : Comment industrialiser votre SI avec Ansible ?
Webinar Smile : Comment industrialiser votre SI avec Ansible ?Smile I.T is open
 
A high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTSA high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTSSmile I.T is open
 
Seminaire Drupal 8 à Nantes
Seminaire Drupal 8 à NantesSeminaire Drupal 8 à Nantes
Seminaire Drupal 8 à NantesSmile I.T is open
 

Mehr von Smile I.T is open (20)

Streamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon SessionStreamlined CMS - DrupalCon Session
Streamlined CMS - DrupalCon Session
 
ROM Android Customs
ROM Android Customs ROM Android Customs
ROM Android Customs
 
[Smile] atelier spark - salon big data 13032018
[Smile]   atelier spark - salon big data 13032018[Smile]   atelier spark - salon big data 13032018
[Smile] atelier spark - salon big data 13032018
 
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & AkeneoSéminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
Séminaire E-commerce "J'ai mal à mon catalogue" by Smile & Akeneo
 
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
 
Séminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application MétierSéminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application Métier
 
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
Blend Web Mix - Hackathon, Quand on ne sait pas où on va, autant y aller le ...
 
eZ conference - Symfony Bundle enabling webfactory features
eZ conference - Symfony Bundle enabling webfactory featureseZ conference - Symfony Bundle enabling webfactory features
eZ conference - Symfony Bundle enabling webfactory features
 
Les quick wins de l'UX
Les quick wins de l'UXLes quick wins de l'UX
Les quick wins de l'UX
 
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogueSéminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
Séminaire Smile & Akeneo : e-commerce - J'ai mal à mon catalogue
 
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
Webinar SMILE : "Découvrez Alfresco 5.1, la solution pour une gestion documen...
 
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
 
Meet Magento : Connected store with magento 2
Meet Magento : Connected store with magento 2Meet Magento : Connected store with magento 2
Meet Magento : Connected store with magento 2
 
Séminaire IoT EISTI du 14 avril 2016 avec Open Wide / Smile
Séminaire IoT EISTI du 14 avril 2016 avec Open Wide / SmileSéminaire IoT EISTI du 14 avril 2016 avec Open Wide / Smile
Séminaire IoT EISTI du 14 avril 2016 avec Open Wide / Smile
 
Présentation sur l'accessibilité numérique / Evènement université de Lille 3
Présentation sur l'accessibilité numérique / Evènement université de Lille 3 Présentation sur l'accessibilité numérique / Evènement université de Lille 3
Présentation sur l'accessibilité numérique / Evènement université de Lille 3
 
Webinar Smile : Comment industrialiser votre SI avec Ansible ?
Webinar Smile : Comment industrialiser votre SI avec Ansible ?Webinar Smile : Comment industrialiser votre SI avec Ansible ?
Webinar Smile : Comment industrialiser votre SI avec Ansible ?
 
A high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTSA high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTS
 
Seminaire Drupal 8 à Nantes
Seminaire Drupal 8 à NantesSeminaire Drupal 8 à Nantes
Seminaire Drupal 8 à Nantes
 
Webinar Smile et WSO2
Webinar Smile et WSO2Webinar Smile et WSO2
Webinar Smile et WSO2
 
Seminaire drupal8 Lille
Seminaire drupal8 LilleSeminaire drupal8 Lille
Seminaire drupal8 Lille
 

Kürzlich hochgeladen

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 🔝✔️✔️Delhi Call girls
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
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 GoalsJhone kinadey
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 

Kürzlich hochgeladen (20)

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 🔝✔️✔️
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
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
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 

Deploy your contents with entity share

  • 1. By @Florent_Torre - Paris Open Source Summit 2019 Deploy your content with Entity Share
  • 2. 1. Why sharing content? ▪ The 2 main use cases of sharing content 2. Why the Entity Share module? ▪ Differences with the Webfactory module ▪ Differences with the Deploy ecosystem 3. Entity Share’s architecture ▪ JSON:API usage ▪ Architecture ▪ Ecosystem ▪ Known problems ▪ Limitations ▪ Feature requests ▪ Roadmap ▪ Perspectives 4. Demo
  • 3. WHY SHARING CONTENT ? IN CONTEXT
  • 4. THE 2MAIN USE CASES OF SHARING CONTENT 4 DEPLOY CONTENT ON MULTIPLE WEBSITES IN INDUSTRIALIZATION PROCESS
  • 5. THE 2MAIN USE CASES OF SHARING CONTENT 5 DEPLOY CONTENT ON MULTIPLE WEBSITES IN INDUSTRIALIZATION PROCESS ▪Either architecture with content hub ▪Or cross-communications between different sites
  • 6. THE 2MAIN USE CASES OF SHARING CONTENT 6 DEPLOY CONTENT ON MULTIPLE WEBSITES IN INDUSTRIALIZATION PROCESS ▪Deploy content from preproduction to production (content staging), same as the content hub case ▪Retrieve content from production to development environments
  • 8. CHALLENGES FORCES IN SHORT ▪ Created in 2001 ▪ PHP ▪ 100% developed by the community (3000) Very big ecosystem, composed from a wide range of actors in size and type Contrib modules ▪ Webfactory ▪ Deploy Acquia has a turnkey solution for ▪ Websites creation ▪ Websites cloning ▪ Sharing content The product Acquia Content Hub is binding ▪ Content storage outside of Drupal ▪ High costs 8
  • 9. WEBFACTORY MODULE LIMITATIONS Allows multi-site management from a central website Facilitates the deployment of new sites ▪ Deploy a new “profile" directly from the backoffice Sharing content from the central website ▪ Share entities: node ▪ A "channel" mechanism allows only certain entities to be shared at certain websites Usage of Core webservices 9
  • 10. THE DEPLOY ECOSYSTEM Pushed by the community Quite unstable ▪ At least at the beginning of 2017 Binding at the workflow level More for content staging 10
  • 12. JSON:API USAGE ▪To provide entities listings ▪More stable and documented than GraphQL (At the beginning of 2017) ▪At the beginning of 2017, already an initiative for JSON:API to become a Core module ▪Easy to use 12
  • 13. JSON:API USAGE ENTITY SHARE PROVIDES A UI ON TOP OF THE JSON:API public function extractEntity(array $data) { // Format JSON as in // JsonApiDocumentTopLevelNormalizerTest::testDenormalize(). $prepared_json = [ 'data' => [ 'type' => $data['type'], 'attributes' => $data['attributes'], ], ]; $parsed_type = explode('--', $data['type']); return $this->jsonapiDocumentTopLevelNormalizer->denormalize($prepared_json, NULL, 'api_json', [ 'resource_type' => $this->resourceTypeRepository->get( $parsed_type[0], $parsed_type[1] ), ]); } 13
  • 14. ARCHITECTURE: 2 SUB-MODULES Entity share server ▪ Activate on the website that will provide the contents ▪ Provides the channel system ▪ Prepare a JSON:API endpoint URL to call by the client website: entity type, bundle, language, filters, sorts ▪ Plus listing of channels according to the authorized user Entity share client ▪ Activate on the website that will pull (or push) content ▪ Allow to set the websites on which to connect to ▪ Provides a pull form (and push form but on an experimental branch) THE 2 SUB-MODULES MAY BE ENABLED ON THE SAME SITE. 14
  • 15. ARCHITECTURE: GLOBAL VIEW OF THE PROCESS Check if an entity exists with this UUID ▪ If no entity is found, create a new one ▪ If an entity exists, create or update the translation regarding the language in the JSON data. Store the UUID in the processed entities list to avoid infinite loop Manage entity reference fields ▪ For each “relationship” (JSON;API) field, request the endpoint showing the list of entities referenced by the field ▪ For each of these entities, do the initial process ▪ Put the ids of the processed entities in the entity reference field value Manage physical files ▪ If the entity is a file, use its properties (URI) to get the content of the file WHEN PULLING, FOR EACH SELECTED ENTITY 15
  • 16. ENTITY SHARE’S ECOSYSTEM Entity Share async (sub-module) ▪ To mark content to be synced later by a queue during cron execution Entity Share cron (separated project) ▪ https://www.drupal.org/project/entity_sh are_cron ▪ Provides an UI to configure frequency of automated pull of channels ▪ For more complex usage, there is an example module in Entity Share: entity_share_client_test 16
  • 17. KNOWN PROBLEMS Workaround for Core limitation on link fields with internal link values: Use JSON:API Extras Metatag field breaks the import (#3060702) Not working when server website is behind HTTP authentication (#2856713) Implementation relies on some JSON:API internal classes (#2939827) Support of Dynamic Entity reference field is broken since JSON:API 2.x (#3056102) ALL THE DETAILS ON THE PROJECT PAGE AND IN THE MODULE ISSUES QUEUE 17
  • 18. LIMITATIONS To avoid side effects, config entities and users are not handled Impossible to import non-translatable entities (#2996220) Impossible to import content in a language not enabled (#3064328) Push form (#2856715): ▪ Impossible to PATCH translations (JSON:API) ▪ Impossible to PATCH file field (JSON:API) 18
  • 19. FEATURE REQUESTS Better Pull form (#3077808, #3077810, #3077815, #2891653, #2856719, #3064252) Avoid to synchronize already synced entities (#3080629, #3077976, #3009258) Parse RTE to get referenced entities (#3056911) : ▪ Entity embed ▪ Linkit Parse Link fields to get referenced entities (#3064276) Allow an entity to be updated locally after being synchronized once (#2975806) Compatibility with Block field (#3064331) Manage Pathauto behavior (#3064320) Better channel form (#2856717) 19
  • 20. ROADMAP Priority 1: ▪ Automated tests!!! (#2909022) ▪ bug reports Priority 2: ▪ Rework services and tests for better architecture and DX (#3060694) ▪ No more depend on JSON:API internal classes (#2939827) Priority 3: ▪ Feature requests depending on client needs and sponsored collaborations. ▪ Now a feature request must have automated tests before being merged!!! ALL THE DETAILS ON THE PROJECT PAGE AND IN THE MODULE ISSUES QUEUE 20
  • 21. PERSPECTIVES Entity Share V2?: ▪ Availability to have multiple bundles per channel (JSON:API Cross Bundles) ▪ System of configurable plugins to control behavior: ▪ Depth of handled relationships ▪ Sync all translations at once ▪ Parse RTE ▪ Parse Link field ▪ … See this issue to give and discuss the ideas. 21
  • 22. Thanks for your attention! And thanks to all the contributors!