2. Agenda
•About me
•What‘s this?
•Preamble
•Migrate database and user profiles
• Legacy profile documents vs. Java Beans
• Value lists made available over the whole application
•User and environment information
• What can a user see and use?
•Extending Fulltext search to a facetted search
• Filtering your data with meta tags
3. Oliver Busse
• „Bleeding Yellow“ since 2000
• OpenNTF Board Member
• IBM Champion for ICS in 2015
• Engage.UG first-timer
4. Overview
•What‘s this?
• Transforming & re-using commonly used legacy patterns in
XPages
• Don‘t fear Java
• Avoid @Formulas in SSJS
• Ideas for best practices
•What‘s it not?
• An XPages Introduction
• A Java beginner‘s guide
• A complete application migration strategy
5. Preamble
•Why not to use SSJS „excessively“?
• SSJS is interpreted at runtime
• SSJS is compiled at runtime (every time you call it!)
• Compiled SSJS is hard to debug while executed
7. What we find in legacy apps: profile documents
Disadvantages
• You cannot see them without
using tools
• You can edit and create them
only programmatically
• Sometimes replication issues
• Unwanted Caching ;-)
Advantages
• Quick access without using
lookup views
• Caching
8. What we missed in many cases
DatabaseScript != Global Declarations
Encapsuled, no access from outside
(except Database Events)
11. Ingredients
•Transformation of profile documents to „standard“
documents
1. Create a corresponding lookup view
2. Optional: corresponding forms for maintenance
3. Create the Java Bean classes
4. Define those Bean classes in faces-config.xml
12. Preparation: Lookup Views
•Key for Database Profiles = dbprofile
•Key for User Profiles = Canonical Name
•Key for Value Lists = free but unique
13. Preparation: Java Beans
• 3 Classes:
• DatabaseProfileBean
• AppConfigBean
• UserProfileBean
• The DatabaseProfileBean initializes the
document if it doesn‘t exist
• The UserProfileBean initializes the document
when the user saves it for the first time
15. Digression: Bean Scopes & Lifecycles
•Request
• Lives beginning with the request to receiving the response
•View
• Within a page until changing the page, even during partial
refreshes
•Session
• Per user session
•Application
• During the life time of th application (e.g. until server restart or
calling an initialization method)
25. Facetted Search
„Faceted search, also called faceted navigation or faceted
browsing, is a technique for accessing information organized
according to a faceted classification system, allowing users to
explore a collection of information by applying multiple filters.“
http://en.wikipedia.org/wiki/Faceted_search
28. Facetted Search with Domino?
1. Fulltext Search
2. Filtering result from extra meta data
1. Meta data search with facet selection
2. Fulltext Search in results