In this course, you will learn how to:
This course will teach you how to:
- extend your knowledge of the formula language
- build your understanding of data validation and error trapping
- provide extensive programming and debugging experience to ensure mastery of key @Functions and @Commands
- use @Functions to operate on multi-value variables and Fields
- describe how to conditionally execute code based on document state and user identity
- explain data inheritance and inter-document relationships
- show how to use well-known locations to store configuration information
- show how to interact with users with prompts and dialog boxes
- use mail to send documents between databases.
Lotus Training Audience
This course is designed for Notes programmers well versed in using Domino Designer 8. It assumes that you have:
- thorough knowledge of the Domino Designer development environment, including Form and View design, as well as how to use properties boxes, and how to set the ACL
- mastered the topics covered in Domino Designer 8: Basic Notes Applications.
Though not required, experience in any computer programming or application scripting language (including spreadsheet formulas) is helpful in understanding how to maximize the use of the formula language.
This course is part of a series of Domino Designer 8 training courses. Follow these paths to master all aspects of developing applications using Domino Designer:
Domino Designer 8: Basic Notes Applications provides the base knowledge for this additional training:
Client Track
- Configure Domino to use DB2 as a database engine and build applications that access relational data, DB2 for Domino 8 Administrators and Developers.
- Specialize in programming Notes applications to respond to built-in user interface features, Domino Designer 8: Special Notes Features.
- Convert an application written for Notes clients to be used in browsers, Domino Designer 8: Basic Browser Applications.
- Provide data to cutting-edge Web applications, Domino Designer 8: Web Agents and Web Services.
Language Track. These languages apply to both Notes and browser clients:
- Learn sophisticated application techniques that fully exploit the formula language in Domino Designer 8: Formula Language.
- Develop sophisticated applications and Agents with LotusScript in Domino Designer 8: LotusScript.
- Add powerful client-side scripting to browser applications in Domino Designer 8: JavaScript.
Course design
This lecture-lab course involves significant hands-on coding experience using the formula language. It only peripherally explores the principles of programming and does not attempt to cover every option of every function.
Lotus Training Course duration
2 days
Lotus Training Course outline
Topic 1: Using the Formula Language
Programming languages used in Domino
Advantages of the formula language
Object model programming
Where to
use the formula language
Event code
interplay
Formula results
Ancillary event triggers
Exercise:
Create non-replica copy of DDFL8 Demo
Exercise:
Formula return values quiz
Topic 2:
Variable and Field Assignment
Valid variable and Field names
Temporary variables
Self-referential Field events
@ThisName and @GetField
Exercise:
@ThisName and @GetField
Set Field
values
Append temporary variable and Field
values
Formula context
Exercise: Formula context
Reserved
and internal Field names
Exercise:
Printer-friendly display I
Exercise:
Printer-friendly display II
Topic 3:
Formula Toolbox
Matching and equivalence
String matching
String
parsing
String replacement
Random number
Time/date
functions
Data type conversion
Exercise: Data type conversion
Data testing
DEFAULT
keyword
Topic 4: Multi-Value
Variables and Fields
What is a multi-value list?
Multi-value operations and functions
Convert single-value list to multi-value list
Convert a multi-value list to a single-value
list
Element count
Select a value from the list
Exercise: @Subset and @Implode
Pair-wise and Permutation operators
Determine if a value is in the list
Replace an item in the list
Minimum and maximum value
Compare
ASCII values
Sort a list
Sum a list of numbers
Exercise:
Sum a list of numbers
Date
range
Dynamic tables
Looping functions
@For
loop
Reuse temporary variables
@While loop
Exercise:
@While
@DoWhile loop
@Transform
@Nothing
@Select and
@Word
Topic 5: Conditional Evaluation
Single @If with multiple conditions
@Select
Multiple actions using
@Do
Aborting execution with
@Return
Multiple @If statements
Conditional save and close
Conditional evaluation based on document state
Exercise: Document state
Conditional evaluation based on user identity
Exercise: User rights
Topic 6: Data Inheritance
Configure inheritance
Inheritance caveats
Conditional
inheritance
Exercise:
Inheritance
Require inheritance
Disallow pasted documents
Inherit
Rich Text
"Inheritance" across
databases
Topic 7: Database Lookup
@NameLookup
@Db function
overview
Where to use lookup
functions
Lookups and security
@DbColumn Function
Static Field
lists
External Field lists
Exercise: @DbColumn
@DbLookup
function
@DbLookup parameters using
Notes
Error trapping
Exercise: @DbLookup
Create unique
keys
Return values from multiple source
documents
Return multiple values from single
source document
Document refresh
issue
Limit when lookup is
performed
Overcome return data size
limits
General lookup performance
tips
Topic 8: Document Relationships
When to use Response documents
Design Response document Form
Create Response document
Response
document internals
Creating the response
hierarchy after the fact
ComposeWithReference
ComposeWithReference flags
Another
way to relate documents
Primary key
relationship
Field reference by document
UNID
Exercise: Document ID
relationship
Lookup versus direct Field
reference
One-to-many
relationships
Updating related
documents
"Doclink" to
parent
Topic 9: Well-Known Locations
Well-known location mechanisms
Local NOTES.INI access
Environment
function syntax
Environment
restrictions
Environment read/set
sequence
Exercise: Environment
variable
Reading the Windows
Registry
Lookups
Profile documents
Profile
documents and security
Create Profile
document
Read from Profile document
Fields
[NoPersist] option
Exercise: Profile document
Topic 10: User Prompts
@StatusBar
Where you
can prompt users
Using the data from prompts
and picklists
@Prompt syntax
Password prompt
Directories
File
prompts
Exercise: @Prompt
@PickList syntax
Exercise:
Picklist
Limitations of prompts and
picklists
Execution by temporary
variables
Preview pane caveat
Where to call @Dialogbox from
@DialogBox syntax
@Dialogbox
caveats
Exercise: Dialog box
Optional dialog box keywords
Button type
Which dialog box to
use?
Topic 11: Mail Documents
Copying versus mailing documents to other
databases
Mail mechanisms
SendTo value
Mailing to a person
in your Domino Domain
Mailing to a person in
another Domino Domain
Mailing to Internet email
address
Mailing to a group
Mailing to a Mail-In Database
Sequence of Group and Mail-in Database
resolution
Mail triggers
Trigger 1: Form property
Trigger
2: MailOptions Field
Trigger 3:
@Command([MailSend])
Trigger 4: @MailSend
without parameters
Exercise: @MailSend without
parameters
@MailSend and scheduled
Agents
Trigger 5: @MailSend with
parameters
Mail-related reserved/system
Fields
SaveOptions Field
$AssistMail Field
Fields added by
the system
Exercise: @MailSend with
parameters
User Mail functions
User Mail commands
Ensure
documents are mailed only once
Mail-in database
programming
Store Form in document
property
Three mail-enabled application
models
Resolve duplicate documents