UKLUG 2012 - XPages Extensibility API - going deep!

Post on 22-Nov-2014

1.746 views 1 download

description

These slides have been shown at UKLUG 2012 in Cardiff and are an introduction to programming with the XPages Extensiblity API.

Transcript of UKLUG 2012 - XPages Extensibility API - going deep!

XPages Extensibility API – going deep

UKLUG, September 2012, Cardiff

René Winkelmeyer midpoints GmbH

2

René Winkelmeyer Senior Consultant

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)

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

OpenNTF Contributor and OpenNTF Director

About me

3

René Winkelmeyer Senior Consultant

•  Skype

muenzpraeger •  Twitter

muenzpraeger •  LinkedIn

muenzpraeger •  Facebook

muenzpraeger •  Slideshare

muenzpraeger •  G+

www.winkelmeyer.com/+

•  Web http://blog.winkelmeyer.com http://www.midpoints.de

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

4

I don‘t do XPages! I go deeper.

5

Agenda

What will we talk about? -  Differences XPages, Extension Library and Extensibility API

-  Starting with Plug-In-Development -  Code examples

-  Deployment

6

Agenda

What will we talk about? -  Differences XPages, Extension Library and Extensibility API

-  Starting with Plug-In-Development -  Code examples

-  Deployment

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.

8

XPages

§  The most powerful component is the editable area.

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.

10

XPages Extension Library

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!

12

XPages Extension Library

13

XPages Extension Library

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

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.

15

XPages Extensibility API

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

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

18

XPages Architektur

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.

20

Agenda

What will we talk about? -  Differences XPages, Extension Library and Extensibility API

-  Starting with Plug-In-Development -  Code examples

-  Deployment

21

Powered By Eclipse

22

Eclipse Plug-In-Architektur

23

IBM Clients/Server based on Eclipse

24

Development setup

§  We are using Eclipse 4.2 (32bit) – definetly not recommended by IBM.

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

26

Development setup

§  First create a new workspace

27

Development setup

§  Install new software in Eclipse

28

Development setup

§  Select the XPages SDK

29

Development setup

§  XPages SDK installation (I)

De-select this check boxDe-select this check box

30

Development setup

§  XPages SDK installation (II)

31

Development setup

§  XPages SDK installation (III)

32

Development setup

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

33

Development setup

§  XPages SDK installation (V)

34

Development setup

§  Configuration of the XPages SDK (I)

35

Development setup

§  Configuration of the XPages SDK (II)

36

Development setup

§  Configuration of the XPages SDK (III)

37

Development setup

§  Configuration of the XPages SDK (IV)

38

Development setup

§  Configuration of the XPages SDK (V)

39

Development setup

§  Configuration of the XPages SDK (VI)

40

Development setup

§  Configuration of the XPages SDK (VII)

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=openDocument

42

Development setup

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

43

Development setup

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

44

Development setup

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

45

Development setup

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

46

Development setup

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

47

Development setup

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

48

Development setup

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

49

Development setup

§  Creating the debug environment (I)

50

Development setup

§  Creating the debug environment (II)

51

Development setup

§  Creating the debug environment (II)

52

Development setup

§  Creating the debug environment (III)

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

54

Agenda

What will we talk about? -  Differences XPages, Extension Library and Extensibility API

-  Starting with Plug-In-Development -  Code examples

-  Deployment

55

Code examples

§  A simple UIComponent created with the XPages Extensibility API

Rendered with plug-inRendered with plug-in

Set the request scopeSet the request scope

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

57

Project structure

58

for identificationfor identification

MessagesDialog (UIComponent for Designer)

59

MessagesDialog (UIComponent for Designer)

60

MessagesRenderer (XPages output)

61

MessagesRenderer (XPages output)

helper methodhelper method

62

MessagesRenderer (XPages output)

63

MessagesRenderer (XPages output)

64

Library

Case-sensitiveCase-sensitive

Designer(UIComponent)Designer(UIComponent)

XPages(Renderer)XPages(Renderer)

65

manifest.mf

optional for JS addinoptional for JS addin

66

plugin.xml

plug-ins library classplug-ins library class

67

Configuration files

§  Simple till here...or?

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

68

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

69

messages.xsp-config

70

messages.xsp-config

71

messages.xsp-config

72

messages.xsp-config

73

plugin.xml für your own @Commands

74

Global Java definiton for your own @Commands

75

Detail class for your own @Commands

76

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

§  Setup a remote application for debugging.

77

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

78

Agenda

What will we talk about? -  Differences XPages, Extension Library and Extensibility API

-  Starting with Plug-In-Development -  Code examples

-  Deployment

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.

80

Thank you very much! And thank you for excellent evals! :-D