Lotus: Composite Applications help filling out Notes Forms

THEMES: Lotus\Notes/Domino 8 | Lotus\Composite Appl...
YEAR: 2007
Login Login
User: Anonymous


LABEL: Composite Application | Lotus Notes 8 | Lotus Notes API
ORGANIZATIONS: IBM
 

Comments/attachments: Close
 
Resources
Composite Applications help filling out Notes Forms
http://www-03.ibm.com/developerworks/blogs/page/CompApps?entry=composite_applications_help_filling_out&ca=drs-bl

Many Notes users spend a lot of their time to fill out Notes forms (e.g. travel requests, expense reports, etc.). With composite applications in Lotus Notes 8.0 you can put Notes forms together with other peripheral components on a page. The other components can then be used to lookup or select certain information that you need to put in the form. Rather than doing this manually though, the property broker can be used to fill out certain fields automatically based on selections in peripheral components. This will improve the efficiency of end users extremely since they don't have to leave their page anymore and don't have to copy and paste information.

In order to put a form (new document) on a page you can use the CAE to point to a Notes form in a database via Notes://....Form1?OpenForm which is generated by the NSF component picker in CAE. The form can then provide actions that consume input properties from other components which are put in fields of the form.

A limitation in Lotus Notes 8.0 is currently that you can not open existing documents on pages with other components easily. What you can do is to use a page which contains a Notes frameset. The frameset has two columns. The left column is sort of hidden (well, you still see the slider) and has one action. This action accepts a document unid or Notes URL to a document and opens this document in the right column via standard LotusScript frameset APIs. In the right column you have to put a Notes form so that the registration of the actions of that form happens which is required to do the wiring in the CAE. The form can then provide different actions to populate certain fields in the form.

Another alternative is not to use a frameset but to use a Notes form only on the page. The form can then have an action consuming a document unid that searches the appropriate backend document, reads the necessary data and then populates the UI document/form with it. However there are limitations with this approach, e.g. this doesn't work for rich text fields.

Both alternatives have disadvantages. You can always and only open one document at a time which is not the normal ways many Notes applications are implemented. The other issue is that in both cases you need to implement additional LotusScript code.

In Lotus Notes 8.0.1 I'd like to extend this. It should be possible to define hidden pages in CAE that contain sort of placeholders for where the documents will show up at runtime and that contain other components. The placeholder component needs to point to a certain form in a certain database so that we can do the registration of properties and actions again. This hidden page does never show up in the navigator. It is only launched when you open a Notes document, e.g. from a Notes view. We then could pass in the document unid to the placeholder at runtime. In order to support multiple documents be opened at the same time we actually would not open the original page as defined in CAE, but we would actually clone it for every document.

The next question is how we decide which Notes documents we should open a normal Notes documents (as today, no other components on page) and which ones we should open on composite application pages. In order to keep this as simple as possible I suggest we use a simple naming convention. We give every page a name (e.g. com.ibm.rcp.alias preference on page). When a Notes document is then supposed to be opened we read its form and then check if there is a page in the current composite application which has the name name as the form. If so we know to open the document on a page with other components.