UKLUG 2012 - XPages Extensibility API - going deep!
1. XPages Extensibility API – going deep
UKLUG, September 2012, Cardiff
René Winkelmeyer
midpoints GmbH
2. About me
midpoints GmbH
http://www.midpoints.de
IBM Advanced Business Partner
IBM Design Partner for Domino Next
IBM Mobile Design Partner
Apple Enterprise Developer & MDM Program
Samsung MDM Partner
Services
• Notes / Domino Consulting
• E-Mail Management
• App Development (IBM Connections, RCP,
XPages, mobile, iOS, Android)
René Winkelmeyer
Senior Consultant We mobilize Notes
• Lotus Traveler planning & deployment
• mobile app development
• Apple iOS Device Management with
midpoints iOS.profiler
• Secure Domino-based mobile content with
midpoints doc.Store
2
OpenNTF Contributor and OpenNTF Director
5. Agenda
What will we talk about?
- Differences XPages, Extension Library and Extensibility API
- Starting with Plug-In-Development
- Code examples
- Deployment
5
6. Agenda
What will we talk about?
- Differences XPages, Extension Library and Extensibility API
- Starting with Plug-In-Development
- Code examples
- Deployment
6
7. XPages
§ XPages is a great technology and expands our possibilities – from
the point of administrators, developers and users.
§ Starting with XPages could be really simple. For the very first steps
is just drag‘n‘drop, computing stuff and so on.
§ To be honest: Domino web development never was so easy (after
you‘ve learned the basics) - even if it takes „slightly“ more time.
7
9. XPages / XPages Extension Library
§ There are some things which aren‘t so easy...
§ You are missing controls in the pallette
§ OneUI ist too complex
§ You want some custom rendering
§ ...
§ Here the XPages Extension Library comes to your help.
9
11. XPages Extension Library
§ IBM has introduced the XPages Extensibility API with Notes/Domino
8.5.2.
§ This API is a set of Java classes and methods which allow to
integrate specialised functionality directly into XPages.
§ This means XPages in the browser and XPages in the Notes client.
§ IBM has used this API to provide the well-known XPages Extension
Library – (first) on OpenNTF and than as part of the core product!
11
14. XPages Extension Library
§ It‘s part of Notes/Domino 8.5.3 as „Upgrade Pack 1“ – full product
support through IBM!
§ Part number: CI5GIEN
§ Watch out: If you want to use the Upgrade Pack 1 you‘ll have to
uninstall previous versions of the OpenNTF Extension Library.
§ IBM installs the UP1 in the program directory. The OpenNTF
components are installed in the data directory.
§ Currently only available as Installer – not as Updatesite.
14
16. XPages Extensibility API
§ It only makes sense to develop your own extensions if you need the
same functionality across multiple applications.
§ An extension (aka OSGi Plug-In) needs only to deployed once per
server or client – not per application.
http://www.osgi.org <= start here
16
17. XPages Extensibility API
§ So called „artefacts“ can be added to the existing API during
runtime.
§ JSF is an „open standard“ which APIs are publically available.
§ The XPages APIs are public since Domino 8.5.2.
§ Artefacts can be:
§ UI Controls
§ Converters
§ Validators
§ Data Sources
§ Simple Actions
§ Language Bindings
§ ...
17
19. XPages API Concepts
§ XPages Library
§ OSGi bundle, contains Java code, configuration files
§ Controls
§ Components which are available in the Designer pallette
§ Renderer
§ Renderer are responsible for displaying the output (HTML, CSS, ...)
§ Complex Types
§ Those are i. e. used to create encapsulated functions or store data.
19
20. Agenda
What will we talk about?
- Differences XPages, Extension Library and Extensibility API
- Starting with Plug-In-Development
- Code examples
- Deployment
20
24. Development setup
§ We are using Eclipse 4.2 (32bit) – definetly not recommended by IBM.
24
25. Development setup
§ For keeping it simple: use the OpenNTF project „XPages SDK for
Eclipse RCP.
§ Nathan T. Freeman:
http://www.openntf.org/internal/home.nsf/project.xsp?
action=openDocument&name=XPages%20SDK%20for%20Eclipse
%20RCP
25
41. Development setup
§ You shouldn‘t develop without debugging. So we‘re installing a
debugger.
§ We are using the OpenNTF Domino Debug Plug-In.
§ http://www.openntf.org/internal/home.nsf/release.xsp?
documentId=CBF874E9C4607B4C8625799D00287B8C&action=openD
ocument
41
53. Development setup
§ Add the following notes.ini parameters to the locally installed
Domino server (they are needed for the remote debugging)
§ JAVADEBUGOPTIONS=transport=dt_socket,server=y,suspend=n,addr
ess=8000
§ JAVAENABLEDEBUG=1
53
54. Agenda
What will we talk about?
- Differences XPages, Extension Library and Extensibility API
- Starting with Plug-In-Development
- Code examples
- Deployment
54
55. Code examples
§ A simple UIComponent created with the XPages Extensibility API
Set the request scope
Rendered with plug-in
55
56. General library structure
§ Java files
§ Controls
§ javax.faces.component.UIComponent
§ Base for all UI components
§ Renderers
§ javax.faces.render.Renderer
§ Writes the output to the browser
§ Configuration files
§ faces-config.xml
§ Runtime JSF configuration, defines i. e. the renderer
§ .xsp-config
§ Defines the controls, is used to display within Designer and for compiling the
XPages
§ plugin.xml
§ Adding the extensions
56
78. Agenda
What will we talk about?
- Differences XPages, Extension Library and Extensibility API
- Starting with Plug-In-Development
- Code examples
- Deployment
78
79. Deployment Domino-Server
§ Create a new database/application based on the Updatesite
template. I highly recommend to use a dedicated database for
server-only plug-ins in a production environment.
§ Import the plug-ins into the database.
§ Replicate the database with all according servers.
§ Plug-Ins couldn‘t be replicated as they „normally“ reside on the file
system.
§ Set the notes.ini parameter
OSGI_HTTP_DYNAMIC_BUNDLES=<database.nsf> on the Domino
servers.
§ Finished. Restart the http and that‘s all.
79
80. Thank you very much!
And thank you for excellent evals! :-D
80