Let's start by talking about the unique architecture of a Notes database and the terminology used by Notes developers. Lotus Notes is an event-driven language that stores information in a database called a Notes Storage Facility, or NSF file. This file holds both application design information and data. It's important to understand that a Notes application may consist of one or more NSF database files.
Lotus Notes, unlike a relational database management system (RDBMS), stores information in data structures called documents. Forms are used to enter data and display documents. Documents can contain text, tables, images, and file attachments and can support complex formatting (such as bold, underline, subscript, colors, and fonts) similarly to word-processing documents. This information is stored in one or more fields on each document. Forms display and capture information associated with a single document and often contain embedded controls to help the user navigate them. It is the combination of the form, controls, and data that ultimately comprises a "document."
Pages are associated most typically with Web sites and are used to display information. They cannot be used to capture data from or enter data into the database.
Using views, you can display multiple documents in a series of rows and columnslike a spreadsheet. The information displayed in the view is determined by a view selection formula, or query. All documents that meet that query are automatically displayed in the view. Folders, on the other hand, allow users to move (or group) documents of a common interest to one place. Folders also display data using rows and columns. However, unlike views, documents are typically added to the folder by the application users (either manually or programmatically).
Even though Notes data is presented in views in rows and columns, it's important to understand that Lotus Notes is not a relational database. This is a common misconception about Notes databases and is one of the most difficult concepts for new developers to grasp. For example, because the design and data are separate, deleting a column from a view will have no impact on the data already stored in the database. In other words, the view no longer shows the data, but the data still resides in the database.
You can also add action buttons and agents to improve the usability of the Notes database. Buttons contain automated actions that can be manually triggered by users. Agents are automated tasks. An agent can be called from a button or hotspot, called manually from a menu list, or scheduled to run based on a specific date and time interval. Agents can be created using "simple actions," Formula Language, LotusScript, Java, and Imported Java code. For example, a scheduled agent could be used to send a weekly or monthly status report to everyone in the department.
Finally, to enhance the presentation and navigation of the user interface, we use framesets, outlines, and navigators. These design elements allow you to give a custom look and feel to the Notes database. Although there are other design components, these are the most commonly used in the development process. Figure 4.1 illustrates just a few of the elements that comprise a Notes database application. Notice that data can be displayed in and utilized by a variety of design elements. This illustration shows that views contain documents and documents contain fields, all of which can access data.
Figure 4.1. Relationship between common design elements and data
It's important to understand that the design (forms, fields, views) and data (documents) are stored separately within a database. In short, the design elements are used to present and modify information and to navigate the application. However, the data that resides within the database is completely isolated from the design elements. This means the design can be changed (and even deleted) without affecting the documents already stored in the database. This can be one of the most difficult concepts to grasp as a Notes developer.
The remainder of this chapter details naming conventions, design elements, and events used to manage applications. First, we'll describe naming conventions and options. Next, we'll review each design element in the sequential order displayed in the Design pane of the Domino Designer client. Finally, at the conclusion of the chapter, we'll briefly discuss how automation can be added to events to manage application functionality. These items are the basic building blocks of any Notes database. As a Notes developer, you will work with any number of these elements to build and maintain applications.
An Introduction to the Lotus Domino Tool Suite
Getting Started with Designer
Navigating the Domino Designer Workspace
Domino Design Elements
An Introduction to Formula Language
An Introduction to LotusScript
Fundamentals of a Notes Application
Reference Library Applications
Design Enhancements Using LotusScript
Design Enhancements Using Formula Language
Miscellaneous Enhancements and Tips for Domino Databases
Application Deployment and Maintenance
Appendix A. Online Project Files and Sample Applications
Appendix B. IBM® Lotus® Notes® and Domino®Whats Next?