SlideShare a Scribd company logo
XPages Extensibility API – going deep

      NLLUG 2012, Rotterdam


           René Winkelmeyer
            midpoints GmbH
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

                     Services
                          • Notes / Domino Consulting
                          • E-Mail Management
                          • App Development (IBM Connections, RCP,
                             XPages, mobile)

                     We mobilize Notes
 René Winkelmeyer          • Lotus Traveler planning & deployment
 Senior Consultant
                           • mobile app development
                           • Apple iOS Device Management
                           • Secure mobile content delivery

                     OpenNTF Contributor and OpenNTF Director
                     => File Navigator: http://filenavigator.openntf.org
                     => XSnippets: http://xsnippets.openntf.org
                                                                           2
•   Skype
                             muenzpraeger
                    •   Twitter
                             muenzpraeger
                    •   LinkedIn
                             muenzpraeger
                    •   Facebook
                             muenzpraeger
                    •   Slideshare
                             muenzpraeger
                    •   G+
                             www.winkelmeyer.com/+

                    •   Web
René Winkelmeyer               http://blog.winkelmeyer.com
Senior Consultant              http://www.midpoints.de

                    •   Mail
                               mail@winkelmeyer.com
                               rene.winkelmeyer@midpoints.de


                                                               3
Agenda



   What will be talk about?


   - Differences XPages, Extension Library and Extensibility API


   - Starting with Plug-In-Development


   - Code examples


   - Deployment




                                                                   4
Agenda



   What will be talk about?


   - Differences XPages, Extension Library and Extensibility API


   - Starting with Plug-In-Development


   - Code examples


   - Deployment




                                                                   5
XPages


 XPages is a great technlogy 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).




                                                                          6
XPages


 The most powerful component is the editable area.




                                                      7
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.




                                                          8
XPages Extension Library




                           9
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!




                                                                        10
XPages Extension Library




                           11
XPages Extension Library


 You‘ll finde it on OpenNTF http://extlib.openntf.org




                                                         12
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
  uninstann 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.




                                                                       13
XPages Extensibility API




                           14
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




                                                                       15
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
       ...
                                                                   16
XPages Architektur




                     17
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.




                                                                            18
Agenda



   What will be talk about?


   - Differences XPages, Extension Library and Extensibility API


   - Starting with Plug-In-Development


   - Code examples


   - Deployment




                                                                   19
Powered By Eclipse




                     20
Eclipse Plug-In-Architektur




                              21
IBM Clients/Server based on Eclipse




                                      22
Development setup


 We are using Eclipse 3.7 (32bit).




                                      23
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=openDocum
     ent&name=XPages%20SDK%20for%20Eclipse%20RCP




                                                                             24
Development setup


 First create a new workspace




                                 25
Development setup


 Install new software in Eclipse




                                    26
Development setup


 Select the XPages SDK




                          27
Development setup


 XPages SDK installation (I)




            De-select this check box




                                       28
Development setup


 XPages SDK installation (II)




                                 29
Development setup


 XPages SDK installation (III)




                                  30
Development setup


 XPages SDK installation (IV)
    Unsigned means, that the plug-ins aren‘t digitially signed. That‘s ok.




                                                                              31
Development setup


 XPages SDK installation (V)




                                32
Development setup


 Configuration of the XPages SDK (I)




                                        33
Development setup


 Configuration of the XPages SDK (II)




                                         34
Development setup


 Configuration of the XPages SDK (III)




                                          35
Development setup


 Configuration of the XPages SDK (IV)




                                         36
Development setup


 Configuration of the XPages SDK (V)




                                        37
Development setup


 Configuration of the XPages SDK (VI)




                                         38
Development setup


 Configuration of the XPages SDK (VII)




                                          39
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=CBF
     874E9C4607B4C8625799D00287B8C&action=openDocument




                                                                           40
Development setup


 Installation of the Debug-Plug-In (I)




                                          41
Development setup


 Installation of the Debug-Plug-In (II)




                                           42
Development setup


 Installation of the Debug-Plug-In (III)




                                            43
Development setup


 Installation of the Debug-Plug-In (IV)




                                           44
Development setup


 Installation of the Debug-Plug-In (V)




                                          45
Development setup


 Installation of the Debug-Plug-In (VI)




                                           46
Development setup


 Installation of the Debug-Plug-In
     Currently only local Domino server installations are supported.




                                                                        47
Development setup


 Creating the debug environment (I)




                                       48
Development setup


 Creating the debug environment (II)




                                        49
Development setup


 Creating the debug environment (II)




                                        50
Development setup


 Creating the debug environment (III)




                                         51
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




                                                                     52
Agenda



   What will be talk about?


   - Differences XPages, Extension Library and Extensibility API


   - Starting with Plug-In-Development


   - Code examples


   - Deployment




                                                                   53
Code examples


 A simple UIComponent created with the XPages Extensibility API




                                                                   54
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

                                                                                           55
Project structure




                    56
MessagesDialog (UIComponent for Designer)




                  for identification




                                            57
MessagesDialog (UIComponent for Designer)




                                            58
MessagesRenderer (XPages output)




                                   59
MessagesRenderer (XPages output)




                                   helper method




                                                   60
MessagesRenderer (XPages output)




                                   61
MessagesRenderer (XPages output)




                                   62
Library




          63
manifest.mf




              optional for JS addin




                                      64
plugin.xml




             plug-ins library class



                                      65
Configuration files


 Simple till here...or?

 Now we have to create the configuration files. Remember the
  standards!




                                                                66
messages-faces-config.xml (XPage-Rendering)




                                              67
messages.xsp-config




                      68
messages.xsp-config




                      69
messages.xsp-config




                      70
messages.xsp-config




                      71
plugin.xml für your own @Commands




                                    72
Global Java definiton for your own @Commands




                                               73
Detail class for your own @Commands




                                      74
D-E-B-U-G-G-I-N-G


 Setup a remote application for debugging.




                                              75
D-E-B-U-G-G-I-N-G




                    76
Agenda



   What will be talk about?


   - Differences XPages, Extension Library and Extensibility API


   - Starting with Plug-In-Development


   - Code examples


   - Deployment




                                                                   77
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.

 Import the plug-ins into the database.

 Replicate the database with all according servers.
     Plug-Ins couldn‘t be replicated as the „normally“ reside on the file
      system.

 Set the notes.ini parameter
  OSGI_HTTP_DYNAMIC_BUNDLES=<datenbank.nsf> on the
  Domino servers.

 Finished. Restart the http and that‘s all.
                                                                             78
Thank you very much!




                       79

More Related Content

PDF
Plugins 2.0 & OSGi Gotchas - Atlassian Summit 2010
PDF
Joomla 1.5
PDF
JavaOne 2009 Deploying Apps for Consumers Bof5150
PPT
10 11-hart installing pythonsoftware
PDF
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
PPTX
02 - Build and Deployment Management
PDF
Skype testing overview
PDF
Modernisation of Legacy PHP Applications to Symfony2 - Symfony Live Berlin 2012
Plugins 2.0 & OSGi Gotchas - Atlassian Summit 2010
Joomla 1.5
JavaOne 2009 Deploying Apps for Consumers Bof5150
10 11-hart installing pythonsoftware
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
02 - Build and Deployment Management
Skype testing overview
Modernisation of Legacy PHP Applications to Symfony2 - Symfony Live Berlin 2012

Viewers also liked (7)

PDF
Extensible Api Management with WSO2 API Manager
PDF
SNoUG 2015 - Vaadin - XPages 2.0?
PDF
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!
PDF
DNUG 2016 - Salesforce and IBM Domino - same same, but different
PPTX
Using APIs
PDF
Domino OSGi Development
PPTX
BP207 - Meet the Java Application Server You Already Own – IBM Domino
Extensible Api Management with WSO2 API Manager
SNoUG 2015 - Vaadin - XPages 2.0?
engage 2016 - Get ready for moving from Java 6 to Java 8 - Now!
DNUG 2016 - Salesforce and IBM Domino - same same, but different
Using APIs
Domino OSGi Development
BP207 - Meet the Java Application Server You Already Own – IBM Domino
Ad

Similar to NLLUG 2012 - XPages Extensibility API - going deep! (20)

PDF
UKLUG 2012 - XPages Extensibility API - going deep!
PDF
iOSDevUK Conference- DevOps for iOS Apps
PPTX
Django simplified : by weever mbakaya
PPTX
FooConf23_Bringing the cloud back down to earth.pptx
PPTX
SharePoint Framework tips and tricks
KEY
Tycho - Building plug-ins with Maven
PPTX
Jfokus_Bringing the cloud back down to earth.pptx
PPTX
6 Skills Every Dot Net Developer Should Master
PPTX
SwissJUG_Bringing the cloud back down to earth.pptx
PDF
Programming tools for developers
PPTX
Free Mongo on OpenShift
PDF
Dr. Strangelove, or how I learned to love plugin development
PPTX
OpenShift with Eclipse Tooling - EclipseCon 2012
PDF
Applying the Unix Philosophy to Django projects: a report from the real world
PDF
Agile NCR 2013- Shekhar Gulati - Open shift platform-for-rapid-and-agile-deve...
PDF
Java Is A Programming Dialect And Registering Stage Essay
PDF
DevOps - A Purpose for an Institution.pdf
PPT
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...
PPTX
DevOps-CI_CD_JAVA_JAVA______Jenkins.pptx
PDF
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You
UKLUG 2012 - XPages Extensibility API - going deep!
iOSDevUK Conference- DevOps for iOS Apps
Django simplified : by weever mbakaya
FooConf23_Bringing the cloud back down to earth.pptx
SharePoint Framework tips and tricks
Tycho - Building plug-ins with Maven
Jfokus_Bringing the cloud back down to earth.pptx
6 Skills Every Dot Net Developer Should Master
SwissJUG_Bringing the cloud back down to earth.pptx
Programming tools for developers
Free Mongo on OpenShift
Dr. Strangelove, or how I learned to love plugin development
OpenShift with Eclipse Tooling - EclipseCon 2012
Applying the Unix Philosophy to Django projects: a report from the real world
Agile NCR 2013- Shekhar Gulati - Open shift platform-for-rapid-and-agile-deve...
Java Is A Programming Dialect And Registering Stage Essay
DevOps - A Purpose for an Institution.pdf
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...
DevOps-CI_CD_JAVA_JAVA______Jenkins.pptx
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You
Ad

More from René Winkelmeyer (20)

PPTX
2017 engage.ug - Salesforce and IBM for Developers
PPTX
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...
PPTX
2016 ISBG - Salesforce App Cloud and Domino - same same, but different
PPTX
2016 SUTOL - Salesforce App Cloud and Domino - same same, but different
PPTX
Salesforce Developer User Group Munich - October 2016
PDF
Connect 2016 - Going Mobile With IBM Verse
PDF
Connect 2016 - IBM Mobile Connect - Real World Usage Scenarios
PDF
SOCCNX 2015 - Application Integration Blast
PDF
ICONUK 2015 - Gradle Up!
PDF
engage 2015 - IBM Notes Traveler Daily Business
PDF
engage 2015 - Domino App Development - Where should I go now?
PPTX
ConnectED 2015 - IBM Notes Traveler Daily Business
PDF
ICONUK 2014 - From Idea To App
PDF
engage 2014 - JavaBlast
PDF
EntwicklerCamp 2014 - DOTS reloaded
PDF
BLUG 2013 - Mobile Application Delivery - Choices, choices, choices
PDF
Connect 2013 - Making IBM Traveler High Available: Extending And Securing The...
PDF
Connect 2013 - Infrastructure Fitness and Design Simplicity for IBM Mobile Co...
PDF
UKLUG 2011 - iOS devices in the enterprise
PDF
BLUG 2011 - Explaining the IBM Social Business Toolkit
2017 engage.ug - Salesforce and IBM for Developers
2016 ISBG - Enterprise integration done right with Salesforce Lightning, IBM ...
2016 ISBG - Salesforce App Cloud and Domino - same same, but different
2016 SUTOL - Salesforce App Cloud and Domino - same same, but different
Salesforce Developer User Group Munich - October 2016
Connect 2016 - Going Mobile With IBM Verse
Connect 2016 - IBM Mobile Connect - Real World Usage Scenarios
SOCCNX 2015 - Application Integration Blast
ICONUK 2015 - Gradle Up!
engage 2015 - IBM Notes Traveler Daily Business
engage 2015 - Domino App Development - Where should I go now?
ConnectED 2015 - IBM Notes Traveler Daily Business
ICONUK 2014 - From Idea To App
engage 2014 - JavaBlast
EntwicklerCamp 2014 - DOTS reloaded
BLUG 2013 - Mobile Application Delivery - Choices, choices, choices
Connect 2013 - Making IBM Traveler High Available: Extending And Securing The...
Connect 2013 - Infrastructure Fitness and Design Simplicity for IBM Mobile Co...
UKLUG 2011 - iOS devices in the enterprise
BLUG 2011 - Explaining the IBM Social Business Toolkit

Recently uploaded (20)

PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Machine Learning_overview_presentation.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Electronic commerce courselecture one. Pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Getting Started with Data Integration: FME Form 101
PDF
Empathic Computing: Creating Shared Understanding
PDF
Encapsulation theory and applications.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Spectral efficient network and resource selection model in 5G networks
Group 1 Presentation -Planning and Decision Making .pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Assigned Numbers - 2025 - Bluetooth® Document
Machine Learning_overview_presentation.pptx
Big Data Technologies - Introduction.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Electronic commerce courselecture one. Pdf
20250228 LYD VKU AI Blended-Learning.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
gpt5_lecture_notes_comprehensive_20250812015547.pdf
SOPHOS-XG Firewall Administrator PPT.pptx
Getting Started with Data Integration: FME Form 101
Empathic Computing: Creating Shared Understanding
Encapsulation theory and applications.pdf
MIND Revenue Release Quarter 2 2025 Press Release
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Accuracy of neural networks in brain wave diagnosis of schizophrenia

NLLUG 2012 - XPages Extensibility API - going deep!