EntwicklerCamp Feb 2008 - Lotus Notes 8 by variablepitch334


									Lotus Notes 8:
Plug-ins - is it easy to develop?
EntwicklerCamp, Feb 08
Andrejus Chaliapinas Owner of Infosana, IĮ IBM Advanced Business Partner a.chaliapinas@infosana.com

Today’s agenda
Who am I and Infosana? Lotus Notes 8 architecture and Composite Applications overview Productivity Tools and their relation to OpenOffice.org/IBM Lotus Symphony Eclipse plug-ins as a way of integration Case study/Demo 1: Composite Application with integrated Productivity Tools word processor control for text documents filling via ODT templates and user defined fields Case study/Demo 2: Useful Preferences plug-in

Who am I and Infosana?
Andrejus Chaliapinas Owner and chief architect of Infosana, IĮ (IBM Advanced Business Partner since 2005) Involved in Lotus technology since 1993 and great Lotus cc:Mail Involved in IBM WebSphere technology since 2001 Speaker
– IBM Software days/Lotus events in Vilnius, Lithuania since 2005

– 7 articles in Advisor Magazine on various Lotus/WebSphere/Rational integration topics

Lotus Expeditor
Client Platform for Portal, Forms, Sametime, Notes 8, WebSphere
WebSphere Portal Single access point for content and applications Local Portlet for use offline / mobile Compelling / responsive local U/I Composite desktop applications IBM Workplace Forms Forms based computing to accelerate business Forms integrated into composite desktop Offline forms access Electronic forms solution for people on the move Lotus Sametime Platform for real time business Links SOA to Sametime Sametime / Offline Messaging in composite applications

In Sametime and Notes Expeditor works under the covers

WebSphere Application Server Software for an on Demand business Extending applications beyond the Data Center Symmetric programming model An open alternative to .NET

Notes 8 Taking Collaboration to a new level Composite Desktop Applications Links people to process Extends SOA to Notes

IBM Lotus Expeditor Toolkit v6.1.1 (free download)
IBM Lotus Expeditor Toolkit provides a complete, integrated set of tools that allows you to develop, debug, test, package, and deploy client applications to IBM Lotus Expeditor V6.1.1, IBM Lotus Sametime V7.5.1, and IBM Lotus Notes V8. You can use the toolkit to develop the following types of client applications: Eclipse Rich Client Platform (RCP) applications (desktop client only) Eclipse embedded Rich Client Platform applications Web applications Embedded transaction applications Portlet applications (desktop client only) Database applications Messaging applications Web services applications Prerequisites: Eclipse v3.2.2 and Eclipse Web Tools Platform v1.5.4, RAD v7 for portlet applications. Eclipse v3.3 is not supported yet!

High Level Client Programming Model
NSF Component LCD ‘Next’ Component Web or Portlet Component Remote Portlet Component Rich Client Applications

NSF Container
Notes plug-in Actions/db design

Component Web/JSR 168 Designer Container Container JSP/JSR 168
xFaces JavaScript
HTML/JS Forms Viewer AJAX

WSRP Container

Your Container or Component
Host Access ActiveX .NET Java

Lotus Expeditor Platform Eclipse™

Composite Application Property Broker Infrastructure Plug-ins/Features





What are Composite Applications?
“Business style” mashups Collection of user-facing components brought together for a specific business purpose
– front end of Service Oriented Architecture (SOA)

Programming model
– – – – available in IBM WebSphere® Portal and Lotus Notes software surfaces content from multiple systems/applications aggregates different component types event/action cross component relationships

Supports business flexibility
– loosely coupled reusable components – on-demand assembly and wiring – impact user effectiveness

Composite Application Model - Definitions
Composite Application
– collection of components brought together for a business purpose

– contains UI, business logic and storage (e.g., NSF)

Component view
– presentation service/view into component (e.g., Notes view)

Property Broker Programming Model
Component interaction (aka event/action relationships)
– loosely coupled through properties and actions – mix-and-match different component technologies

Property is a typed exchangeable data (as of Lotus Notes v8.0.1 doesn’t support complex objects passing) Action is the logic to consume a property Components define their properties and actions
– can be defined via Property Broker Editor feature of Lotus Domino Designer

Wire connects properties to actions
– Event/action relationships – 1-to-1 or 1-to-many wiring options

End-to-End Process
Identify required components Reuse existing or build new components
– Create interface via IDE to support interaction via properties and actions – Link properties and actions in component via IDE

Assemble and wire your composite application
– Create composite application “skeleton” – Add needed components and define visual layout and page structure – Wire components in event/action relationships

Tools to build Components
Lotus Domino Designer
– script oriented development – standard Notes database design plus inter component communication

IBM Lotus Component Designer
– script oriented development – creates native components for browsers through WebSphere Portal – creates native components for rich clients (future)

Eclipse / Rational tools
– comprehensive Java, Eclipse and SWT capabilities – and Lotus Expeditor Toolkit

Extensions to Lotus Domino Designer 8
New design elements
Wiring Properties - (WSDL XML)
– contains property and action definitions – modified through Property Broker Editor

Applications - (CA XML)
– contains layout and navigation – contains event/action relationships – modified through Composite Application Editor

Build NSF components with Lotus Domino Designer
Property Broker Editor and Import WSDL functions to support properties and actions

New property for actions New LotusScript APIs for procedural support of inter-component communication (event/action relationships) Onselect view event handler

New property for view/folder columns

Building Eclipse-based Components
Properties and actions can be defined via Eclipse extension points and WSDL Properties can be exposed via Java APIs Three types of actions:
– – – Core Action - org.eclipse.core.commands.AbstractHandler SWT Action - org.eclipse.jface.action.Action AWT Action - java.awt.Component

Composite Application Editor: Assembly and Wiring
Optional install feature of Lotus Notes 8 software
Edit composite applications stored in NSF or on WebSphere Portal* NSF and Eclipse-based components added to and displayed on palette Drag-n-drop components onto page for WYSIWYG display Edit component and page runtime properties Wiring interface displays properties and actions of included components Connect properties to actions in 1-to-1 or 1-to-N event/action relationships Lotus Notes 8 client runtime for defined wiring is property broker

Define layout of pages and components

Define event/action relationships of components
*Assembly and wiring feature limited to users with installed feature and appropriate access

Productivity Tools and their relation to OpenOffice.org/IBM Lotus Symphony
Lotus Notes 8.0.0 includes a set of office productivity tools (PT) that support the OASIS Open Document Format (ODF) v1.0 standard:
– IBM Lotus Documents - word processing – IBM Lotus Spreadsheets - spreadsheet – IBM Lotus Presentations - presentation capabilities.

Included into Lotus Notes 8.0.0 PT are derived from OpenOffice.org v1.1 Recently released Lotus Symphony Beta 2 (free IBM office tools suite) is derived from OpenOffice v1.1 as well, but uses parts of upcoming Lotus Notes 8.0.1 code base

Productivity Tools integration possibility into Lotus Notes 8 applications
For Lotus Notes 8.0.0 the level of integration is not very robust:
– There is no same level of integration, which is available for MS Office tools (known as office automation) – Nothing yet exposed to LotusScript developer (changed in v8.0.1, UNO) – Some work needs to be done in Java via UNO (Universal Network Objects) API, which is the base component technology for OpenOffice.org

But…That integration is possible to achieve right now in Composite Applications via lightweight Eclipse plug-in

Integration plug-in dependencies/extension points
Dependencies (MANIFEST.MF):
– org.eclipse.core.runtime – org.eclipse.ui – com.ibm.productivity.tools.core – com.ibm.productivity.tools.dom – com.ibm.productivity.tools.ui – com.ibm.rcp.propertybroker – com.ibm.rcp.propertybroker.swt

Extension points (plugin.xml):
– org.eclipse.ui.views – com.ibm.rcp.propertybroker.PropertyBrokerDefinitions

Case study/Demo 1
Case study requirements:
– New application should utilize Composite Application approach – Composite Application should have embedded PT word processor control – There should be some way to fill predefined PT documents/templates user defined fields – LotusScript developers should use one simple LotusScript method for documents fields filling and not bother with Java related issues


Important Demo 1 points
You should enable Install Application/Application Management menu options via addition/correction of plugin_customization.ini file setting
– Edit <install_dir>/framework/rcp/plugin_customization.ini and add the following entry: com.ibm.notes.branding/enable.update.ui=true

Lotus Notes 8 Property Broker feature doesn’t support complex objects as properties passing, only strings. For complex objects passing JSON string serialization approach should be used (or similar delimiters way as in demo). User defined fields is possible to define now with latest Lotus Notes v8.0.1 Symphony!

Lotus Notes 8 client preferences
New place to deal with all client configuration settings Could be customized via Eclipse plug-in technique Still lacks to show you notes.ini file settings

Preferences plug-in dependencies/extension points
Dependencies (MANIFEST.MF):
– org.eclipse.core.runtime – org.eclipse.ui – com.ibm.notes.java.api

Extension points (plugin.xml):
– org.eclipse.ui.preferencePages

Case study/Demo 2
Case study requirements:
– Add new Preference page into default Preferences tree – Show Lotus Notes 8 client’s notes.ini configuration file settings in sorted way


Important Demo 2 points
Custom Preferences pages could be easily inserted into Preferences tree Their layout is based on SWT components If required they could form hierarchies inside Preferences tree and be dynamic, i.e. appear based on some element selection If needed it’s possible to utilize SOA/WebServices calls to populate Preference pages options selection

For more information
Getting started with the IBM Lotus Expeditor Toolkit V6.1.1 http://www.ibm.com/developerworks/lotus/library/expeditortoolkit/ Building Composite Applications http://www.redbooks.ibm.com/Redbooks.nsf/RedbookAbstrac ts/sg247367.html

Composite applications blog http://www.ibm.com/developerworks/blogs/page/CompApps

For more information (continued)
Alan Lepofsky’s blog http://www.alanlepofsky.net/alepofsky/alanblog.nsf/ Notes/Domino 8 Forum http://www-10.lotus.com/ldd/nd8forum.nsf

Thank you!

To top