SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
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

Más contenido relacionado

Destacado

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
 

Destacado (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
 

Similar a 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
 

Similar a 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
 

Último

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
[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
 

Último (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
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
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
[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