Preface
Purpose
Audience
Organization
Using ABL documentation
References to ABL compiler and run-time features
References to ABL data types
Typographical conventions
Examples of syntax descriptions
Long syntax descriptions split across lines
Complex syntax descriptions with both required and optional elements
Example Web objects
OpenEdge messages
Obtaining more information about OpenEdge messages
Developing with WebSpeed
Introduction to WebSpeed
WebSpeed and the OpenEdge platform
The OpenEdge Reference Architecture
WebSpeed and the OpenEdge Reference Architecture
Web programming and WebSpeed
Web Objects
Types of Web object
Standard or static HTML Web objects
Embedded SpeedScript Web objects
CGI Wrapper Web objects
HTML Mapped Web objects
General criteria for use
Using Web object examples
Web object URLs
Embedded SpeedScript examples
A simple query
Handling form input
A CGI Wrapper example
HTML mapping examples
Simple HTML mapping
Mapping form elements to database fields
Generating the offset file
Editing process-web-request
Compiling and running
SpeedScript form buffer
An alternative to form buffer input
Complex HTML mapping
Complex HTML mapping that includes a SmartDataObject
Creating a SmartDataObject
Mapping with a SmartDataObject
Adding code
SpeedScript
SpeedScript and Progress ABL
Similarities
Differences
Elements of SpeedScript syntax
Statements
Comments
Blocks
Running procedures and Web objects
Persistent procedures
WebSpeed calling conventions
Blocks and context
Block context and resource scope
Unscoped resources
Dynamic resources
Compile-time versus run-time code
Compile-time code
Compile-time syntax elements
Run-time code
Run-time syntax elements
How compile-time and run-time code interact
WebSpeed preprocessors
WebSpeed API functions
Message handling
Generating messages directly
Generating messages with a custom tag
General information exchange
Passing information between Web requests
Cookies
URL query strings
Hidden form fields
User fields
Managing date and time information
Checking configuration options
Generating Web page headers
XML support in SpeedScript
Overview of Embedded SpeedScript
Authoring embedded SpeedScript files
How to embed SpeedScript in HTML
Statement escapes
Expression escapes
Building interactive Web pages with embedded SpeedScript
Passing parameters
Managing dynamic pages with forms
Defining local data and getting input
Defining forms
Managing SpeedScript blocks and conditional execution
Building URL query strings and closing out the page
Using <META> and <!--WSMETA --> tags
Specifying file type options
Specifying HTTP header information
Generating information prior to HTTP header output
Compiling and running embedded SpeedScript Web objects
Compiling embedded SpeedScript Web objects
Running embedded SpeedScript Web objects
Handling DISPLAY Output
Working with DISPLAY output
Directing DISPLAY output
Using the WebSpeed-defined output stream
Defining and using a new output stream
Formatting DISPLAY output
Paging options of the OUTPUT TO "WEB" statement
HTML attributes of the WEB-CONTEXT handle
Changing output format defaults
Setting {&WEBSTREAM} defaults
Setting HTML attribute defaults
Entering attribute definitions
Examples
Generating HTML Visualizations
Overview
Using the support for HTML table visualizations
Generating HTML tables with a custom tag
Rules for using custom tags
Using the <!--WSTAG--> custom tag
NAME attribute
FILE attribute
How tagrun.p interacts with the custom tag
Using the table template
Compiling the table template
Generating HTML tables directly from SpeedScript
Adding a template to AppBuilder
Support for other HTML visualizations
Using JavaScript with WebSpeed
SpeedScript versus JavaScript
Using JavaScript source files
Some JavaScript examples
A combo box with URL buttons
Browser detection
Printing from an HTML page
Controlling WebSpeed Transactions
Defining state
Web object states
WebSpeed application states
Advantages and drawbacks of state-persistence
Understanding state-persistent transaction control
How to make a Web object state-aware
Web objects in stateless and state-persistent contexts
Primary and secondary Web objects
Running primary and secondary Web objects
State-aware Web objects and persistence
Implementing transaction control
Modifying the outputHeader procedure
Modifying the process-web-request procedure
Overriding procedures and functions
Modifying the attribute list
Modifying the user field list
Transaction control and embedded SpeedScript objects
Transaction control with CGI Wrapper Web objects
Transaction control with HTML-mapping Web objects
Anatomy of process-web-request in HTML-mapping
Modifying the request logic
Moving data through the HTML mapping Web object
Frame buffer and record buffer
inputFields data movement
assignFields data movement
Committed transactions
FIND records
displayFields data movement
enableFields effects
outputFields data movement
Creating Definitions
Modifying the Main Code Block
Customizing field object control handlers
Handling state-aware time-outs
Using a Web object time-out handler
Resetting a Web object's time-out period
Advantages of using SERVER-CONNECTION-ID
Enabling connection identifiers
Handling Binary Large Objects (BLOBs)
Specifying maximum size of uploaded files
Controlling Database Transactions
What is a database transaction?
DB transactions in code
All-or-nothing processing
Understanding the scope of database transactions
Subtransactions
Controlling where DB transactions begin and end
SpeedScript components and database transactions
Subprocedures
File input
Program variables
Database transactions in applications
Multi-database applications
Two-phase commit
Checking database connections
Distributed applications
Determining when database transactions are active
Transaction system mechanics
Database transaction mechanics
Subtransaction mechanics
Efficient database transaction processing
Multi-page database transactions
Managing multi-page DB transactions
Working with the multi-page transaction example
Guidelines for usage
Debugging Applications
Overview
Adding debug=on to URL
Persistent debugging using cookies
Calling the virtual debug Web object
Debugging and administrative options
Agent specific information
Persistent state cookies
HTTP headers sent
Miscellaneous variables
Environment variables
Form fields
Utilizing debugging in your application
Reading the broker's log files
WebSpeed API Reference
available-messages
check-agent-mode
convert-datetime
delete-cookie
format-datetime
getAttribute
get-binary-data
get-cgi
get-cgi-long
get-config
get-cookie
get-field
get-long-value
get-message-groups
get-messages
get-transaction-state
get-user-field
get-value
hidden-field
hidden-field-list
html-encode
HtmlError
output-content-type
outputHeader
output-http-header
output-messages
process-web-request
queue-message
run-web-object
set-attribute-list
set-cookie
set-transaction-state
set-user-field
setWebState
url-decode
url-encode
url-field
url-field-list
url-format
Preface
url-format