Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
Find your data
Next
Download to read offline and view in fullscreen.

0

Share

Download to read offline

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

Download to read offline

Slides from the ICS.UG session in Bremen, 26.03.2015

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

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

Slides from the ICS.UG session in Bremen, 26.03.2015

Views

Total views

1,641

On Slideshare

0

From embeds

0

Number of embeds

9

Actions

Downloads

13

Shares

0

Comments

0

Likes

0

×