Excellent article about IBM Mashup Center and Open Social integration

This is a great article to start learning about Web 2.0 aggregation and interoperability between iWidget technology and Open Social gadgets.

IBM Mashup Center: OpenSocial interoperability


Survey: Is anyone using JQuery in XPages/Domino?

I have been playing with JQuery and was thinking about doing some integration with XPages components.  I have seen a few posted questions about JQuery but I am not sure how widely used it is in the Lotus community.

[poll id=”8″]


Make your existing NSF a composite

I figured I would post this since it was asked many times in the Meet the Developer Lab down at Lotusphere.  I will also, as promised, be posting some tutorials about the applications shown in AD202.

So you have an existing NSF and you want to make it a composite for any number of reasons.  Mostly, I had heard were to get Eclipse views, Java views, or XPage components next to their existing NSF based components or putting XPage components in the side bar.  It is actually a lot simpler than you may think.  The first thing to do is open the database in Designer and look for the “Composite Applications” entry in the designer elements tree.  You will then double click on “Applications“:


You will then get to choose a name for your composite and save it off.  That is it!


You now have a composite inside the NSF.  If you want to edit the layout and add pages and components to the composite you will need to edit it in the Composite Application Editor (CAE).  The CAE is an optional installation when  Lotus Notes is installed, this will need to be installed on the system in order for you to edit it.

You then have to change the launch settings for the NSF.  This can be done in the database properties right from within Designer.  Here you can see in the Application Properties in the Launch tab we simply set the launch type to be “Launch as a composite application“:


The database now opens directly to the “Blank Page” when opened from the Notes client.  If CAE is installed you then select “Actions | Edit Application” from the top menu in the Notes client.


From here you can use the CAE to lay out your application.

If you want some great tutorials look at the Composite Application Wiki to get started, Tutorials.


XPages, Components, and Plugin development

I just attended a BOF for Plugin development for Lotus Notes, Sametime, Symphony and Expeditor that was led by Mikkel.  The discussion was very good and the attendance was also pretty good for a 7am meeting after the engineering party (and then Jelly Rolls)!  We had 13 people with very active discussion.  The primary feedback I took with me was more documentation, more samples, and more API’s.  This isn’t new to me, I hear it a lot.  One thing that was interesting was some attendees actually knew there is a lot of plugin development information on the Composite Application Wiki.  The discussion then went down the same rat hole of “the CA wiki is hard to navigate”, “it has irrelevant information”, “it is not well structured”, and my favorite was “why isn’t there one place to get all Notes based help”.  I think this is all great feedback and I will do my best to get this fixed in 2010.

What I can offer is some things we have done to make it easier to navigate to date.  For instance, the Getting Started page is a great place to “start”.  It has all of the latest relevant articles and tutorials.  Next, the Tutorials category is also a great place to start.  The top of the tutorials page has all of the new tutorials we created for 8.5.1.

Lastly for documentation, I want to communicate it is a wiki!  If you have content, pointers or information you want to share then please post it or at least post a suggestion to the following page:  Suggestions for new wiki articles.

The other topic that got some attention was writing something once and using it across all products or platforms.  I sort of led the topic of using XPages as the primary component model – there, you can at least get to run your component both on the web and rich client.  Some others brought up Portlet Factory – which can accomplish the same thing using portlet technology.  The key here is, Expeditor and Notes ship with a full web container – so you can deploy pre-compiled JSP’s, HTML, Portlets, and now with Lotus Notes 8.5.1 XPage components to the rich client and then standardize on web technology for your user interfaces.


Creating a calendar entry from an XPage event

One of the areas I struggled with in our demo was creating a calendar entry from the XPage component when the button was clicked in the previous post.  The problem is you need to make sure you include all of the right fields otherwise your calendar entry will not display and open properly in the Notes 8.5 calendar.  The key element I was missing was the”@GetCurrentTimeZone” as the computeWithForm() did not calculate all of the right fields when the note was saved.  For the most part it was straight forward, I had to parse out some of the information so the code looks hackish.

Source Code for event:

var dir = session.getDbDirectory( session.getServerName() );
var mail = dir.openMailDatabase();
var doc = mail.createDocument();
doc.appendItemValue("Form", "Appointment");
doc.appendItemValue("AppointmentType", "3");
doc.appendItemValue("From", session.getEffectiveUserName());
doc.appendItemValue("Principle", session.getEffectiveUserName());
doc.appendItemValue("Chair", session.getEffectiveUserName());
doc.appendItemValue("Subject", context.getSessionProperty("summary"));
doc.appendItemValue("Location", context.getSessionProperty("location"));
doc.appendItemValue("Categories", "Lotusphere 2010");
dt = context.getSessionProperty("begintime");
//Get the date out
date = dt.substr(0, 10);
//Now the time
begin = dt.indexOf("T", 10) + 1;
time = dt.substr(begin, 8);
d1 = session.createDateTime(date + " " + time);
doc.replaceItemValue("StartDateTime", d1);
doc.replaceItemValue("StartDate", d1);
doc.replaceItemValue("StartTime", d1);
tz = session.evaluate("@GetCurrentTimeZone");
doc.replaceItemValue("StartTimeZone", tz[0]);
doc.replaceItemValue("CalendarDateTime", d1);
dt = context.getSessionProperty("endtime");
date = dt.substr(0, 10);
//Now the time
begin = dt.indexOf("T", 10) + 1;
time = dt.substr(begin, 8);
d2 = session.createDateTime(date + " " + time);
doc.replaceItemValue("EndDateTime", d2);
doc.replaceItemValue("EndDate", d2);
doc.replaceItemValue("EndTime", d2);
doc.replaceItemValue("EndTimeZone", tz[0]);
var description = context.getSessionProperty("description");
var speakers = context.getSessionProperty("speakers");
body = "SPEAKERS:nn" + speakers + "nnDESCRIPTION:nn" + description;
doc.replaceItemValue("Body", body);
doc.computeWithForm(true, false);
doc.save(true, false);

Demo: Using XPage components in your applications

Next Monday myself and Mike Cooper will be presenting AD202 – What’s New in Composite Applications in Lotus Notes 8.5.1.  We will be showing a few technologies and demos but one application is pretty interesting because it has helped me add Lotusphere sessions to my calendar that I wish to attend.

The video shows me using that application and walks through it.  It uses a single web container and an XPage component that runs locally in the Notes Client.  We leverage the side bar for the XPage component placement, so it can be optionally shown.  The web browser also has landmarks defined to publish the session information when the user lands on a session details page.

If you want to see how this application was assembled come to our session on Monday!



Eclipse won the InfoWorld’s 2010 Technology of the year award!

This is great news!  As Lotus Notes, Sametime, Domino Designer, and Lotus Expeditor are all based on Eclipse, not too mention all of the Rational tools and many more products, it is great to see Eclipse being recognized like this.  They don’t really mention the fact that many of the IBM installed client portfolio is based on Eclipse, and they seem to focus on tooling.