Upload
john-head
View
1.894
Download
3
Tags:
Embed Size (px)
DESCRIPTION
Integration and Coexistence Session for the Tri State Lotus User Group meeting on 11.9.2009
Citation preview
© 2009 by the individual speaker
Integration and Coexistence:Leveraging Lotus & Microsoftproducts to buildbetter solutions
John Head
PSC Group, LLC
© 2009 by the individual speaker
Before We Begin
Please turn off/set to vibrate/mute allCell PhonesPagersComputers
Please remember to fill out your evaluations
© 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
© 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
© 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)
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 2009 by the individual speaker
Integration from the Notes Client
Integrating Microsoft Word
Integrating Lotus Symphony Documents
Mail Merge
Integrating Microsoft Excel
© 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
© 2009 by the individual speaker
Creating a Word Document — ―Hello World‖
Demo — Example 1
Launch Microsoft
Word and enter
some text
© 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.
© 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!
© 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
© 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
© 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")
© 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 …
© 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
© 2009 by the individual speaker
Lotus Symphony – The Developer Perspective
The Picture So Far
• Now we have an application open
• Time to do something!
© 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)
© 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
© 2009 by the individual speaker
Notes to Writer
Demo — Example 2
―Hello World‖ from
Notes to
Symphony Documents
25
© 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
© 2009 by the individual speaker
Symphony Documents LotusScript API
© 2009 by the individual speaker
Symphony Spreadsheets LotusScript API
© 2009 by the individual speaker
Symphony Presentations LotusScript API
© 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
© 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
© 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)
© 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
© 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")
© 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")
© 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
© 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!
© 2009 by the individual speaker
Mail Merge from Address Book
Demo — Example 4
Generate a mail merge
from the personal
name and address
book
© 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
© 2009 by the individual speaker
Working with Microsoft Excel
Demo — Example 5
Create a spreadsheet
from Notes data and
generate a chart
© 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
© 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
© 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
© 2009 by the individual speaker
Word Template — Data from Notes
Demo — Example 6
Create a new document
Prompt user
Place data into document
© 2009 by the individual speaker
Demo — Example 7
Word template that
reads a Notes database
via a Web service
© 2009 by the individual speaker
Microsoft Excel and XML
Demo — Example 8
Importing Domino data
into a spreadsheet
using XML
© 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#
© 2009 by the individual speaker
VSTO 3.0 Project Types
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 2009 by the individual speaker
Google Docs Integration – Posting Documents
Demo — Example 11
Posting Document to
Google Doc from
Notes
© 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
© 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
© 2009 by the individual speaker
Real World Integration - Demos
Demo — Example 12
Advanced VSTO
Demos
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 2009 by the individual speaker
Follow Up
How to contact:
John Head
Twitter.com/johnhead
Linkedin.com/in/johndhead
Facebook.com/johnhead
Slideshare.com/johnhead