Top Banner
© 2009 by the individual speaker Integration and Coexistence: Leveraging Lotus & Microsoft products to build better solutions John Head PSC Group, LLC
68

Tri State Lug 2009 - Integration And Coexistence Session

Nov 10, 2014

Download

Technology

John Head

Integration and Coexistence Session for the Tri State Lotus User Group meeting on 11.9.2009
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Integration and Coexistence:Leveraging Lotus & Microsoftproducts to buildbetter solutions

John Head

PSC Group, LLC

Page 2: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Before We Begin

Please turn off/set to vibrate/mute allCell PhonesPagersComputers

Please remember to fill out your evaluations

Page 3: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

What We’ll Cover …

Who am I?

Integration Background

Integration from the Notes client

Integration from other applications

Integration from a web browser

Integration with Google Docs

Real World Integration

Looking forward

Wrap-up and Q&A

Page 4: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Who Are We?

John D. Head

Director of Enterprise Collaboration at PSC Group, LLC

Involved in Lotus technology since 1993

OpenNTF.org Steering Committee Member and IP Working Group Chairman

Speaker

Over 30 sessions at Lotusphere since 1996

Speaker at Lotus Developer , ILUG, UKLUG, and other conferences

Author

Publications on Office and SmartSuite integration with Notes

LotusUserGroup.org contributing Author and Forum moderator

―Lotus Symphony for Dummies‖ Technical Editor

―Self Assessment and Strategy Guide for Migrating from Domino Document Manager ― Redbook Author

www.johndavidhead.com twitter.com/johnhead

Page 5: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

PSC Group, LLC

IBM Premium Business Partner for 19+ Years

Microsoft Managed Partner

Notes & Domino 8.5 Design Partner

OpenNTF.org Alliance Member, Steering Committee Company, & Former Host of OpenNTF.org

Winner of 2007 & 2009 Lotus Awards!

Host of the following blogs:

Ed Brill’s (www.edbrill.com)

Lotus Design Blog(Mary Beth Raven)(www.notesdesign.com)

LotusStaffNotes (Brent Peters)(www.lotusstaffnotes.com)

Lotus Connections Team

(synch.rono.us)

Lotus Sametime(www.thesametimeblog.com)

Domino Server Team(www.dominoblog.com)

Lotus Mashups(www.mix-and-mash.com)

Chris Pepin – IBM CTO’s Office(www.chrispepin.com)

Page 6: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Demo Databases

Presentation example database

Single database with all examples

You can configure it for your Notes client

Example numbers in the presentation match those in the database

Lotusphere 2009 session database

From Genii Software

Updated version inside the demo database

Personal name and address book

My demos work with the standard Notes 6, 7, 8, & 8.5 templates

Page 7: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Let’s take a little poll …

Who is using …

Office 97 and earlier

Office 2000

Office XP

Office 2003

Office 2007

Office 2010 Beta

OpenOffice / StarOffice

Lotus Symphony

iWork

Other

Page 8: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

What We’ll Cover …

Who am I?

Integration Background

Integration from the Notes client

Integration from other applications

Integration from a web browser

Integration with Google Docs

Real World Integration

Looking forward

Wrap-up and Q&A

Page 9: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Integration History

1994

DDE with Ami Pro

1996

Notes R4

OLE

LotusScript

VBA

1997

SmartSuite with LotusScript (Word Pro)

1998

Notes R5 with COM support

2001

Notes Domino 6

2004

Notes Domino 6.5 with LS2J and DXL

2005

Notes Domino 7 with Web services

2007

2007 Office System

Lotus Notes/Domino 8

Lotus Symphony

2008

Visual Studio 2008

Notes/Domino 8.5

2009Notes/Domino 8.5.1

2010Visual Studio 2010

Office 2010

Page 10: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

The Good News

We have entered the “Industrial Revolution” period of the Integration Era

In the “Medieval Times”

DDE with Ami Pro

NotesSQL was used to get even the most basic of data

OLE embedding

Notes F/X

Page 11: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

The Good News (continued)

The Renaissance brought us new tools

OLE automation

COM automation

And much more

The Revolution brings us major changes

A true competitor to Office

Visual Studio.NET 2008 and VSTO 3.0

Code begins to move from inside a document to complete applications

Page 12: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

What We’ll Cover …

Who am I?

Integration Background

Integration from the Notes client

Integration from other applications

Integration from a web browser

Integration with Google Docs

Real World Integration

Looking forward

Wrap-up and Q&A

Page 13: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Integration from the Notes Client

Integrating Microsoft Word

Integrating Lotus Symphony Documents

Mail Merge

Integrating Microsoft Excel

Page 14: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Integration from Notes

From Notes, you will write code to manipulate the application

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 15: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Creating a Word Document — ―Hello World‖

Demo — Example 1

Launch Microsoft

Word and enter

some text

Page 16: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

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 17: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Use the Microsoft Constants Database

Provides a listing of all Microsoft Office variables and their converted constants

Extraction of constants by John Collidge

Database built by Tom Duff

OpenNTF.org project

Supports Microsoft Office 2000, XP, 2003, and 2007

More features planned!

Page 18: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

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 19: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Lotus Symphony – The Developer Perspective

Does this work with Lotus Symphony?

• All of the demos 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

• There is a way to hack 8.0.0 to work, but it is not supported

Page 20: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Lotus Symphony – The Developer Perspective

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 21: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Lotus Symphony – The Developer Perspective

What Did That Do?

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

Page 22: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Lotus Symphony – The Developer Perspective

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 23: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Lotus Symphony – The Developer Perspective

The Picture So Far

• Now we have an application open

• Time to do something!

Page 24: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Lotus Symphony – The Developer Perspective

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 25: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Lotus Symphony – The Developer Perspective

Hello World!

• After executing all of that code, this is the result

• Now let’s try it for real

Page 26: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Notes to Writer

Demo — Example 2

―Hello World‖ from

Notes to

Symphony Documents

25

Page 27: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Notes 8.5.1 and the Symphony API

• Included with Notes 8.5.1 is the new Symphony API

• Supports LotusScript and Java

• Must run from Notes client – does not work with Standalone Symphony Application(applications or plug-ins)

• API is modeled after Notes Object Model

• Symphony Container added to Composite Applications thru the CA Editor

Page 28: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Symphony Documents LotusScript API

Page 29: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Symphony Spreadsheets LotusScript API

Page 30: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Symphony Presentations LotusScript API

Page 31: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Step 1: Symphony Application

• Create a new SymphonyApplication object

• This is a base level object, much like the NotesSession

• You will not see anything on screen after setting this

Dim application As SymphonyApplication

Set application = New SymphonyApplication

Page 32: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Step 2: Symphony Documents

• Initialize the Documents Application

• You should see the Symphony Application at this point

Dim documents As SymphonyDocuments

Set documents = application.Documents

Page 33: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Step 3: Open a New Document

• Create a new document

• You can also create a new document based on a Template using the second property

Dim document As SymphonyDocument

Set document = documents.AddDocument("",False,True)

• New Document based on a template

Set document = documents.AddDocument("D:\FileTypeAssociation\test.ott",True,True)

Page 34: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Step 4: Set the Range

• You can set a range based on a paragraph, table, or in this case, the entire document contents

Dim range As SymphonyTextRange

Set range = document.content.End

Page 35: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Step 5: Insert Text

• Using the InsertBefore or InsertAfter methods, you can insert text based on any range or object

Call range.InsertBefore("Hello World")

Page 36: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

―Hello World‖ in Symphony Documents via LotusScript

Dim application As SymphonyApplication

Dim documents As SymphonyDocuments

Dim document As SymphonyDocument

Dim range As SymphonyTextRange

Set application = New SymphonyApplication

Set documents = application.Documents

Set document = documents.AddDocument("",False,True)

Set range = document.content.End

Call range.InsertBefore("Hello World")

Page 37: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Demo — Example 3

―Hello World‖ in

Documents using

LotusScript

Lotus Symphony – The Developer Perspective

More info in the “Symphony Developer's Guide for

Notes.pdf” that comes with the Symphony Toolkit

Lotus Symphony API via LotusScript

Page 38: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

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 39: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Mail Merge from Address Book

Demo — Example 4

Generate a mail merge

from the personal

name and address

book

Page 40: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Integration with Microsoft Excel

Working with Excel is very different from Word

The objects we use are different

In Excel, we tend to move more data from Notes to the application

Lots of rows in Excel vs. filling in bookmarks in Word

Microsoft Word Microsoft Excel

Text Position/Cursor Cell

Paragraph Range

Page Worksheet

Document Workbook

Page 41: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Working with Microsoft Excel

Demo — Example 5

Create a spreadsheet

from Notes data and

generate a chart

Page 42: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

What We’ll Cover …

Who we are?

Integration Background

Integration from the Notes client

Integration from other applications

Integration from a web browser

Integration with Google Docs

Real World Integration

Looking forward

Wrap-up and Q&A

Page 43: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

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

As the title suggests, this part is more technical We are about to pick up

the pace

Page 44: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

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 45: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Word Template — Data from Notes

Demo — Example 6

Create a new document

Prompt user

Place data into document

Page 46: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Demo — Example 7

Word template that

reads a Notes database

via a Web service

Page 47: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Microsoft Excel and XML

Demo — Example 8

Importing Domino data

into a spreadsheet

using XML

Page 48: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

VSTO Versions

Visual Studio Tools for Office

Version 1 = VSTO 2003 with Visual Studio.NET 2003

Version 2 = VSTO Second Edition with Visual Studio.NET 2005

Version 3 = VSTO 3.0 with Visual Studio.NET 2008

Unless you are forced too, only use VSTO 3.0

VSTO allows for VB.NET and C#

PSC has moved to C# for all our development

C# is more powerful

More third-party tools available for C#

Page 49: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

VSTO 3.0 Project Types

Page 50: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

VSTO 3.0 and Microsoft Word and Domino Web Service

Demo — Example 9

Creating a new Word

document that prompts

the user and fills out

Domino data via

Using VSTO

Page 51: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

What We’ll Cover …

Who we are?

Integration Background

Integration from the Notes client

Integration from other applications

Integration from a web browser

Integration with Google Docs

Real World Integration

Looking forward

Wrap-up and Q&A

Page 52: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Ways to Add Domino Functionality to ASP.NET

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 53: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

ASP.NET Calling a Domino Web Service

We can call the same Domino Web service we have used before

ASP.NET will import the Web service

Code behind the button will be virtually the same as when ASP.NET called Domino via COM

Page 54: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

ASP.NET Calling Domino via a Web Service

Demo — Example 10

Creating an ASP.NET

Web page that calls

Domino via a

Web service

Page 55: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

What We’ll Cover …

Who we are?

Integration Background

Integration from the Notes client

Integration from other applications

Integration from a web browser

Integration with Google Docs

Real World Integration

Looking forward

Wrap-up and Q&A

Page 56: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Google Docs Integration

Higher degree of difficulty

Java code integrated with the Notes 8 and 8.5 Standard Clients

Eclipse.org plug-ins

A sidebar application that displays the documents

Just like Quickr!

This sample is not for the timid!

There is also a C# library available

Page 57: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Google Docs Integration – Posting Documents

Demo — Example 11

Posting Document to

Google Doc from

Notes

Page 58: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

What We’ll Cover …

Who we are?

Integration Background

Integration from the Notes client

Integration from other applications

Integration from a web browser

Integration with Google Docs

Real World Integration

Looking forward

Wrap-up and Q&A

Page 59: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Real World Integration

• Real World Use Cases

• Zain Africa Challenge Application

• www.zainafricachallenge.com

• PSC won the 2009 Best Philanthropic Lotus Award for this solution

• Integration Samples

• Excel for reporting

• Word for Scripts

• Integra for XML export

Page 60: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Real World Integration - Demos

Demo — Example 12

Advanced VSTO

Demos

Page 61: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

What We’ll Cover …

Who we are?

Integration Background

Integration from the Notes client

Integration from other applications

Integration from a web browser

Integration with Google Docs

Real World Integration

Looking forward

Wrap-up and Q&A

Page 62: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Looking Forward

2010

• Visual Studio 2010 with VSTO 4

• Office 2010

• Backstage

• SymphonyNext (2.0)

• Beta around Lotusphere

• New/Updated APIs for Notes Data

• REST

• DXL

Page 63: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

What We’ll Cover …

Who we are?

Integration Background

Integration from the Notes client

Integration from other applications

Integration from a web browser

Integration with Google Docs

Real World Integration

Looking forward

Wrap-up and Q&A

Page 64: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

We Only Scratched the Surface

There are over 3 hours of content available for this presentation

Search Slideshare for Lotusphere 2009 JMP205

Over 25 demos includingSymphony Spreadsheets

Microsoft PowerPoint

Symphony Presentations

Microsoft Project

Microsoft Visio

Microsoft InfoPath

ASP.NET and COM

Google Docs consuming Domino XML

Page 65: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Resources

Microsoft Office developer’s Web site

http://msdn2.microsoft.com/en-us/office/default.aspx

Microsoft Developer Network

http://msdn.microsoft.com

Microsoft Office blog listing

http://msdn2.microsoft.com/en-us/office/aa905342.aspx

PSC’s Reporting and Office Integration page

www.psclistens.com/enTouchCMS/app/viewCategory?catgId=66

Page 66: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Resources (continued)

OpenOffice.org

http://www.openoffice.org

OpenOffice Developers Guidehttp://api.openoffice.org/DevelopersGuide/DevelopersGuide.html

Programming OpenOffice with Visual Basic

http://www.kalitech.fr/clients/doc/VB_APIOOo_en.html

Page 67: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Lotus Community Sites

Lotus Greenhouse (greenhouse.lotus.com) is a live

community website where you can use Lotus Collaboration

Products for free!

The Lotus Community Podcasts

Planet Lotus (www.planetlotus.org) is an aggregation of Lotus related blogs

and news

IdeaJam (www.ideajam.net) is a place where people can post and share their

ideas, and gauge the marketability, popularity and viability with input from

others

OpenNTF (www.openntf.org) is a site devoted to getting groups of individuals

all over the world to collaborate on Lotus Notes/Domino applications and

release them as open source

Bleedyellow.com provides community implementations of

Lotus Connections and Sametime

IBM’s Official portal for developers including a dedicated section for Lotus

(www.ibm.com/developerworks/lotus)

LotusUserGroup.org is the on-line home of the IBM Lotus

community for regional and virtual user groups

Page 68: Tri State Lug 2009 - Integration And Coexistence Session

© 2009 by the individual speaker

Follow Up

How to contact:

John Head

[email protected]

Twitter.com/johnhead

Linkedin.com/in/johndhead

Facebook.com/johnhead

Slideshare.com/johnhead