![]() |
Languages »
C# »
Utilities
Intermediate
License: The Code Project Open License (CPOL)
Lotus Notes Integration with Microsoft .NET Platform (C#)By Aditya P GuptaThis article explains how to use .NET and Lotus Notes Interop to integrate Lotus Notes capabilites into applications |
C# 2.0.NET 1.1, .NET 2.0, Win2K, WinXP, Win2003VS.NET2003, VS2005, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
The article describes with the help of a Windows application how Lotus Notes can be integrated with .NET using Lotus Notes Interop.
The Lotus Notes .NET Interop provides a way of communication between the Microsoft .NET platform and Lotus Notes client and dominos server. It supports access to Lotus Notes documents and views, and allows you to write various applications, for example, Web form, Windows form, and console applications within Microsoft Visual Studio .NET. You can use all Common Language Runtime (CLR) programming languages such as Visual Basic .NET, C#, or Managed C++.
At runtime, the Lotus Notes interop fetches the data as requested using the Interop classes, i.e. NotesViewEntryCollection, NotesViewEntry and NotesDocument. These classes for Lotus Notes clients provides .NET developers with a familiar way to use Lotus Notes functionality. Using the code, developers can access Lotus Notes documents and can integrate Lotus Notes capabilities to any external applications.
This article assumes that you have basic understanding of Lotus Notes.
The example demonstrates how to fetch information regarding 'Contacts' from user contacts and central contacts database.
In our sample code, we have added few textboxes for configuration of Lotus Notes client, a Button to Start Searching contacts and a Listbox control to list out the results.
//
//
Code snippet for establishing a Lotus notes session
//
//Lotus Notes Object Creation
_lotesNotesSession = new Domino.NotesSessionClass();
//Initializing Lotus Notes Session
_lotesNotesSession.Initialize( NotesPassword );
//Creating Lotus Notes DataBase Object
_localDatabase = _lotesNotesSession.GetDatabase( "", "names.nsf", false );
//creating Lotus Notes Contact View
_contactsView = _localDatabase.GetView( "Contacts" );
if( FetchServerData )
{ _lotusNotesServerSession = new Domino.NotesSessionClass();
_lotusNotesServerSession.Initialize( NotesPassword );
//Creating Lotus Notes DataBase Object
_serverDatabase = _lotusNotesServerSession.GetDatabase
( DominoServerName, "names.nsf", false );
//creating Lotus Notes Contact View
_peopleView = _serverDatabase.GetView( "$People" ); }
}//end if(FetchServerData )
(Please take note here that while establishing a session, we only provide userpassword and servername, we don't provide username as the last user login into Lotus client is always taken as the userId.)
//
//
//Code snippet for iterating through the views and fetching data
//
NotesViewEntryCollection notesViewCollection =LotusNotesView.AllEntries;
for( int rowCount = 1; rowCount <= notesViewCollection.Count; rowCount++ )
{
//Get the nth entry of the selected view according to the iteration.
NotesViewEntry viewEntry = notesViewCollection.GetNthEntry( rowCount );
//Get the first document of particular entry.
NotesDocument document = viewEntry.Document;
object documentItems = document.Items;
Array itemArray1 = (System.Array)documentItems;
for( int itemCount=0 ; itemCount< itemArray1.Length; itemCount++ )
{
NotesItem notesItem =
(Domino.NotesItem)itemArray1.GetValue( itemCount );
//compare field value with specific value entered by user
if( notesItem.Text !=null )
{
if( (notesItem.Text.ToUpper()).StartsWith( fieldValue ))
{
Contact contact = new Contact();
for( int icount=0 ; icount< itemArray1.Length; icount++ )
{
NotesItem searchedNotesItem =
(Domino.NotesItem)itemArray1.GetValue( icount );
string FieldName = searchedNotesItem.Name.ToString();
//For FirstName
if( searchedNotesItem.Name == "FirstName" )
contact.FirstName= searchedNotesItem.Text;
//For LastName
if( searchedNotesItem.Name == "LastName" )
contact.LastName = searchedNotesItem.Text;
//For Office Phone Number
if( searchedNotesItem.Name == "OfficePhoneNumber" )
contact.OfficePhoneNumber = searchedNotesItem.Text;
if( searchedNotesItem.Name == "InternetAddress" )
contact.EmailId = searchedNotesItem.Text;
}//end for
contactsList.Add( contact );
break;
}//End if
}
}
}
If you see in the above code snippet NotesViewEntry, NotesDocument, NotesItem classes are used to create the objects for Lotus Notes driver data access. So the code snippet and the sample application demonstrates how easily one can integrate Lotus Notes accessing capabilities into an application.
//
//
//Code snippet for popping open a document/contact in lotus notes client
//
//ContactId is the Main thing :
//this is the universaldocumentID which uniquely identifies this
//if the contacts is on the server
if( IsServerData )
{
notesUrl="Notes://"+LotusNotesServer+"/names.nsf/0/"+ContactId;
}
else
{ //local data
notesUrl="Notes:///names.nsf/0/"+ContactId;
}
string lotusNotesPath = ReadRegistry();
if( lotusNotesPath!="" )
{
lotusNotesPath = lotusNotesPath+"notes";
System.Diagnostics.Process process =
new System.Diagnostics.Process();
System.Diagnostics.Process.Start( lotusNotesPath,notesUrl );
System.Threading.Thread.Sleep( 500 );
}
I am currently working in an outsourced software product development company, PROTEANS SOFTWARE SOLUTIONS LTD.(www.proteans.com) as a Technical Leader. I have around 6 years of experience in the software industry, mainly telecom, computer telephony integration. I have experience in VC++, MFC and in Microsoft .NET technologies(C#).
Proteans is an outsourcing company focusing on software product development and business application development on Microsoft Technology Platform. Proteans partners with Independent Software Vendors (ISVs), System Integrators and IT teams of businesses to develop software products. Our technology focus and significant experience in software product development - designing, building, and releasing world-class, robust and scalable software products help us to reduce time-to-market, cut costs, reduce business risk and improve overall business results for our customers. Proteans expertises in development using Microsoft .NET technologies.
Special thanks to Pankaj Pahuja (pankaj_proteans@hotmail.com) for his inputs and guidance on Lotus Notes client and how to get going with Lotus Interop.
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 23 Apr 2007 Editor: Deeksha Shenoy |
Copyright 2007 by Aditya P Gupta Everything else Copyright © CodeProject, 1999-2009 Web18 | Advertise on the Code Project |