Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
www.ics.ug #icsug
Fix & fertig:
Best Practises für "XPages-Migranten"
Oliver Busse, 26.03.2015
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Oliver Busse
• „Bleeding Yellow“ seit R4.5
• Certified Lotus Instr...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
• Worum geht's?
– Alltags-Anforderungen mit XPages umsetzen
– Kein...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Warum kein ServerSide Javascript?
• SSJS wird zur Laufzeit interpr...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
• Datenbank- & Nutzerprofile migrieren
– „Klassische“ Profildokume...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Datenbank- & Nutzerprofile migrieren
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Was wir häufig vorfinden: Profildokumente
Nachteile
• Man sieht si...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Was wir häufig vermisst haben
DatabaseScript != Globale Deklaratio...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Performance-Killer
Viele dieser Formeln bremsen die Anwendung aus
...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Transformation
Item1=Values1
Item2=Values2
Item3=Values3
...
Notes...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
• Umwandlung von Profildokumenten in
„normale“ Dokumente
1. Erzeug...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
• Key für Database Profile = dbprofile
• Key für Nutzer Profile = ...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
• 3 Klassen:
– DatabaseProfileBean
– AppConfigBean
– UserProfileBe...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
faces-config.xml
<faces-config>
<!-- Database Profile Bean -->
<ma...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
• Request
– kurzzeitig für die Dauer einer Anfrage bis zur Antwort...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
DEMO
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Nutzer- und Umgebungsinformationen
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Nutzer- & Umgebungsinformationen
Namensvariationen
Zugriffslevel
A...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
faces-config.xml: EnvironmentBean
<?xml version="1.0" encoding="UT...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Beispiel: Variationen des Nutzernamens
<p>
<xp:label
value="#{java...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Beispiel: ACL Options
Der Löschen-Button ist nur
verfügbar, wenn d...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Sogar in Themes nutzbar!
<theme
extends="flatly"
xmlns:xsi="http:/...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
DEMO
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Volltextsuche vs. Facettensuche
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Facetted Search
„Bei der Facettensuche oder Facettennavigation
wer...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Facetted Search
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
„Prominente“ Beispiele
amazing.com cyberharbor
muse
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Facetted Search mit Domino?
1. Fulltext Search
2. Eingrenzen des E...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
FacettedSearchBean (Session scoped)
FacettenSuchbegriff
FacettedSe...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Code/DEMO
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Facetted Search: Ausblick & Alternativen
• Graph-DB Funktionalität...
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
www.ics.ug #icsug
Best Practises für "XPages-Migranten"
Quellen
http://de.wikipedia.org/wiki/Facettensuche
http://lucene.a...
Nächste SlideShare
Wird geladen in …5
×

Fix & fertig: Best Practises für "XPages-Migranten"

1.127 Aufrufe

Veröffentlicht am

Slides from the ICS.UG session in Bremen, 26.03.2015

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Fix & fertig: Best Practises für "XPages-Migranten"

  1. 1. www.ics.ug #icsug Fix & fertig: Best Practises für "XPages-Migranten" Oliver Busse, 26.03.2015
  2. 2. www.ics.ug #icsug Best Practises für "XPages-Migranten" Oliver Busse • „Bleeding Yellow“ seit R4.5 • Certified Lotus Instructor seit 2001 • IBM Champion for ICS in 2015 • OpenNTF Contributor & Board Member • XPages Advocate • Framework-süchtig, vor allem Bootstrap
  3. 3. www.ics.ug #icsug Best Practises für "XPages-Migranten" • Worum geht's? – Alltags-Anforderungen mit XPages umsetzen – Keine Angst vor Java mit XPages  – Vermeidung von @Formeln in SSJS – Denkanstöße & Best Practises • Worum geht es nicht? – XPages Einführung – Java für Einsteiger – Komplette Anwendungsmigration Übersicht
  4. 4. www.ics.ug #icsug Best Practises für "XPages-Migranten" Warum kein ServerSide Javascript? • SSJS wird zur Laufzeit interpretiert • SSJS wird zur Laufzeit kompiliert • SSJS-Kompilat wird ausgeführt, ist aber kaum zu debuggen
  5. 5. www.ics.ug #icsug Best Practises für "XPages-Migranten" • Datenbank- & Nutzerprofile migrieren – „Klassische“ Profildokumente vs. Scoped Beans – Wertelisten immer verfügbar machen • Nutzer- & Umgebungsinformationen – was darf und soll der Nutzer sehen & können • Volltextsuche vs. Facettensuche – Zusätzliche Datenfilterung mit Tags Themen
  6. 6. www.ics.ug #icsug Best Practises für "XPages-Migranten" Datenbank- & Nutzerprofile migrieren
  7. 7. www.ics.ug #icsug Best Practises für "XPages-Migranten" Was wir häufig vorfinden: Profildokumente Nachteile • Man sieht sie ohne Hilfsmittel nicht • Man kann sie nur programmatisch erzeugen und bearbeiten • Zum Teil Probleme mit der Replikation • Relativ viel Code nötig, um auf Daten zuzugreifen • Caching ;-) Vorteile • Schneller Zugriff auch ohne Ansichten / Lookups • Caching
  8. 8. www.ics.ug #icsug Best Practises für "XPages-Migranten" Was wir häufig vermisst haben DatabaseScript != Globale Deklarationen Leider gekapselt, kein Zugriff von außen (außer Database Events)
  9. 9. www.ics.ug #icsug Best Practises für "XPages-Migranten" Performance-Killer Viele dieser Formeln bremsen die Anwendung aus eines von vielen...
  10. 10. www.ics.ug #icsug Best Practises für "XPages-Migranten" Transformation Item1=Values1 Item2=Values2 Item3=Values3 ... NotesDocument Key1=ValueMap1 Key2=ValueMap2 Key3=ValueMap3 ... HashMap NSF-basiert, Lookup nötig Speicher-basiert, direkter Zugriff
  11. 11. www.ics.ug #icsug Best Practises für "XPages-Migranten" • Umwandlung von Profildokumenten in „normale“ Dokumente 1. Erzeugen einer entsprechenden Lookup-Ansicht 2. Optional: entsprechende Masken 3. Erstellen der Java Beans 4. Definition der Bean-Klassen in der faces-config.xml Zutaten
  12. 12. www.ics.ug #icsug Best Practises für "XPages-Migranten" • Key für Database Profile = dbprofile • Key für Nutzer Profile = Kanonischer Name • Key für Wertlisten = frei definierbar, eindeutig Lookup Ansicht
  13. 13. www.ics.ug #icsug Best Practises für "XPages-Migranten" • 3 Klassen: – DatabaseProfileBean – AppConfigBean – UserProfileBean • Die DatabaseProfileBean initialisiert das Dokument, falls es noch nicht vorhanden ist • Die UserProfileBean initialisiert das Dokument, wenn der Nutzer es speichert Java Beans
  14. 14. www.ics.ug #icsug Best Practises für "XPages-Migranten" faces-config.xml <faces-config> <!-- Database Profile Bean --> <managed-bean> <managed-bean-name>dbprofile</managed-bean-name> <managed-bean-class>com.icsug.DatabaseProfileBean </managed-bean-class> <managed-bean-scope>application</managed-bean-scope> </managed-bean> <!-- User Profile Bean --> <managed-bean> <managed-bean-name>userprofile</managed-bean-name> <managed-bean-class>com.icsug.UserProfileBean </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <!-- Application Configuration --> <managed-bean> <managed-bean-name>application</managed-bean-name> <managed-bean-class>com.icsug.AppConfigBean </managed-bean-class> <managed-bean-scope>application</managed-bean-scope> </managed-bean> </faces-config>
  15. 15. www.ics.ug #icsug Best Practises für "XPages-Migranten" • Request – kurzzeitig für die Dauer einer Anfrage bis zur Antwort (pro Nutzer) • View – innerhalb einer Seite, auch bei partiellem Refresh (pro Nutzer) • Session – Pro Nutzer für die Dauer der Anmeldung • Application – Anwendungsweit für die Dauer der Laufzeit (z.B. bis Server Neustart bzw. Re-Initialisierung) Exkurs: Bean Scopes
  16. 16. www.ics.ug #icsug Best Practises für "XPages-Migranten" DEMO
  17. 17. www.ics.ug #icsug Best Practises für "XPages-Migranten" Nutzer- und Umgebungsinformationen
  18. 18. www.ics.ug #icsug Best Practises für "XPages-Migranten" Nutzer- & Umgebungsinformationen Namensvariationen Zugriffslevel ACL Options notes.ini Informationen Environment Bean
  19. 19. www.ics.ug #icsug Best Practises für "XPages-Migranten" faces-config.xml: EnvironmentBean <?xml version="1.0" encoding="UTF-8"?> <faces-config> <!-- Environment Bean --> <managed-bean> <managed-bean-name>env</managed-bean-name> <managed-bean-class>com.icsug.EnvironmentBean </managed-bean-class> <managed-bean-scope>view</managed-bean-scope> </managed-bean> </faces-config>
  20. 20. www.ics.ug #icsug Best Practises für "XPages-Migranten" Beispiel: Variationen des Nutzernamens <p> <xp:label value="#{javascript:env.userName}" id="label1"> </xp:label> </p> <p> <xp:label value="#{javascript:env.commonUserName}" id="label2"> </xp:label> </p> <p> <xp:label value="#{javascript:env.abbreviatedUserName}" id="label3"> </xp:label> </p>
  21. 21. www.ics.ug #icsug Best Practises für "XPages-Migranten" Beispiel: ACL Options Der Löschen-Button ist nur verfügbar, wenn der Nutzer dies per ACL auch kann
  22. 22. www.ics.ug #icsug Best Practises für "XPages-Migranten" Sogar in Themes nutzbar! <theme extends="flatly" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="platform:/plugin/com.ibm.designer.domino.style kits/schema/stylekit.xsd"> <!-- display a submit type button only if user can create documents via ACL --> <control> <name>Button.Submit</name> <property type="boolean"> <name>rendered</name> <value>#{env.createDocuments}</value> </property> </control> </theme>
  23. 23. www.ics.ug #icsug Best Practises für "XPages-Migranten" DEMO
  24. 24. www.ics.ug #icsug Best Practises für "XPages-Migranten" Volltextsuche vs. Facettensuche
  25. 25. www.ics.ug #icsug Best Practises für "XPages-Migranten" Facetted Search „Bei der Facettensuche oder Facettennavigation werden anhand einer Facettenklassifikation Suchtreffer eingegrenzt, beispielsweise in Produkt- oder Bibliothekskatalogen. Die Facetten nutzen zur Filterung Metadaten der jeweiligen Einträge.“ http://de.wikipedia.org/wiki/Facettensuche
  26. 26. www.ics.ug #icsug Best Practises für "XPages-Migranten" Facetted Search
  27. 27. www.ics.ug #icsug Best Practises für "XPages-Migranten" „Prominente“ Beispiele amazing.com cyberharbor muse
  28. 28. www.ics.ug #icsug Best Practises für "XPages-Migranten" Facetted Search mit Domino? 1. Fulltext Search 2. Eingrenzen des Ergebnisses mit Metadaten- Auswahl 1. Suche nach Metadaten-Auswahl 2. Durchsuchen des Ergebnisses mit Fulltext Search
  29. 29. www.ics.ug #icsug Best Practises für "XPages-Migranten" FacettedSearchBean (Session scoped) FacettenSuchbegriff FacettedSearch Bean DocumentCollection (ArrayList<SearchResultEntry>)
  30. 30. www.ics.ug #icsug Best Practises für "XPages-Migranten" Code/DEMO
  31. 31. www.ics.ug #icsug Best Practises für "XPages-Migranten" Facetted Search: Ausblick & Alternativen • Graph-DB Funktionalität in der OpenNTF API • 3rd party Graph-DB benutzen (z.B. Apache Solr)
  32. 32. www.ics.ug #icsug Best Practises für "XPages-Migranten"
  33. 33. www.ics.ug #icsug Best Practises für "XPages-Migranten" Quellen http://de.wikipedia.org/wiki/Facettensuche http://lucene.apache.org/solr/ https://www.focul.net/focul-best-practice-faceted-filtering-xpages-using-java-beans/ https://bitbucket.org/zeromancer1972/icsug-2015-demo

×