lotususergroup.org virtual user group meeting - the real world integration

53
The Real World of Integration: How Lotus Notes & Domino Can Work with Microsoft Office, Lotus Symphony and the Power of Integra for Notes John D. Head Alex Kassabov

Upload: akassabov

Post on 18-Nov-2014

1.950 views

Category:

Technology


0 download

DESCRIPTION

Slide deck from The Real World Integration webinar for LotusUserGroup.org. Presented by John Head and Alex Kassabov of PSC.

TRANSCRIPT

Page 1: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

The Real World of Integration: How Lotus Notes & Domino Can Work with Microsoft Office, Lotus Symphony and the Power of Integra for Notes

John D. Head

Alex Kassabov

Page 2: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Who are we?

John D. Head (www.johndavidhead.com)

Director of Enterprise Collaboration at PSC Group, LLC

Speaker, Author – Lotus Guru

Alex Kassabov (kassabov.wordpress.com)

Vice President of Collaboration at PSC Group, LLC

Speaker – Industry Expert

Page 3: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

PSC Group, LLC

IBM Premium Business Partner for 18+ Years

Microsoft Managed Partner

Notes & Domino 8.5 Design Partner

Host of IdeaJam.net

Former Host of OpenNTF.org

Winner of 2007 & 2009 Lotus Awards!

Host of the following blogs: Ed Brill’s

(www.edbrill.com) Alan Lepofsky’s Notes Tip’s

(www.alanlepofsky.net) Alan Gartenberg - Sametime

(www.adamgartenberg.com) Domino Server Team

(www.dominoblog.com) Lotus Connections Team

(synch.rono.us) Chris Pepin – IBM CTO’s Office

(www.chrispepin.com) Lotus Usability (Mary Beth

Raven)(www.notesdesign.com)

Page 4: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Agenda

Integration Background

Integration from the Notes client

Integration from other applications

Integration from a web browser

Reporting Options

Looking forward

Wrap-up and Q&A

Page 5: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Definitions for Notes Programmers

Let’s go over a few words you need to know COM OLE

Page 6: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

What is COM?

Component Object Model

Microsoft standard

Defines the guidelines for objects Objects must tell all other programs what is supported

– Properties

– Methods

– Objects

Consistent, programmatic access to functionality

Page 7: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

What is OLE?

Object Linking and Embedding

Another Microsoft standard

Allows one application document to include a portion of another application

A Word document with an Excel spreadsheet inside

OLE/1 — attachments

OLE/2 — linking or embedding

Page 8: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Integration from Notes

From Notes, you will write code to manipulate the application

You can integrate pretty much with anything

In most cases, you will be converting Visual Basic for Applications (VBA) code to LotusScript

The VBA code will be written so it saves in Notes as LotusScript

Once you get the knack of converting the code, you can focus on the process vs. the code

Page 9: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Creating a Word Document

Create an instance of the application object

All applications that support COM have object names

To find the object name:– Review the application documentation– Look it up in the Windows registry

Never use version-specific application object names

– Good: Word.application– Bad: Word.application.11– When the application upgrades, you must modify

your codeVariant Application

Object NameLotusScript Method

Set hwd = CreateObject("Word.Application")

Page 10: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Creating a Word Document (cont.)

You must follow the application’s object model: Word.application

– Documents Document

Paragraph

Bookmark

CustomDocumentProperties

If accessing the current open document, use:– Application.ActiveDocument

– Application.ActiveWorkbook

– Application.ActivePresentation

– etc.

All applications have an object map in help

Page 11: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

The Easiest Way to Start

Microsoft Office provides us with a recorder

Records all keyboard actions Mouse actions are sometimes recorded, so avoid

when possible

Generates VBA code for you

Easy way to learn how something is done Table is created

Page settings are set

etc.

Page 12: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

What’s up with the Recorded Syntax?

This is the recorded syntax:

Saving LotusScript with wdToggle and wdAlignParagraphCenter fails!

Need to replace VBA constants with raw values Write a macro

– Msgbox [constantname]

Or …

Selection.TypeText Text:="this is new text"Selection.TypeParagraphSelection.TypeParagraphSelection.Font.Bold = wdToggleSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterSelection.TypeText Text:="this is more text"

Page 13: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Creating a Word Document — “Hello World”

Demo — Example 1

Launch MicrosoftWord and enter some text

Page 14: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Merging Mail from Notes

Most requested Notes-to-Office Integration functionality

Users have no idea how to get data from Notes into Word

Lotus has not provided this functionality … yet

Quick win for you — take this code back and add it to your boss’s personal name and address book and be the HERO!

Page 15: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Mail Merge in Different Versions of Word

Mail merge is version-specific One version for Word 2000 and before One version for Word XP One version for Word 2003

– Minor change on closing documents in 2003 New version for Word 2007

Page 16: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Use the Mail Merge Wizard to Your Advantage

The Mail Merge Wizard has six steps 1. Select document type

2. Select starting document

3. Select recipients

4. Write your letter

5. Preview your letters

6. Complete the merge

You can control which: Wizard steps display

Step to start on

Page 17: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Mail Merge from Address Book

Demo — Example 2

Generate a mail mergefrom the personalname and addressbook

Page 18: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Moving to the Other Side

This part covers the more advanced subjects Such as automating Lotus Notes from Microsoft

Office and other technologies

We will use COM, XML, Web services, and .NET technologies

Page 19: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Things we CAN do …

Microsoft Word and Web services

Microsoft Excel and XML

Microsoft InfoPath and Web services

.NET and Lotus Notes/Domino

Visual Studio tools for Office

Page 20: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Automation from the Microsoft Side

Many integration scenarios require that user interaction start, or solely be, from an application other than Notes

Many times we will not have the Notes client installed

We will not be writing LotusScript We may call LotusScript through the Notes COM

interface

We need to take advantage of “new” technologies XML Web services .NET Managed code

Page 21: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Domino COM Basics

Working with the Domino Objects is almost the same as writing code in Notes!

Only supports back-end objects No NotesUIDocument, NotesUIView,

NotesUIWorkspace, etc.

COM support was added in Notes 5.0.2b

Updated in 6.5.1 to support 6.X

ND7, 8 & 8.5 – COM support out of the box

COM interface is the same as LotusScript, with some minor exceptions

Page 22: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Registering the Notes COM Objects

Sometimes Notes does not register itself properly with the Windows registry

From the Windows run line:

Regsvr32 “c:\program files\lotus\notes\nlsxbe.dll”

From a Notes agent:

Shell(|regsvr32 “c:\program files\lotus\notes\nlsxbe.dll”|)

Page 23: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Domino COM Basics

Before you start writing VBA code, you must load the Domino COM objects

In MS Office Tools References

Page 24: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Make Your End Users Happy!

Prevent password prompts by …

Notes 5.X Notes 6, 7 and 8

Page 25: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Word Template — Data from Notes

Demo — Example 3

Create a new documentPrompt userPlace data into document

Page 26: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

About Web Services

Self-contained application published and invoked from the Web

Based on XML

Uses WSDL and SOAP

Designed for machine-to-machine interaction

Advantages: Connects various applications running on different

platforms Uses open standards and protocols Uses HTTP, bypassing firewall and other security measures

Disadvantages: Poor performance as opposed to Distributed COM (DCOM) Requires an Internet connection

Page 27: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

First Things First

First, you need to build a Web service

It can be written using LotusScript, Java, or importing WSDL

It is very similar to an agent

To be able to write a Web service, you must know how to write a class

If you are working with Notes 6.5 or before, you can build an agent and “fake” it into being a Web service

Page 28: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Web Service Classes

Example of a simple LotusScript custom class:

Class GetPersonInfo

Sub New

End Sub

Public Function GetEmailAddress(personname As String) As String

End Function

Public Function GetPhoneNumber(personname As String) As String

End Function

End Class

Just like an agent, except the New function Acts just like the agent Initialize

Page 29: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Calling a Web Service from Microsoft Word

To call a Web service from Word (or other Office application), use the following code:

SWSDL = "http://www.johndavidhead.com/ls08sessions.nsf/SessionInfo?wsdl"

Set Client = CreateObject("MSSOAP.SoapClient")

Call Client.mssoapinit(sWSDL)

GetSessionList = Client.ListAllSessions

This code uses the SOAPClient control that is part of Windows and Internet Explorer

SOAP is a way to package and interact with a Web service

Page 30: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

More Detailed Web Services with Word

Now, we want to take something the user selected and get more info about it

This is a second method in the Web service:Public Function GetSessionFieldValue(sessionid, fieldName) As String

sWSDL = "http://www.johndavidhead.com/advisorsession042006.nsf/SessionInfo?wsdl"

Set Client = CreateObject("MSSOAP.SoapClient")

Call Client.mssoapinit(sWSDL)

GetSessionFieldValue = Client.GetSessionInfo(sessionid, fieldName)

End Function

Sessionid and fieldName are values we pass into the Web service

The return value comes back as string

Page 31: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Ways to Add Domino Functionality to ASP.NET

Using Notes/Domino’s COM interface

Using Domino Web services

Using Domino Web agents and XML

NOTE: Selecting the right option is dependent on the Domino Server version and the developer’s skill

Page 32: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Domino COM in ASP

From within Visual Studio .NET, using the ASP.NET template

Add the Domino COM reference like we have done in Office and VSTO

Build the ASP.NET page

Page 33: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Building the ASP.NET Page

Add the standard fields and labels to the ASP page

The COM code is behind the button

Page 34: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

ASP.NET Calling a Domino Web Service

We will call a Domino Web service

ASP.NET will import the Web service

Page 35: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

ASP.NET Calling Domino via a Web Service

Demo — Example 4

Creating an ASP.NETWeb page that callsDomino via aWeb service

Page 36: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Integra4Notes and Integra Quick Reports

Integra4Notes A Notes application that allows importing and

exporting of data between Lotus Notes and Word, Excel, PDF files, and XML files

The premier reporting framework for Notes developers

Integra Quick Reports Ad hoc reporting for end users to Microsoft Excel

Mail merge and labels to Microsoft Word

From any Lotus Notes database

Page 37: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Integra4Notes Key Features and Benefits

More advanced capabilities Event-driven script, for example Access multiple databases and sources

– Oracle, SAP, mySQL, etc.

Non-intrusive — no designer changes

Zero footprint — no EXE, no DLLs, etc.

Distribute via email, save to Notes document, send doclinks, send to printer, fax, etc.

Notes client, browser, and scheduled

Export and import

Generate PDFs 4.5 ships with print driver – no extra cost

Page 38: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Third-Party Application Demonstration

Demo — Example 5

Integra4Notes andIntegra Quick Reportsamples

Page 39: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Integra for Notes Personal Edition

Provides the user with integration for their Contacts to do the following:

Mail Merge Labels Mass Email Export to Excel Ad-hoc export to Excel

with Pivot Tables and Charting

Supports Notes 6.5, 7, 8, & 8.5

Supports Office 97 thru 2007

www.integra4notes.com/personal FREE!!!!

Page 40: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Lotus Symphony – The Developer Perspective

Symphony has multiple methods for customization

UNO API Symphony Plug-ins Composite Applications

Page 41: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Introduction to OpenOffice.org development

Designed on an interface-based component model called Universal Network Objects (UNO)

UNO definition UNO offers interoperability between different

programming languages, different object models, different machine architectures, and different processes; either in a local network or even via the Internet

UNO components can be implemented in, and accessed from, any programming language for which a UNO languagebinding exists

Page 42: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Does this work with Lotus Symphony?

The demo will be done using Lotus Symphony

You will need Notes 8.0.1 or higher IBM has exposed the Lotus Symphony objects to the

registry to allow COM to work

If you want run the demos in 8.0.0, they will invoke OpenOffice.org

Page 43: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

What is the ServiceManager?

ServiceManager is similar to the NotesSession class

It is a factory class that gets you to other places

Set SM=CreateObject("com.sun.star.ServiceManager")

Think of the ServiceManager as a back-end class, and we want the front end (like NotesUIWorkspace)

Set Desktop=SM.createInstance("com.sun.star.frame.Desktop")

Page 44: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

What Did That Do?

Calling the ServiceManager created an OpenOffice.org window, but we need to do more …

Page 45: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Let’s Start Writer — Word Processing Application

So far we have an OpenOffice.Org window, but it doesn’t know what application it will be — we have to tell it

Dim args()

Set WriterApplication=Desktop.loadComponentFromURL ("private:factory/swriter","_blank",0,args)

Args is a variant array We don’t want to pass any parameters, but it must

be an array

The “s” in “swriter” stands for “Star”

Now we have a word processor up and running

Page 46: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

The Picture So Far

Now we have an application open

Time to do something!

Page 47: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Let’s Add Some Text First, we need to get a handle to the text part of

the document

Set WriterText=WriterApplication.getText()

Next, we need a cursor position where we can insert the text

Set Cursor=WriterText.createTextCursor()

Finally, we can make the traditional greeting

Call WriterText.insertString(Cursor,"Hello World!",False)

Page 48: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Hello World!

After executing all of the code we walked through, this is the result

Now let’s try it for real

Page 49: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Notes to Writer

Demo — Example 6

“Hello World” fromNotes to Writer

Page 50: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

2009 and Beyond

We finally have great tools VS.NET 2008 Lotus Symphony LotusScript API

We have multiple options Office, Symphony, OpenOffice.org, Google Docs, etc.

The Document Format Decision You will be forced into making a decision in the next 24 months

Competition will be good for us … if we can deal with all the changes

Page 51: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

If you are going to Lotusphere

Jumpstart JMP205 - Integration of IBM Lotus Notes and Lotus Domino with Microsoft Office, .NET, and IBM Lotus Symphony

Dolphin Americas Seminar : Sunday, 1/18/2009 : 8 AM to 9:30 AM

Swan : Sunday, 1/18/2009 : 1:30 PM to 3:30 PM

BP110: IBM Lotus Symphony and You - A Developer's Perspective

Swan 1-2 : Wednesday, 1/21/2009 : 10 AM to 11 AM

BP305: The Document Format Dance Swan 1-2 : Wednesday, 1/21/2008 : 11:15 AM to 12:15 PM

Page 52: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

If you are NOT going to Lotusphere

Don't despair

Full presentation slide decks and ALL demos will be available at

www.johndavidhead.com kassabov.wordpress.com

Page 53: LotusUserGroup.org Virtual User Group Meeting - The Real World Integration

Thank You!

Questions & Answers

Samples available from Samples available from

www.johndavidhead.comwww.johndavidhead.com

kassabov.wordpress.comkassabov.wordpress.com

[email protected] [email protected]

www.johndavidhead.com kassabov.wordpress.com

www.psclistens.com