Saturday, 12 December 2009

Should IBM expose Lotus Notes/Domino functionality as native web service?

Should IBM expose Lotus Notes/Domino functionality as native web services?

Since I started to look outside the box - I have been for 13 years a hardcore Domino developer -, making myself familiar with Adobe Flex for RIA development, there is one thing that became very apparent:

Domino doesn't provide any other native interface to its internal functions other than the Notes C-API, and the latter is obviously not really the tool to support RIA development outside the Domino framework using Domino as a database back-end (only). At least not if you are a Flex developer. Of course one can access Domino data in several ways, from XML formatted views, http socket connections, servlets, web services or rpc. However, for all the options one requires to develop the required functionality custom made. A simple @dblookup() implemented as a web service for instance is not in reach. It would be extremely cool if a Flex developer could run a simple Domino web service operation - without coding anything in Domino - like this...

// simplified code...
wsrv = new WebService;

wsrvOpDBLOOKUP = wsrv.getOperation("DBLOOKUP");

wsrvOpDBLOOKUP.send(
cache,
srvname,
dbname,
view,
key,
column,
fdnam,
mvalsep,
silent,
partial,
retUNID
);


That leads back to the above question: should IBM provide such a generic, web service or rpc (using a binary data transfer) based interface? Well, it would certainly open a whole new world for web developers that or not only concerned with Lotus Notes/Domino.

As it is unlikely that this is going to happen any time soon (if at all), we decided to develop such an interface ourselves. At the current stage we implemented already a number of Notes Formula functions and other much needed features to read view data and read / write documents:

DBCOLUMN // exact implementation of @dbcolumn
DBCOLUMNX // extended @dbcolumn() functionality allowing for the return
// of multiple columns/fields
DBROWX // returning a single view entry to update a data grid from
// changes to a Notes document
DBLOOKUP // exact implementation of @dblookup
DBLOOKUPX // extended @dblookup() functionality allowing for the return
//of multiple columns/fields
DBGETFORMFIELDS // list of fields contained in a specified form
DBGETFIELDTYPES // list of field data types for a specified form
DBREADDOCFIELDS // reading specified field data for a specified document
DBSAVEDOCFIELDS // saving field data back into a specified document or new document
DBSENDDOCUMENT // sending a document (memo) using the Domino mail infrastructure
DBGETUSERINFO // returns the information about the current authenticated user
DBCALLAGENT // calls a server based agent with a specified document
DBFTSEARCH // implementation of NotesView.FTSearch()
DBSEARCH // implementation of NotesDatabase.Search()
DBVIEWS // implementation of NotesDabase.GetViews()

This is of course just a start. Many other Notes Formula functions and LotusScript / Java classes are quite useful from a Flex perspective. Having said this, it certainly does not make sense to attempt developing an interface that covers 100% of Domino. What will definitely be covered is a file upload control and Notes Richtext.

We estimate this development to be beta by the end of the 1st quarter 2010. Not clear is yet under what license model we will publish this development. Stay tuned...

No comments:

Post a Comment