SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
Faceted Navigation on Related Documents
           A tale of Daemons
      Wouter Danes – Hippo Gettogether – 20 april 2012
                                        Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   1
Agenda

•   About me
•   User story: faceted navigation for site wide search
•   Problem: practice doesn’t follow theory
•   Possible solution: Derived Data Engine
•   Better solution: Daemons!
•   Some stuff we learned
•   How to improve Hippo to make this easier



                                   Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   2
About me – Wouter Danes

•   Hired via Orange11 @Rijksoverheid.nl
•   Java (10yrs experience) & Hippo Developer
•   Competence Manager Java & Hippo @ Hinttech
•   Merciless refactorer
•   Loves Test Driven Development
•   Hippo CMS Committer
•   Experience as a Software Architect



                                  Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   3
Faceted Navigation for Site Wide Search

•     Rijksoverheid.nl needed a new side wide search
•     It had to allow a drill down via four facets:
    Responsible Department(s), Document Type
    Applicable Theme(s), Document Date


•     This is pretty easy with Hippo
•     It supports faceted navigation out of the box
•     At least, if all facets are properties on the
    document…

                                        Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   4
Problem: Practice doesn’t follow theory


We would like to see:




                                  Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   5
Problem: Practice doesn’t follow theory


We would like to see:     The horrible truth:




                                  Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   6
Possible solution: Derived Data Engine

•     Derived Data Engine allows you to define input
    properties and then populate some output
    properties
•     You can even point to a single property on ONE
    related Document (property name is secretly a
    relative path… shhh!) f.ex: “common:subject/@title”
•     You cannot point to a property on multiple
    related Documents
•     Crap! Foiled again!


                                      Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   7
We Were About to Give Up…
When Jeroen and me came up with this idea…



                                             Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   8
Daemon Modules

•     Hippo CMS supports Daemon Modules
•     Daemon modules are services that run in the
    Hippo Repository in their own (admin) session
•     We could let this daemon module derive stuff for
    us, all we have to do is send it the UUID of the
    node…
•     Let’s see how that works!


      !! WARNING: DO NOT TRY THIS AT HOME !!

                                    Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   9
Sequence Diagram
Now show us some code..!!



                            Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   10
Nothing Like the Smell of a Good Hack!
(unless you are Hippo Support and got 50+ clients doing this…)



                                                   Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   11
Stuff We Learned

1.     Make Sure Your Daemon Module is Thread Safe
2.     When you Refresh a Session, any Nodes it
     Supplied Become Useless
3.     If a Derived Data Function Throws an Exception,
     any Action that Triggered the Node.save() Fails
4.     This Will Break (Delayed) Publishing!


              1 + 2 + 3 + 4 == Weird Artifacts
              ….That took us ages to debug
                                      Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   12
How to improve Hippo to make this easier

•     Improve Derived Data Engine to Supply a
    Decorated Read Only Node instead of Input &
    Output Properties
•     Read Only is Good, Because You Don’t Want the
    Derived Data Engine to Modify/Save other Nodes
•     Output Concept Can Stay Like it Is


•     Or… Wait for SOLR Integration


                                      Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   13
Wouter Danes
                     @wouterdanes




  Tel: +31–(0)88–268 25 00                                 Address:                           Delftechpark 37i
 Mob: +31-(0) 6 1158 8264                                                                     2628 XJ Delft
E-mail: Wouter.danes@hinttech.com                                                             The Netherlands

         Delft   San Francisco      Novi Sad   Nordic            United Kingdom
                                                    Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   14

Weitere ähnliche Inhalte

Andere mochten auch

Hippo get together workshop automatic export
Hippo get together   workshop automatic exportHippo get together   workshop automatic export
Hippo get together workshop automatic exportHippo
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)Carsten Ziegeler
 
2η πανελλήνια ημέρα σχ. αθλητισμού
2η πανελλήνια ημέρα σχ. αθλητισμού2η πανελλήνια ημέρα σχ. αθλητισμού
2η πανελλήνια ημέρα σχ. αθλητισμούkogxylak
 
Module%201%20 physics%20basic%20science
Module%201%20 physics%20basic%20scienceModule%201%20 physics%20basic%20science
Module%201%20 physics%20basic%20scienceSarah Rodriguez
 
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.kogxylak
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformNuxeo
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repositorynobby
 
我想請你吃飯 (繁体)
我想請你吃飯 (繁体)我想請你吃飯 (繁体)
我想請你吃飯 (繁体)Na Li
 
Η χημεία του κρασιού
Η χημεία του κρασιούΗ χημεία του κρασιού
Η χημεία του κρασιούkogxylak
 
App and web with Hippo CMS and AngularJS
App and web with Hippo CMS and AngularJS App and web with Hippo CMS and AngularJS
App and web with Hippo CMS and AngularJS Peter Broekroelofs
 
你不是我的男朋友 (繁體)
你不是我的男朋友 (繁體)你不是我的男朋友 (繁體)
你不是我的男朋友 (繁體)Na Li
 
Introducing Hippo CMS 10.2
Introducing Hippo CMS 10.2Introducing Hippo CMS 10.2
Introducing Hippo CMS 10.2Hippo
 

Andere mochten auch (15)

Hippo get together workshop automatic export
Hippo get together   workshop automatic exportHippo get together   workshop automatic export
Hippo get together workshop automatic export
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)
 
What's new in JSR-283?
What's new in JSR-283?What's new in JSR-283?
What's new in JSR-283?
 
2η πανελλήνια ημέρα σχ. αθλητισμού
2η πανελλήνια ημέρα σχ. αθλητισμού2η πανελλήνια ημέρα σχ. αθλητισμού
2η πανελλήνια ημέρα σχ. αθλητισμού
 
Module%201%20 physics%20basic%20science
Module%201%20 physics%20basic%20scienceModule%201%20 physics%20basic%20science
Module%201%20 physics%20basic%20science
 
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
 
2008-12 OJUG JCR Demo
2008-12 OJUG JCR Demo2008-12 OJUG JCR Demo
2008-12 OJUG JCR Demo
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management Platform
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repository
 
我想請你吃飯 (繁体)
我想請你吃飯 (繁体)我想請你吃飯 (繁体)
我想請你吃飯 (繁体)
 
Η χημεία του κρασιού
Η χημεία του κρασιούΗ χημεία του κρασιού
Η χημεία του κρασιού
 
App and web with Hippo CMS and AngularJS
App and web with Hippo CMS and AngularJS App and web with Hippo CMS and AngularJS
App and web with Hippo CMS and AngularJS
 
JCR and ModeShape
JCR and ModeShapeJCR and ModeShape
JCR and ModeShape
 
你不是我的男朋友 (繁體)
你不是我的男朋友 (繁體)你不是我的男朋友 (繁體)
你不是我的男朋友 (繁體)
 
Introducing Hippo CMS 10.2
Introducing Hippo CMS 10.2Introducing Hippo CMS 10.2
Introducing Hippo CMS 10.2
 

Ähnlich wie Hippo gettogether april 2012 faceted navigation a tale of daemons

How we build project for Open Source
How we build project for Open SourceHow we build project for Open Source
How we build project for Open SourceAlexander Zayats
 
Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019Hannes Lowette
 
Build your next application in weeks and not months with Groovy and Grails
Build your next application in weeks and not months with Groovy and GrailsBuild your next application in weeks and not months with Groovy and Grails
Build your next application in weeks and not months with Groovy and GrailsPeople10 Technosoft Private Limited
 
SEO with RoboHelp
SEO with RoboHelpSEO with RoboHelp
SEO with RoboHelpWvanWeelden
 
Dev ops foundation v3 candidate handout(1)
Dev ops foundation v3   candidate handout(1)Dev ops foundation v3   candidate handout(1)
Dev ops foundation v3 candidate handout(1)Sugata Bhattacharya
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedAlexander Makarov
 
A Big Data Journey: Bringing Open Source to Finance
A Big Data Journey: Bringing Open Source to FinanceA Big Data Journey: Bringing Open Source to Finance
A Big Data Journey: Bringing Open Source to FinanceSlim Baltagi
 
Orange County HUG - Agile Data on HDP
Orange County HUG - Agile Data on HDPOrange County HUG - Agile Data on HDP
Orange County HUG - Agile Data on HDPHortonworks
 
Code sharing at MediaEval
Code sharing at MediaEvalCode sharing at MediaEval
Code sharing at MediaEvalAdam Rae
 
DevOps -- A 10 year retrospective (based on interviews conducted at DevOps Da...
DevOps -- A 10 year retrospective (based on interviews conducted at DevOps Da...DevOps -- A 10 year retrospective (based on interviews conducted at DevOps Da...
DevOps -- A 10 year retrospective (based on interviews conducted at DevOps Da...Barton George
 
LA HUG - Agile Analytics Applications on HDP
LA HUG - Agile Analytics Applications on HDPLA HUG - Agile Analytics Applications on HDP
LA HUG - Agile Analytics Applications on HDPHortonworks
 
Beginner android
Beginner androidBeginner android
Beginner androidSmriti Das
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Molieremfrancis
 
Open Apereo - Web components workshop
Open Apereo - Web components workshopOpen Apereo - Web components workshop
Open Apereo - Web components workshopbtopro
 

Ähnlich wie Hippo gettogether april 2012 faceted navigation a tale of daemons (20)

How we build project for Open Source
How we build project for Open SourceHow we build project for Open Source
How we build project for Open Source
 
Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019
 
Build your next application in weeks and not months with Groovy and Grails
Build your next application in weeks and not months with Groovy and GrailsBuild your next application in weeks and not months with Groovy and Grails
Build your next application in weeks and not months with Groovy and Grails
 
SEO with RoboHelp
SEO with RoboHelpSEO with RoboHelp
SEO with RoboHelp
 
Dev ops foundation v3 candidate handout(1)
Dev ops foundation v3   candidate handout(1)Dev ops foundation v3   candidate handout(1)
Dev ops foundation v3 candidate handout(1)
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
A Big Data Journey: Bringing Open Source to Finance
A Big Data Journey: Bringing Open Source to FinanceA Big Data Journey: Bringing Open Source to Finance
A Big Data Journey: Bringing Open Source to Finance
 
Orange County HUG - Agile Data on HDP
Orange County HUG - Agile Data on HDPOrange County HUG - Agile Data on HDP
Orange County HUG - Agile Data on HDP
 
Code sharing at MediaEval
Code sharing at MediaEvalCode sharing at MediaEval
Code sharing at MediaEval
 
DevOps -- A 10 year retrospective (based on interviews conducted at DevOps Da...
DevOps -- A 10 year retrospective (based on interviews conducted at DevOps Da...DevOps -- A 10 year retrospective (based on interviews conducted at DevOps Da...
DevOps -- A 10 year retrospective (based on interviews conducted at DevOps Da...
 
LA HUG - Agile Analytics Applications on HDP
LA HUG - Agile Analytics Applications on HDPLA HUG - Agile Analytics Applications on HDP
LA HUG - Agile Analytics Applications on HDP
 
Zend
ZendZend
Zend
 
Yocto Project - OSCON 7-17-2012
Yocto Project - OSCON 7-17-2012Yocto Project - OSCON 7-17-2012
Yocto Project - OSCON 7-17-2012
 
Intelli j idea-report
Intelli j idea-reportIntelli j idea-report
Intelli j idea-report
 
Beginner android
Beginner androidBeginner android
Beginner android
 
Bridging the Gap
Bridging the GapBridging the Gap
Bridging the Gap
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
 
Gerrit Workshop
Gerrit WorkshopGerrit Workshop
Gerrit Workshop
 
Open Apereo - Web components workshop
Open Apereo - Web components workshopOpen Apereo - Web components workshop
Open Apereo - Web components workshop
 
America Runs on Excel and HDF5 - Glued together by Python
America Runs on Excel and HDF5 - Glued together by PythonAmerica Runs on Excel and HDF5 - Glued together by Python
America Runs on Excel and HDF5 - Glued together by Python
 

Kürzlich hochgeladen

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Kürzlich hochgeladen (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

Hippo gettogether april 2012 faceted navigation a tale of daemons

  • 1. Faceted Navigation on Related Documents A tale of Daemons Wouter Danes – Hippo Gettogether – 20 april 2012 Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 1
  • 2. Agenda • About me • User story: faceted navigation for site wide search • Problem: practice doesn’t follow theory • Possible solution: Derived Data Engine • Better solution: Daemons! • Some stuff we learned • How to improve Hippo to make this easier Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 2
  • 3. About me – Wouter Danes • Hired via Orange11 @Rijksoverheid.nl • Java (10yrs experience) & Hippo Developer • Competence Manager Java & Hippo @ Hinttech • Merciless refactorer • Loves Test Driven Development • Hippo CMS Committer • Experience as a Software Architect Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 3
  • 4. Faceted Navigation for Site Wide Search • Rijksoverheid.nl needed a new side wide search • It had to allow a drill down via four facets: Responsible Department(s), Document Type Applicable Theme(s), Document Date • This is pretty easy with Hippo • It supports faceted navigation out of the box • At least, if all facets are properties on the document… Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 4
  • 5. Problem: Practice doesn’t follow theory We would like to see: Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 5
  • 6. Problem: Practice doesn’t follow theory We would like to see: The horrible truth: Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 6
  • 7. Possible solution: Derived Data Engine • Derived Data Engine allows you to define input properties and then populate some output properties • You can even point to a single property on ONE related Document (property name is secretly a relative path… shhh!) f.ex: “common:subject/@title” • You cannot point to a property on multiple related Documents • Crap! Foiled again! Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 7
  • 8. We Were About to Give Up… When Jeroen and me came up with this idea… Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 8
  • 9. Daemon Modules • Hippo CMS supports Daemon Modules • Daemon modules are services that run in the Hippo Repository in their own (admin) session • We could let this daemon module derive stuff for us, all we have to do is send it the UUID of the node… • Let’s see how that works! !! WARNING: DO NOT TRY THIS AT HOME !! Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 9
  • 10. Sequence Diagram Now show us some code..!! Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 10
  • 11. Nothing Like the Smell of a Good Hack! (unless you are Hippo Support and got 50+ clients doing this…) Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 11
  • 12. Stuff We Learned 1. Make Sure Your Daemon Module is Thread Safe 2. When you Refresh a Session, any Nodes it Supplied Become Useless 3. If a Derived Data Function Throws an Exception, any Action that Triggered the Node.save() Fails 4. This Will Break (Delayed) Publishing! 1 + 2 + 3 + 4 == Weird Artifacts ….That took us ages to debug Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 12
  • 13. How to improve Hippo to make this easier • Improve Derived Data Engine to Supply a Decorated Read Only Node instead of Input & Output Properties • Read Only is Good, Because You Don’t Want the Derived Data Engine to Modify/Save other Nodes • Output Concept Can Stay Like it Is • Or… Wait for SOLR Integration Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 13
  • 14. Wouter Danes @wouterdanes Tel: +31–(0)88–268 25 00 Address: Delftechpark 37i Mob: +31-(0) 6 1158 8264 2628 XJ Delft E-mail: Wouter.danes@hinttech.com The Netherlands Delft San Francisco Novi Sad Nordic United Kingdom Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 14