This session gives you the grand tour of XPages in the Lotus Notes client. You'll discover how easy it is to take your XPages Web apps offline, and then add custom client behaviors that really adapt your application to Lotus Notes client platform. Spread your wings and integrate your application with other client components using real-world use cases that can make a real difference to your business. Learn how to test and debug your XPages client app along the way, and see how XPages supports traditional Lotus Notes client features and get a glimpse of where these integration points will lead in the future. If you have plans for XPages on the Lotus Notes client, this session is a must for you!
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
1. AD108: XPages in the IBM Lotus® Notes®
Client - A Deep Dive!
Martin Donnelly | Software Architect
Teresa Monahan | Software Developer
2. Before We Begin...
● Please turn off:
▬ Pagers
▬ Cellphones
▬ Anything else that buzzes, sings, screams, beeps, chirps, barks, etc.
3. Financial Disclaimer
The information on the new product is intended to outline our general
product direction and it should not be relied on in making a purchasing
decision. The information on the new product is for informational purposes
only and may not be incorporated into any contract. The information on
the new product is not a commitment, promise, or legal obligation to
deliver any material, code or functionality. The development, release, and
timing of any features or functionality described for our products remains
at our sole discretion
4. Speaker Introductions
Martin Donnelly
● Software Developer: Iris Associates / Lotus Development
▬ IBM Lotus® Domino® Designer V4.6 – V6.01, IBM Lotus® 1-2-3® for Unix®,
LotusScript, etc.
● Software Architect: IBM Software Group, Ireland
▬ IBM® Rational® Application Developer (RAD)
▬ JavaServer™ Faces (JSF) Tooling
▬ Eclipse Visual Editor
▬ IBM Lotus® Component Designer 6.0
▬ IBM Lotus® Domino® Designer 8.5 / IBM Lotus® Domino® XPages
Teresa Monahan
● Software Developer: IBM Software Group, Ireland
▬ XPages in IBM Lotus® Notes® / IBM Lotus® Domino® 8.5
5. Agenda
● Why XPages for the Notes Client?
● How does XPages in the Notes Client work?
● XPages & Notes Client Features and Functionality
● Demos
● XPages in the Notes Client - Summary
● XPages in the Notes Client - Futures
● Q&A
5
6. XPages in the Notes Client *
● Goals for 8.5.1
▬ Enable Lotus Notes/Domino users to run XPages web applications offline
▬ Deliver the same UI experience running locally in Notes client
▬ Take advantage of Notes/Domino NSF replication capabilities
▬ Support XPages in the Notes Client on all client platforms
▬ Windows®
▬ Mac
▬ LINUX®
▬ Innovate & Integrate where practical, e.g.
▬ Leverage the client composite application model
▬ Integrate with Notes client workspace features as makes sense
▬ Provide a secure runtime environment for XPages client applications
* XPages in the Notes Client aka XPiNC
6
7. XPages in the Notes Client
● How it works – pretty much the same as on the server ;-)
Notes Client XPages requests sent to
an embedded Java Web
Web Container container
Embedded XULRunner
The XPages runtime
XPages UI Container
inserts as a generic web
XPages Runtime
module and provides a
virtual container for NSFs
Each NSF can be
In Short
projected as an auto-
NSF apps have a new XPages client launch option
When app is opened, this URL is passed to XPages client container deployed Web Module.
The container further transforms the URL ...
•Creates a instance of the XULRunner browser NSF design elements
•Sends a secure request to client web container (XSP, Java™ class files…)
The web container routes all XSP requests to the XPages runtime are made available as
XPages runtime renders pages back to the XULRunner browser module resources to the
servlet API.
7
8. Launching XPages in the Notes Client
● Launch Properties can be set in both Lotus Notes and Lotus Domino
Designer
Notes Client:
Lotus Domino Designer:
8
9. The XPages Client URL
● Built dynamically when an XPages application is invoked
▬ Based on the Client launch properties
● Syntax: notes://[server]/dbName.nsf/myPage.xsp?OpenXPage
● Client Address Bar:
● Opening XPages from other Lotus Notes applications
● Integration with other design elements (e.g. Forms)
● Bookmarking / Failover
9
10. Execution Modes
● Local
▬ NSF is in local data folder or sub-directory
▬ All data and resources are loaded locally and executed in local web
container
● Remote
▬ NSF resides on a Lotus Domino server
▬ Data and resources are loaded across a network
▬ Application logic is executed in the local web container
▬ No XPages code executes on the server
● Consistent with the existing client model
10
11. Customization of XPages in Notes
● Rich Client Platform Specific Properties
● Native Platform Dialogs
● Client Themes
▬ Ability to customize application user experience for the Notes Client
● XPages Toolbar
▬ Navigation, Clear Cache / Refresh Page, View Source, Print / Page Setup
● enableModifiedFlag
▬ Prompt to save any modified content
● Bookmarking XPages
● Failover Support
11
12. Customization of XPages in Notes
● SWT Dialogs instead of JavaScript™ Alert / Confirm Dialogs
Web Notes Client
● Client Side JavaScript Access to Java Platform Services
▬ XSP.Alert() XSP.Xxx();
▬ XSP._NotPublished();
12
13. Customization of XPages in Notes
● Rich Client Platform Specific Properties
▬ Provide a different user experience in Web and in Notes
▬ In Notes, analogous to traditional 'hide/when' functionality
● e.g. Discussion Template 8.5.1 Toolbar
<xp:label value="Welcome " id="labelWelcome">
<xp:label.rcp rendered="false"></xp:label.rcp>
</xp:label>
<xp:text escape="true" id="cfUserName" value="..">
<xp:text.rcp rendered="false"></xp:text.rcp>
</xp:text>
13
14. enableModifiedFlag
● Integrated with Notes Client document save model
▬ Main Save menu sensitive to modified document content
▬ Hooks explicit File Save / {Ctl}{S} operations
● Alerts user to unsaved content on certain events
▬ <Esc> / Close Window
▬ Navigation to other page (client + web)
● Applying enableModifiedFlag
▬ Can be applied to any input control
▬ Default setting overrides the need to specify behavior in many places
▬ disableModifiedFlag flag allows an input control to explicitly “opt out” of the process
● Handles client side and server side validation scenarios
▬ Client side JavaScript reports an error before save can be performed
▬ Server side validator finds an error after the page is submitted
14
15. XPages Client Theme
● Support for Client Themes
▬ Different look and feel when applications are used in the Notes Client
● 8.5.1 Application Properties panel extended
▬ Allow property setting for Application, Web and Client Themes
● No “Out of the Box” Client Theme for 8.5.1
15
17. XPages & Composite Applications
● Full integration with Composite Applications in 8.5.1
▬ Comp App supports XPages applications and XPages Components
● Component
▬ A new 8.5.1 Component design element
▬ Define Publish & Receive Events for interaction with other components
▬ Define Parameters to conditionalize component behavior
▬ Uses iWidget format
● Wire XPages components together or with other components
▬ PIM (mail),
▬ Managed Browser
▬ Symphony Containers
▬ Widgets...
● New XPages Simple Actions to easily handle Publish Events
● Receive Events handled with JavaScript
17
18. XPages in Composite Applications Editor
● Adding an XPages Application/Component to a Composite Application
▬ Easy peasy – select Notes URL via the design element picker or just specify manually
18
19. XPages in Composite Applications
XPages Discussion
Component
Google
Widget
Notes Mail View
19
20. XPages Comp App Demo
How to use XPages in a Composite Application
Online video available on developer.lotus.com
http://www-10.lotus.com/ldd/ddwiki.nsf/dx/XPage_Components_in_Notes_851_Videos.htm
20
21. Client Web
XPiNC Testing / Debugging Preview Preview
● Lotus Domino Designer Preview
● XPages Client Toolbar
▬ View Source
Cache
View Source View Config
▬ Clear Private Data / Refresh Management
▬ View Browser Configuration
● Error Logging
▬ <NOTES_INSTALL_DIR>/data/IBM_TECHNICAL_SUPPORT
▬ Help > Support > View Trace
▬ Help > Support > View Log
21
22. XPiNC Testing / Debugging
● ClientSide JavaScript Error Reporting:
▬ In Notes status bar
▬ Enable Firebug® Lite
▬ Rename xsp.properties.sample in <NotesData>/properties to
xsp.properties
▬ Comment in the line: xsp.client.script.dojo.djConfig=isDebug:true
▬ Restart the Notes Client.
● ServerSide JavaScript Error Reporting:
▬ Append -RPARAMS -console to the shortcut that launches Notes
e.g. C:Notesnotes.exe -RPARAMS -console
▬ Notes Client will launch with a console window
▬ print() and _dump() statements output to the console
22
23. All Permissions
Security Properties Network
File
● Java Security Key Objective
▬ Prevent an XPages Application from executing Java code that could
read data from the users workstation and transmit it to a remote host
over the network.
● XPages Java Security Manager integrated with the Notes Execution
Control List (ECL) service
● Notes Client “Execution Security Alert” dialog used to warn a user when
code in an XPages application executes a protected operation
● User can:
▬ Deny the action
▬ Trust it one time only
▬ Modify the ECL so that it will always be a trusted action
23
24. Security
● Java backend classes security correctly surfaced in XPiNC
● Client Side JavaScript Access to Java Platform Services
▬ Limited client platform services available via client side JavaScript
▬ Mostly UI functions like dialog rendering
● Session IDs
▬ Assigned when an application is opened using XPages
▬ Persists until the Notes Tab is closed
● Port Number in XPages URL
▬ Randomly generated when Notes Client is launched
▬ Persists until the Notes Client is closed
24
26. Future Directions
● We have started to address some of these points in 8.5.x
The information on the new product is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information on the new product is for
informational purposes only and may not be incorporated into any contract. The information on the new product is not a commitment, promise, or legal obligation to deliver any material, code or
functionality. The development, release, and timing of any features or functionality described for our products remains at our sole discretion
26
27. Client Consistent Behaviors
● Enabling appropriate Menu items
▬ File Replicate, Open in Designer etc
8.5.1 8.5.x
The information on the new product is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information on the new product is for
informational purposes only and may not be incorporated into any contract. The information on the new product is not a commitment, promise, or legal obligation to deliver any material, code or
functionality. The development, release, and timing of any features or functionality described for our products remains at our sole discretion
27
28. Link Handling & Document Interoperability
● Domino web links / Notes client links
▬ XPages uses MIME format when storing documents on the web and client
▬ No web/client interoperabiltiy issues for pure XPages apps
▬ Traditional Notes applications use a native CD binary format for rich text
▬ Native rich text document must undergo a conversion for XPages to display
▬ Happens automatically in 8.5.1
▬ CD / MIME conversions can be lossy on certain content types
▬ Can occur when users are using regular Notes client & XPiNC on same app
▬ Same scenario as when Notes client apps also serve as Domino web apps
▬ User is warned of potential format loss if writing a document that requires conversion
▬ 8.5.x aims for better round-tripping of rich text documents
Links in Traditional Notes App Same links when viewed in XPiNC
The information on the new product is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information on the new product is for
informational purposes only and may not be incorporated into any contract. The information on the new product is not a commitment, promise, or legal obligation to deliver any material, code or
functionality. The development, release, and timing of any features or functionality described for our products remains at our sole discretion
28
29. Window Management Client Behaviors
● Window Management
▬ Lift single-window restriction on XPages client applications
▬ e.g. Allow documents to be opened in new window like traditional Notes client apps
▬ Dictate behavior by preference settings
▬ Leverage existing client preferences
▬ Enable this option for
▬ Links
▬ Page navigations
▬ View column selections
The information on the new product is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information on the new product is for
informational purposes only and may not be incorporated into any contract. The information on the new product is not a commitment, promise, or legal obligation to deliver any material, code or
functionality. The development, release, and timing of any features or functionality described for our products remains at our sole discretion
29
30. Summary
● Walk through of XPages in the Notes Client
▬ Launching XPages in the Notes Client
▬ Local / Remote modes
● Customization of XPages in the Notes Client
▬ RCP Specific Properties
▬ Client Themes
▬ Native Dialogs
● Notes Integration Points
▬ Bookmarking XPages
▬ enableModifiedFlag
▬ XPages Toolbar
▬ Enhanced Menu Integration (File Replicate etc)
● Composite Application Integration
● Test / Debug Utilities
● Security
● Possible Future Directions for XPiNC
30
31. Resources
● Developer Works
developer.lotus.com
● Lotus Domino Designer wiki
www.lotus.com/ldd/ddwiki.nsf
● Domino Designer Help
● Open NTF – Project: XPages Wiki
www.openntf.org
● Planet Lotus - an aggregation of Lotus related blogs and news
planetlotus.org
● THE VIEW
www.eview.com
● The XPages Blog
xpagesblog.com
31
32. Other XPages Sessions...
JMP101 IBM Lotus Domino Designer 101 - Dan O'Connor and Ishfak Bhagat
AD101 IBM Lotus Domino Designer: Full Speed Ahead! - Maureen Leland and Peter Janzen
AD102 Extreme Makeover -- LotusScript and Java Editor Edition - David Taieb and Santosh Kumar
AD103 Have it Your Way: Extending IBM Lotus Domino Designer - Andre Guirard and Xin Rang Wang
AD106 XPages Just Keep Getting Better - Philippe Riand and Eamon Muldoon
AD107 Enhance Your Existing Applications with XPages - Steve Castledine and Stephan Wissel
AD109 XPages Performance and Scalability - Mark Gargan and Tony McGuckin
AD110 Unleash the Power of Xpages - Philippe Riand and Maire Kehoe
AD111 Harnessing the Power of Server-Side JavaScript and Other Advanced XPage Techniques - Tim
Tripcony and Stephan Wissel
AD112 Development and Deployment of Lotus Product Documentation Wikis - Craig Lordan and Kevin
Giles
AD113 IBM Lotus Notes Discussion Template: Next Generation and Other OpenNTF Assets - Niklas
Heidloff and Steve Castledine
BP207 Make Your XPage Apps "Pop!" with CSS and Themes - Declan Lynch and David Leedy
SHOW112 How to Build an XPages Application from Start to Finish - Tim Clark and Matt White
Security in IBM Lotus Notes Client
ID105 What's New in IBM Lotus Notes Client Security - Srinivas Kolaparthi and John Banks-Binici
32
33. Questions
● Your turn -- contact information:
▬ Martin Donnelly, martin_donnelly@ie.ibm.com
▬ Teresa Monahan, monahant@ie.ibm.com
33