The Eventful Notes Client
There have been many attempts to explain what Lotus Notes is. I'd like to add my own - from the perspective of software development:
. Some examples of events are: Database opened, Default value of a field, Saving a document etc. There are MANY events and the knowledge how to use what event and when makes the Notes developer <g>
I assembled a small database with one outline, one page, one frameset, two views, one form, one subform and a few fields. I "mined" almost every event I could find with prompts to determine the sequence of the events firing (I didn't mine Hide-when formulas, the onKey..., onMouse... and onChange events).
After putting all the events into code I performed the following actions, starting with the empty database:
Update: Also checkout Part 2 of the story.
Some interesting factoids:
Lotus Notes is an event engine that provides the developer with the capability to assemble an application from predefined events and react to them.
The languages available to react to events are: @Formula, LotusScript, JavaScript, Java, C/C++. The selection of available languages depends on the event you want to react on.. Some examples of events are: Database opened, Default value of a field, Saving a document etc. There are MANY events and the knowledge how to use what event and when makes the Notes developer <g>
I assembled a small database with one outline, one page, one frameset, two views, one form, one subform and a few fields. I "mined" almost every event I could find with prompts to determine the sequence of the events firing (I didn't mine Hide-when formulas, the onKey..., onMouse... and onChange events).
After putting all the events into code I performed the following actions, starting with the empty database:
- Open the database (into the frameset)
- Switch from the View "$All" to the View "SecondView"
- Create one document "EventSample"
- Fill all fields with values
- Press F9 to recompute
- Change one more value
- Press Ctrl+S to save
- Close the document
- Repeat Step 3-8
- Select the View "$All"
- Delete the current document (Del key)
- Select the next document
- Select the deleted document
- Undelete the document
- Close the database
Update: Also checkout Part 2 of the story.
Some interesting factoids:
- The events fire a little off: QueryOpen of a view fires before the PostOpen of the database
- Input translation events fire with the formulas of computed fields. Input validation after that in their own sequence
- Subform events, even the JSHeader, fire after the form name has been identified
- Web only events don't fire in the client
- The QueryDocumentDelete also fires if you don't have the right to delete
- Terminate is really the last thing to fire, however the interesting objects are out of scope then
Posted by Stephan H Wissel on 06 July 2007 | Comments (2) | categories: Show-N-Tell Thursday