Saturday, January 12, 2008

Creating Composite Applications for Classic Lotus Notes Clients – Part 2

This is part 2 of my creating composite application for classic Lotus Notes clients. In part 2, I will cover how a new event in Lotus Notes 8 can used to simplify the process of creating a composite application. You can download the demo code from the sidebar or download it from here.

This new event is "onSelect" and is found in Notes View. This event works not only for regular views but also for embedded views and even embedded views within a dialog box. This event is triggered whenever a document is selected in a view. It hold true even when the view is display for the first time. As a Notes developer, I feel this one single event is more than enough reason to upgrade to at least the Lotus Notes 8 Basic client. It makes a number of UI issues simply go away.


Just like in the previous Lotus Notes clients we need to create a launch document in our composite application that will be used to trigger the population of the frames in the composite application. However, rather than using the hidden frame method that was presented in part 1, we can use the "onSelect" event to directly run our code to populate each frame in our composite application. This method has a number of key advantages over the hidden frame method. First, there is no need to create a hidden frame to launch the launching document. Second, you do not need to write code to initially populate the frames when information appears for the first time. The onSelect event occurs automatically when the view first appears regardless of whether you selected a document. By default, the onSelect event will trigger on the first document that appears in your view. As a results, you can essentially daisy chain a series of embedded views to create your composite application.


The code to populate the individual frames in the composite application is the still same but the trigger is now "onSelect." In our demo, I have combined the two triggering methods to create a composite application that would run both for the pre Notes 8 and Notes 8 clients. In the onLoad event of the launching document, I check to determine which version of the Lotus Notes client I am running. If it is Notes 7 or earlier than the onLoad event is active. If not, the onLoad event process never occurs, and we rely on the onSelect of the launching view to trigger the process.

You can extend the concept and create libraries of event triggers to populate the individual frames so that the onLoad and onSelect is triggering the same code. In our Integrated Business Framework environment we create a set of WSDL like XML to populate the individual frames, but the triggering process is the same as I have described here. Have fun and see everyone at Lotusphere. I will be at booth #533, ReCor, if you have any questions.

3 comments:

Wayne said...

Richard,
Thanks for putting this together. I've used the hidden frame method before but this organizes things into a very nice framework.
This post is probably going to be overshadowed by events at lotussphere which is why I haven't seen any other comments so far, but this will be one one of the most useful blog entries for me this year.

Richard Moy said...

Wayne,

Thanks for your comments. I unfortunately have been too busy working at Lotusphere to catch your comment.

peggy said...

Richard,

I've downloaded the demo. But unfortunately one of the NSF CA_Shipping cant be opened due to encryption. It showed a message "Attempted encryption operation is not supported by this version of Notes".

Is there a way for me to retrieve five NSF in complete version?

Thanks