Master Table of Contents
Every organization is unique. IBM Lotus Software is designed around open-standards and extensible frameworks to allow our software to be tailored to the specific business needs of our customers. Lotus Notes, Sametime, and Symphony are all built on a Lotus Expeditor core, which provides a common programming model based on Eclipse and allows significant reuse of assets across the products.
This Redbooks Wiki is intended to server as a jump start guide to plug-in development. We ask that that you help us continue to refine and enhance it, improving areas that need it and adding or updating samples and code snippets.
While there are many ways to integrate into the software stack, three primary use cases fit most of the desired and promoted integration scenarios. As a plug-in developer one does not know how many other plug-ins may be installed on a given client. Care must be taken to deliver the most value with the least amount of impact - both visually and on performance. The three scenarios below are most commonly used and the focus of this Redbooks Wiki.
Toolbars, menus, and actions
Toolbars, menus, and actions are intended to provide menu-click or right-click capabilities the place the integrated feature in the appropriate location. Context-sensitive location. Care should be taken to ensure that the integration is available when appropriate and hidden when not. It might seem like a benefit to show a toolbar on every view, or a right-click menu at every point, but most users find this adds clutter and may find the plug-in unusable.
Sidebars are generally used to provide a mini application experience, often exposing the most commonly used aspect of another program. The sidebar can be enabled to support drag and drop, notified when data changes in the primary view (e.g. mail preview loaded), and in general augments the primary task the user is working on.
While this Redbooks Wiki focused on the front-end integration for the end user, there are a variety of back-end APIs available for plugins. It is important to define the use cases and determine whether the plug-in requires access to product-specific APIs. Many integrations in Notes, for example, will leverage the Notes Java UI APIs, which provide access to the "back-end" classes in Notes that provide the data for Notes Views and Notes Documents.
Case Study 1
Sandra works with Organization "A". The pre-developed email application provides basic mailing functionality, which helps her conduct business communication. But this is not the end. Sandra needs to be connected with her peers from "A". Additionally, she needs to be connected to the social media today (Twitter, LinkedIn, and so on) to keep in touch with current friends, reconnect with old friends or create real–life friendships through similar interests or groups. Also, she needs to follow RSS feeds from various Internet sites. She also plans and conducts meetings across the globe and therefore needs to have access to a world clock or maybe a translator, to name a few. So, she also wants to view a summary of the calendar. These functional items are only a few on Sandra's wish list.
In the below figure, as we can see, Sandra is challenged @ Work..A lot of things to do in a day ! And, this combined with focussed ability to work, collaborate and execute with effectiveness.
But, for all these, Sandra needs to go through various channels. Sandra needs Lotus Notes for email, a browser application to access internet sites, an instant messaging system as Lotus Sametime to interact with her colleagues, a World Clock application. Would it not be preferable to have all those useful business tools in one place - maybe our email application, that is, Lotus Notes?
From the perspective of a software company, all these features are feasible but the requirements may vary from organization to organization. So, generally modifying a pre-defined/source email application does not sound like a good value proposition. Instead, we need a more creative and innovative approach; this is how the concept of “customized software components” was introduced into the equation. The bottom line of this approach is that the customized software components can be seamlessly integrated into the existing software infrastructure, which can clearly benefit both the organization and the software company.
Sandra has Lotus Notes as her email application. She wants a dashboard to access Lotus Sametime and Feeds. And all this embedded into Lotus Notes. A survey is done in the organization and it is found that a majority would be happy with this integration. The integration would lead to a high performance work environment which allows flexible access to information and expertise. Also, the integration would allow "Seamless Access" to collaborative capabilities. The organization realizes that "Collaboration In Context", if applied with precision at point of impact improves business process efficiency and quality, reduces human latency and ultimately drives organizational optimization. Now, the real challenge for the organization is to create top line growth while at the same time managing bottom line costs in today's economy.
IBM does understand organization requirements and provides a range of "collaboration enabled" products in the Lotus portfolio. The below figure shows how we can address Sandra's requirements on the fly.
So, we now know that collaboration is possible. So, the development team's challenge is "HOW" to do it and "HOW EASY" is it to do it? So coming back to Sandra's requirements, she needs a sidebar to access Feeds and LinkedIn. The sidebar would provide rapid access to the Feeds and get the just-in-time information at a "click". Now, this sidebar needs to be easily developed, deployed and integrated into Lotus Notes. To do so, the developer can refer to Chapter "Developing Sidebars", wherein step-by-step instructions are provided.
Case Study 2
Sandra and her co-workers are happy with the availability of sidebars to access Feeds, Calendar, etc. Now, Sandra, often has to work with data and exchange data between Lotus Notes and Lotus Symphony documents or spreadsheets. So, she leverages the Lotus Notes client's feature - Edit > Copy As > Table menu command and finally paste data in to a spreadsheet. This done easily, Sandra wonders if she could have the facility of formatting rows and/or columns. As for instance, sometimes she wants to skip particular columns, highlight values depending on thresholds. This being a very common scenario, is then taken forward to the organization board which states that requirement is indeed practical. The development team has to provide the implementation. To do so, the team needs to be aware of the following :
1. Notes Specific APIs.
2. Symphony Specific APIs.
To leverage usage of Notes and Symphony APIs and to build the above functionality, a detailed step-by-step instructions are given in the section Section 8 Interacting with Notes
" of Chapter "Leveraging Symphony specific APIs
As we have seen in the above section of use cases, customizable software technology proves beneficial to both the organizations and software companies. Organizations need an optimized workspace with built in productivity and collaboration capabilities that can be embedded in their processes. Also, this approach can help reduce training costs since the customized components are mapped to existing business processes. Easy deployment and a unified user experience prove to be a boon that can help fulfil specific requirements without going through the entire process of another robust enterprise installation.
Software companies also benefit at the same time. This approach can help create new capabilities to extend an application. New features can be easily added and supported. A plug and play feature with deep, seamless integration is the key. Integration between products and applications provide more value than the sum of parts. Another benefit is that the size of the host application also gets reduced. Customized software components can be developed progressively along with preferences and expectations of each organization who wants to employ them.
We have seen how the customized development practices were born. We have seen through use cases the benefits of having customizable, flexible, plug and play feature of software components into existing software.
The below figure summarizes the benefits of the Collaboration Console provided by IBM in the Lotus Portfolio.
The next few chapters, we will help you to understand the architecture of customizable components for Notes, Symphony and Sametime through this chapter Architectural Components. The design and deployment will be discussed in details in the chapter "". Going further, we will walk through the development environment in chapter Setting up the Development Environment. Going further, we will see how to develop sidebars,toolbars, menus and actions. Also, we have step-by-step instructions with examples to demonstrate how to leverage Notes-specific, Sametime-specific, and Symphony-specific APIs.