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"

764 Aufrufe

Veröffentlicht am

Slides from the ICS.UG session in Bremen, 26.03.2015

Veröffentlicht in: Software
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

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

Keine Downloads
Aufrufe
Aufrufe insgesamt
764
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
9
Aktionen
Geteilt
0
Downloads
13
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

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

×