Essays /

123455432 Oracle Forms Reports Essay

Essay preview

Oracle Forms Developer and Oracle Reports Developer

Guidelines for Building Applications

Release 6i

January, 2000
Part No. A73073-02

Oracle Forms Developer and Oracle Reports Developer: Guidelines for Building Applications, Release 6i Part No. A73073-02
Copyright © 1999, 2000 Oracle Corporation. All rights reserved. Portions copyright © Blue Sky Software Corporation. All rights reserved. Contributing Authors:

Frederick Bethke, Marcie Caccamo, Ken Chu, Frank Rovitto

The programs are not intended for use in any nuclear, aviation, mass transit, medical, or other inherently dangerous applications. It shall be licensee’s responsibility to take all appropriate fail-safe, back up, redundancy and other measures to ensure the safe use of such applications if the Programs are used for such purposes, and Oracle disclaims liability for any damages caused by such use of the Programs. The Programs (which include both the software and documentation) contain proprietary information of Oracle Corporation; they are provided under a license agreement containing restrictions on use and disclosure and are also protected by copyright, patent and other intellectual and industrial property laws. Reverse engineering, disassembly or decompilation of the Programs is prohibited.

The information contained in this document is subject to change without notice. If you find any problems in the documentation, please report them to us in writing. Oracle Corporation does not warrant that this document is error free. Except as may be expressly permitted in your license agreement for these Programs, no part of these Programs may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without the express written permission of Oracle Corporation.

If the Programs are delivered to the US Government or anyone licensing or using the Programs on behalf of the US Government, the following notice is applicable:
RESTRICTED RIGHTS NOTICE
Programs delivered subject to the DOD FAR Supplement are 'commercial computer software' and use, duplication and disclosure of the Programs including documentation, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement. Otherwise, Programs delivered subject to the Federal Acquisition Regulations are 'restricted computer software' and use, duplication and disclosure of the Programs shall be subject to the restrictions in FAR 52.227-19, Commercial Computer Software - Restricted Rights (June, 1987). Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065.

Oracle is a registered trademark, and Express, Oracle7, Oracle8, and PL/SQL are trademarks or registered trademarks of Oracle Corporation. All other company or product names mentioned are used for identification purposes only and may be trademarks of their respective owners.

Contents
Send Us Your Comments .................................................................................................................. xiii Preface........................................................................................................................................................... xv 1 Managing Your Applications

1.1
The Software Development Lifecycle: An Overview.............................................................. 1.1.1
Using Project Builder to implement a management strategy............................................ 1.1.2
About Project Builder ....................................................................................................... 1.1.2.1
Understanding Project Builder terminology .............................................................. 1.1.2.2
How Project Builder affects existing development roles........................................... 1.1.3
Exploring Project Builder benefits.................................................................................... 1.1.3.1
Associating modules with an application .................................................................. 1.1.3.2
Automating actions based on file types ..................................................................... 1.1.3.3
Creating dependencies between modules .................................................................. 1.1.3.4
Assigning default connection strings to modules ...................................................... 1.1.3.5
Designating which modules are to be included in the final install set....................... 1.1.3.6
Sharing and porting project and subproject registry files .......................................... 1.1.3.7
Accessing other product components and third party tools ....................................... 1.1.3.8
Using source control packages .................................................................................. 1.2
Managing Project Documents During Design and Development .......................................... 1.2.1
Installing Project Builder ................................................................................................ 1.2.1.1
Installing the project and user registries ................................................................. 1.2.2
Creating a project ............................................................................................................ 1.2.2.1
Creating a project: Project Administrator ................................................................ 1.2.2.2
Creating a project: Team members .......................................................................... 1.2.3
Working with projects and project documents ............................................................... 1.2.3.1
Working with projects: Project Administrator......................................................... 1.2.3.2
Working with project documents: Team members.................................................. 1.2.4
Managing projects and project documents across multiple platforms ............................ 1.2.4.1
Managing projects across multiple platforms: Project Administrator .....................

1-2
1-3
1-3
1-4
1-6
1-7
1-7
1-7
1-8
1-8
1-9
1-9
1-9
1-9
1-10
1-10
1-11
1-12
1-12
1-16
1-18
1-19
1-20
1-21
1-22

iii

1.2.4.2
Managing project documents across multiple platforms: Team members .............. 1-22 1.3
Managing Project Documents During the Test Phase............................................................ 1-23 1.3.1
On the development side................................................................................................. 1-24 1.3.1.1
The test phase: Project Administrator...................................................................... 1-24 1.3.2
On the test side................................................................................................................ 1-24 1.3.2.1
The test phase: Testers ............................................................................................. 1-25 1.4
Managing Project Documents During the Release Phase ...................................................... 1-25 1.4.1
On the development side................................................................................................. 1-26 1.4.1.1
The release phase: Project Administrator ................................................................ 1-26 1.5
Deploying Completed Applications ....................................................................................... 1-26 1.5.1
Before You Begin ........................................................................................................... 1-27 1.5.1.1
Terminology............................................................................................................. 1-27 1.5.1.2
The Oracle Installer files.......................................................................................... 1-28 1.5.1.3
The contents of the TEMPLATES directory ........................................................... 1-30 1.5.2
Making your application an installable product.............................................................. 1-31 1.5.2.1
Deploying your application on Windows ................................................................ 1-31

2 Designing Visually Effective Applications
2.1
Understanding the Process ...................................................................................................... 2.1.1
What are the stages?.......................................................................................................... 2.1.2
Defining user requirements ............................................................................................... 2.1.3
Planning the user interface ................................................................................................ 2.1.3.1
Creating your standards ............................................................................................. 2.1.3.2
Considering portability .............................................................................................. 2.1.3.3
Creating a prototype................................................................................................... 2.1.4
Building the user interface elements ................................................................................. 2.1.5
Gathering user feedback.................................................................................................... 2.2
Creating an Effective Form .................................................................................................... 2.2.1
Understanding forms....................................................................................................... 2.2.1.1
What is a module?.................................................................................................... 2.2.1.2
What are forms, blocks, items, regions, and frames? .............................................. 2.2.1.3
What are windows and canvases?............................................................................ 2.2.2
Guidelines for building forms ......................................................................................... 2.2.2.1
Using object libraries ............................................................................................... 2.2.2.2
Understanding basic design principles .................................................................... 2.2.2.3
Adding color ............................................................................................................ 2.2.2.4
Creating canvases .................................................................................................... 2.2.2.5
Creating windows .................................................................................................... 2.2.2.6
Creating regions ....................................................................................................... 2.2.2.7
Adding items to blocks ............................................................................................

2-1
2-3
2-3
2-4
2-5
2-6
2-6
2-9
2-9
2-10
2-10
2-10
2-11
2-12
2-14
2-15
2-16
2-18
2-19
2-21
2-22
2-23

iv

2.2.2.8
Designing messages ................................................................................................. 2.2.2.9
Implementing online help ........................................................................................ 2.2.2.10
Building effective menus ......................................................................................... 2.3
Creating an Effective Report.................................................................................................. 2.3.1
Understanding Reports.................................................................................................... 2.3.2
Using Templates in Report Builder ................................................................................ 2.3.3
Understanding Layout Objects........................................................................................ 2.3.4
Controlling Layout Objects in Report Builder................................................................ 2.3.4.1
Using anchors .......................................................................................................... 2.3.4.2
Using the Print Object On and Base Printing On properties ................................... 2.3.4.3
Understanding Horizontal and Vertical Elasticity ................................................... 2.3.4.4
Using the Page Break Before and After property .................................................... 2.3.4.5
Using the Page Protect property .............................................................................. 2.3.4.6
Using the Keep with Anchoring Object property .................................................... 2.4
Creating an Effective Display ................................................................................................ 2.4.0.7
Choosing the Right Graph .......................................................................................

2-27
2-29
2-29
2-30
2-31
2-32
2-33
2-33
2-34
2-35
2-35
2-36
2-36
2-37
2-37
2-38

3 Performance Suggestions
3.1
3.2
3.2.1
3.2.2
3.2.3
3.2.4
3.3
3.3.1
3.3.1.1
3.3.1.2
3.3.2
3.4
3.4.1
3.4.1.1
3.4.1.2
3.4.2
3.4.2.1
3.4.2.2
3.4.2.3
3.4.2.4
3.4.2.5
3.4.2.6

Summary ................................................................................................................................. Introduction: What Is Performance? ........................................................................................ Performance When? .......................................................................................................... Performance of What? ...................................................................................................... Interrelationships............................................................................................................... Trade-offs.......................................................................................................................... Measuring Performance ........................................................................................................... Forms Developer- and Reports Developer-Specific Measurements................................. Forms Measurements ................................................................................................. Reports Measurements............................................................................................... Server- and Network-Specific Measurements ................................................................. General Guidelines for Performance Improvement ................................................................. Upgrades of Hardware and Software ................................................................................ Software Upgrades................................................................................................... Hardware Upgrades ................................................................................................. Suggestions for Data Usage ........................................................................................... Use Array Processing............................................................................................... Eliminate Redundant Queries .................................................................................. Improve Your Data Model....................................................................................... Use SQL and PL/SQL Efficiently ........................................................................... Use Group Filters..................................................................................................... Share Work Between Components .........................................................................

3-1
3-5
3-5
3-5
3-6
3-6
3-6
3-7
3-7
3-7
3-9
3-9
3-9
3-10
3-10
3-11
3-11
3-11
3-12
3-12
3-13
3-14

v

3.4.2.7
3.4.3
3.4.3.1
3.4.3.2
3.4.3.3
3.4.3.4
3.4.3.5
3.4.3.6
3.4.3.7
3.4.3.8
3.4.3.9
3.4.3.10
3.4.4
3.4.4.1
3.4.4.2
3.4.4.3
3.4.4.4
3.4.4.5
3.4.4.6
3.4.4.7
3.4.4.8
3.4.4.9
3.4.4.10
3.4.4.11
3.4.4.12
3.4.4.13
3.4.4.14
3.4.4.15
3.4.4.16
3.4.4.17
3.4.4.18
3.4.4.19
3.4.4.20
3.4.4.21
3.4.4.22
3.4.4.23
3.4.4.24
3.4.4.25
3.4.5
3.4.5.1
3.4.5.2

Move Wait Time Forward ....................................................................................... Forms-Specific Suggestions............................................................................................ Tune Your Array Processing ................................................................................... Base Data Blocks on Stored Procedures.................................................................. Optimize SQL Processing in Transactions .............................................................. Optimize SQL Processing in Triggers ..................................................................... Control Inter-Form Navigation ................................................................................ Raise the Record Group Fetch Size ......................................................................... Use LOBs instead of LONGs ................................................................................. Erase Global Variables ........................................................................................... Reduce Widget Creation on Microsoft Windows ................................................... Examine the Necessity of Locking ......................................................................... Reports-Specific Suggestions ......................................................................................... Areas to Focus On.................................................................................................... Reduce Layout Overhead......................................................................................... Use Format Triggers Carefully ............................................................................... Consider Linking Tables ......................................................................................... Control Your Runtime Parameter Settings ............................................................. Turn Off Debug Mode ............................................................................................ Use Transparent Objects ......................................................................................... Use Fixed Sizes for Non-Graphical Objects ........................................................... Use Variable Sizes for Graphical Objects .............................................................. Use Image Resolution Reduction ........................................................................... Avoid Word Wrapping ........................................................................................... Simplify Formatting Attributes ............................................................................... Limit Your Use of Break Groups ........................................................................... Avoid Duplicate Work with Graphics Builder ........................................................ Choose Between PL/SQL and User Exits ............................................................... Use PL/SQL instead of SRW.DO_SQL for DML .................................................. Evaluate the Use of Local PL/SQL.......................................................................... Use Multiple Attributes When Calling SRW.SET_ATTR ..................................... Adjust the ARRAYSIZE Parameter ........................................................................ Adjust the LONGCHUNK Parameter .................................................................... Adjust the COPIES Parameter ................................................................................ Avoid Fetch-Aheads in Previewing ........................................................................ Choose Appropriate Document Storage ................................................................. Specify Path Variables for File Searching .............................................................. Use the Multi-Tiered Server ................................................................................... Graphics-Specific Suggestions ....................................................................................... Pre-Load Your Graphics Files ................................................................................. Update Displays Only If Necessary.........................................................................

3-14
3-14
3-14
3-14
3-17
3-17
3-17
3-18
3-18
3-18
3-18
3-19
3-19
3-19
3-19
3-20
3-21
3-21
3-21
3-21
3-22
3-22
3-22
3-22
3-22
3-23
3-23
3-23
3-24
3-25
3-25
3-25
3-25
3-26
3-26
3-27
3-27
3-27
3-28
3-28
3-28

vi

3.4.5.3
Move Display Updates Out of Loops ...................................................................... 3.4.5.4
Use Common Elements Wherever Possible ........................................................... 3.4.5.5
Limit the DO_SQL Procedure to DDL Statements ................................................ 3.4.5.6
Use Handles to Reference Objects .......................................................................... 3.4.5.7
Consider Not Using Shortcut Built-ins ................................................................... 3.5
In a Client/Server Structure.................................................................................................... 3.5.0.8
Choose the Best Installation Configuration ............................................................ 3.5.0.9
Choose a Suitable Application Residence .............................................................. 3.6
In a Three-Tier Structure ....................................................................................................... 3.6.1
Maximizing Tier 1 - Tier 2 Scalability .......................................................................... 3.6.1.1
Increase Network Bandwidth................................................................................... 3.6.1.2
Minimize Changes to the Runtime User Interface .................................................. 3.6.1.3
Adjust Stacked Canvases ......................................................................................... 3.6.1.4
Perform Validation at a Higher Level ..................................................................... 3.6.1.5
Avoid Enabling and Disabling Menu items ............................................................ 3.6.1.6
Keep Display Size Small ........................................................................................ 3.6.1.7
Identify Paths for Graphic URLs ............................................................................. 3.6.1.8
Limit the Use of Multimedia .................................................................................. 3.6.1.9
Avoid Use of Animations Driven from the Application Server ............................. 3.6.1.10
Take Advantage of Hyperlinks ............................................................................... 3.6.1.11
Put Code into Libraries ........................................................................................... 3.6.1.12
Reduce Start-up Overhead with JAR Files ............................................................. 3.6.1.13
Reduce Start-up Overhead with Pre-Loading ......................................................... 3.6.1.14
Use Just-in-Time Compiling ................................................................................... 3.6.2
Maximizing Tier 2 - Tier 3 Scalability ........................................................................... 3.6.3
Increase Tier 2 Power — Hardware ............................................................................... 3.6.4
Increase Tier 2 Power — Software ................................................................................

3-28
3-28
3-28
3-29
3-29
3-29
3-29
3-30
3-30
3-30
3-31
3-31
3-31
3-31
3-31
3-31
3-32
3-32
3-32
3-32
3-32
3-32
3-33
3-33
3-33
3-33
3-33

4 Designing Multilingual Applications
4.1
National Language Support (NLS) .......................................................................................... 4-1 4.1.1
The language environment variables ................................................................................ 4-2 4.1.1.1
NLS_LANG............................................................................................................... 4-2 4.1.1.2
DEVELOPER_NLS_LANG and USER_NLS_LANG............................................. 4-3 4.1.2
Character sets .................................................................................................................... 4-4 4.1.2.1
Character set design considerations ........................................................................... 4-4 4.1.2.2
Font aliasing on Windows platforms ......................................................................... 4-4 4.1.3
Language and territory ...................................................................................................... 4-5 4.1.4
Bidirectional support......................................................................................................... 4-6 4.1.4.1
Bidirectional support in Form Builder....................................................................... 4-7 4.1.4.2
Bidirectional support in Report Builder..................................................................... 4-8

vii

4.1.5
Unicode ............................................................................................................................. 4.1.5.1
Unicode support......................................................................................................... 4.1.5.2
Font support ............................................................................................................... 4.1.5.3
Enabling Unicode support ....................................................................................... 4.2
Using National Language Support During Development ...................................................... 4.2.1
Format masks .................................................................................................................. 4.2.1.1
Format mask design considerations ......................................................................... 4.2.1.2
Default format masks............................................................................................... 4.2.1.3
Format mask characters ........................................................................................... 4.2.2
Sorting character data...................................................................................................... 4.2.2.1
Comparing strings in a WHERE clause................................................................... 4.2.2.2
Controlling an ORDER BY clause .......................................................................... 4.2.3
NLS parameters............................................................................................................... 4.2.3.1
Using ALTER SESSION......................................................................................... 4.2.3.2
Using NLS parameters in SQL functions ................................................................ 4.2.3.3
Form Builder NLS parameters................................................................................. 4.2.3.4
Report Builder report definition files....................................................................... 4.3
Translating Your Applications ............................................................................................... 4.3.1
Translating your applications using Translation Builder ................................................ 4.3.1.1
Advantages............................................................................................................... 4.3.1.2
Disadvantages .......................................................................................................... 4.3.2
Translating your applications using runtime language switching................................... 4.3.2.1
Advantages............................................................................................................... 4.3.2.2
Disadvantages .......................................................................................................... 4.3.3
Using PL/SQL libraries for strings in code..................................................................... 4.3.4
Screen design considerations ..........................................................................................

4-8
4-8
4-9
4-10
4-10
4-10
4-10
4-11
4-11
4-12
4-12
4-13
4-13
4-13
4-15
4-15
4-16
4-17
4-17
4-18
4-18
4-18
4-19
4-19
4-19
4-20

5 Designing Portable Applications
5.1
Before You Begin..................................................................................................................... 5-2 5.2
Designing Portable Forms........................................................................................................ 5-2 5.2.1
Considering the GUI ......................................................................................................... 5-2 5.2.1.1
Choosing a coordinate system ................................................................................... 5-3 5.2.1.2
Considering monitors................................................................................................. 5-3 5.2.1.3
Using color................................................................................................................. 5-4 5.2.1.4
Resolving font issues ................................................................................................ 5-5 5.2.1.5
Using icons ................................................................................................................ 5-6 5.2.1.6
Using buttons ............................................................................................................. 5-6 5.2.1.7
Creating menus .......................................................................................................... 5-7 5.2.1.8
Creating the console................................................................................................... 5-8 5.2.1.9
Miscellaneous ............................................................................................................ 5-8

viii

5.2.2
Considering the operating system ..................................................................................... 5.2.2.1
Including user exits .................................................................................................. 5.2.3
Strategies for developing cross-platform forms.............................................................. 5.2.3.1
Creating a single source ........................................................................................... 5.2.3.2
Subclassing visual attributes .................................................................................... 5.2.3.3
Using the get_application_property built-in ............................................................ 5.2.3.4
Hiding objects .......................................................................................................... 5.2.4
Designing forms for character-mode .............................................................................. 5.3
Designing Portable Reports.................................................................................................... 5.3.1
Designing a report for character-mode environments..................................................... 5.3.1.1
Design considerations .............................................................................................. 5.4
Designing Portable Displays ..................................................................................................

5-9
5-11
5-11
5-12
5-13
5-13
5-14
5-14
5-17
5-18
5-18
5-19

6 Taking Advantage of Open Architecture
6.1
Working with OLE Objects and ActiveX Controls ................................................................ 6.1.1
What is OLE?.................................................................................................................... 6.1.1.1
When should I use OLE? ........................................................................................... 6.1.1.2
About OLE servers and containers ............................................................................ 6.1.1.3
About embedded and linked objects .......................................................................... 6.1.1.4
About the registration database.................................................................................. 6.1.1.5
About OLE activation styles...................................................................................... 6.1.1.6
About OLE automation.............................................................................................. 6.1.1.7
OLE support............................................................................................................... 6.1.1.8
OLE guidelines ........................................................................................................ 6.1.1.9
Adding an OLE object to your application .............................................................. 6.1.1.10
Manipulating OLE objects....................................................................................... 6.1.1.11
OLE examples.......................................................................................................... 6.1.2
What are ActiveX controls? ............................................................................................ 6.1.2.1
When should I use ActiveX controls? ..................................................................... 6.1.2.2
Manipulating ActiveX controls ............................................................................... 6.1.2.3
Responding to ActiveX events ................................................................................ 6.1.2.4
Deploying your ActiveX control ............................................................................. 6.1.2.5
ActiveX support....................................................................................................... 6.1.2.6
ActiveX guidelines .................................................................................................. 6.1.2.7
Adding an ActiveX control to your application....................................................... 6.1.2.8
ActiveX examples.................................................................................................... 6.2
Using Foreign Functions to Customize Your Applications ................................................... 6.2.1
What are foreign functions? ............................................................................................ 6.2.1.1
When should I use a foreign function? .................................................................... 6.2.1.2
Foreign function types .............................................................................................

6-2
6-2
6-2
6-3
6-3
6-4
6-4
6-5
6-5
6-13
6-14
6-14
6-14
6-17
6-17
6-18
6-18
6-18
6-19
6-20
6-23
6-23
6-25
6-25
6-25
6-26

ix

6.2.2
6.2.2.1
6.2.2.2
6.2.2.3
6.2.3
6.2.4
6.2.4.1
6.2.4.2
6.2.5
6.2.5.1
6.2.5.2
6.2.5.3
6.3
6.3.1
6.3.1.1
6.3.1.2
6.3.1.3
6.3.1.4
6.3.2
6.3.3
6.3.3.1
6.3.4
6.3.4.1
6.3.4.2
6.4
6.4.1
6.4.1.1
6.4.1.2
6.4.1.3
6.4.1.4
6.4.1.5
6.4.2
6.4.3

The foreign function interface......................................................................................... 6-26 The Oracle Foreign Function Interface (ORA_FFI)................................................ 6-27 User exit interface to foreign functions ................................................................... 6-27 Comparing ORA_FFI and user exits ....................................................................... 6-27 Foreign function guidelines ............................................................................................ 6-28 Creating a foreign function ............................................................................................. 6-29 Creating an ORA_FFI interface to a foreign function ............................................. 6-30 Creating a user exit interface to a foreign function ................................................. 6-34 Foreign function examples.............................................................................................. 6-37 Using ORA_FFI to call Windows help.................................................................... 6-37 Using ORA_FFI to open the File Open dialog on Windows................................... 6-40 Using ORA_FFI to call Unix(SUN) executables with a STDIN/STDOUT type interface 6-42

Using the Open API to Build and Modify Form Builder Applications ................................. 6-51 What is the Open API?.................................................................................................... 6-51 When should I use the Open API?........................................................................... 6-51 Open API header files.............................................................................................. 6-51 Open API properties ................................................................................................ 6-53 Open API functions and macros .............................................................................. 6-53 Guidelines for using the Open API ................................................................................. 6-54 Using the Open API ........................................................................................................ 6-54 Creating and modifying modules using the Open API ............................................ 6-54 Open API examples ........................................................................................................ 6-55 Modifying modules using the Open API ................................................................. 6-55 Creating modules using the Open API .................................................................... 6-58 Designing Applications to Run against ODBC Datasources ................................................. 6-69 What is the Oracle Open Client Adapter (OCA)?........................................................... 6-69 When should I use OCA? ........................................................................................ 6-69 OCA architecture ..................................................................................................... 6-69 Establishing an ODBC connection .......................................................................... 6-70 ODBC drivers .......................................................................................................... 6-70 OPENDB.PLL ......................................................................................................... 6-70 Open datasource guidelines ............................................................................................ 6-71 Configuring your application to run against an ODBC datasource ................................ 6-73

Glossary ............................................................................................................................... ......... Glossary-1 Index ..........................................................................................................................................Index-1

x

xi

xii

Send Us Your Comments
Forms Developer and Reports Developer: Guidelines for Building Applications Part No. A73073-02
Oracle Corporation welcomes your comments and suggestions on the quality and usefulness of this publication. Your input is an important part of the information used for revision. n
n
n
n
n

Did you find any errors?
Is the information clearly presented?
Do you need more information? If so, where?
Are the examples correct? Do you need more examples?
What features did you like most about this manual?

If you find any errors or have any other suggestions for improvement, please indicate the chapter, section, and page number (if available), and email them to [email protected]

xiii

xiv

Preface
The guidelines in this book are intended to help you fully exploit some of the powerful features available in both Forms Developer and Reports Developer. Whether you’ve been using these applications for years or are brand new to these products, the concepts and suggestions provided in this book should make it easier for you to complete such tasks as deploying an existing Form or Report application on the Web, designing an effective graphical user interface, or tracking and managing the disparate modules that make up a single application. How does this book fit in with the accompanying online help? While you can always rely on the online help to explain how to accomplish a given task or which options are available to you within a product, this book helps you determine why you’d want to choose one option over another and to understand the consequences of each decision. Use this book to help develop your strategy; use the online help for instructions on implementing that strategy. These guidelines represent the combined experience of our customers, marketing representatives, sales consultants, and the Oracle Applications group. You may want to use these guidelines as the basis for developing your own company standards, or use them simply to augment the standards you already have in place.

Intended Audience
This book is intended for anyone who uses either Forms Developer or Reports Developer. The needs of both novice and advanced users are addressed.

xv

Structure
This book contains the following chapters:
Chapter

Description

Chapter 1, “Managing Your Applica- Explains how to use the tools currently available tions”
with Forms Developer and Reports Developer to set
up and manage the development of applications.
Topics include:
n

n

Setting up and administering projects
Enabling team development under a variety of
networking scenarios

n

Source-controlling projects

n

Exporting projects between platforms

Exporting projects to different environments during
the application lifecycle

xvi

Chapter 2, “Designing Visually
Effective Applications”

Presents visual considerations for developing Forms
Developer and Reports Developer applications
using Form Builder, Report Builder, and Graphics
Builder.

Chapter 3, “Performance Suggestions”

Detailed suggestions for improving the performance of the your applications.

Chapter 4, “Designing Multilingual
Applications”

Explains how to design multilingual applications.

Chapter 5, “Designing Portable
Applications”

Discusses how to develop an application that can be
easily ported across Windows 95, Macintosh, and
UNIX. Also discusses developing for character
mode terminals.

Chapter

Description

Chapter 6, “Taking Advantage of
Open Architecture”

Discusses how to use Forms Developer and Reports
Developer to:
n

n

n

Create applications that include OLE objects
and ActiveX controls.
Customize your applications with foreign functions.
Build and modify applications using the Open
API.

Run applications against ODBC-compliant data
sources.

Notational Conventions
The following conventions are used in this book:
Convention

Meaning

boldface text

Used for emphasis. Also used for button names, labels,
and other user interface elements.

italicized text

Used to introduce new terms.

courier font

Used for path and file names.

COURIER CAPS

Used for:
n

File extensions (.PLL or .FMX)

n

Environment variables

n

SQL commands

n

Built-ins/package names

n

Executable names

xvii

xviii

1
Managing Your Applications
One of the most important aspects of application development is managing the modules that make up an application. Large applications can consist of literally thousands of modules, and millions of lines of code. In addition, modules which are important to the project as a whole but which are not compiled into the application itself (such as design specifications, test scripts, and documentation) must also be tracked and maintained. This chapter explains how to use Forms Developer and Reports Developer to help you manage the application development process.

Section

Description

Section 1.1, "The Software
Development Lifecycle: An
Overview"

Briefly covers the major milestones of application development and discusses Project Builder within that framework.

Section 1.2, "Managing
Project Documents During
Design and Development"

Discusses how to manage documents during development of an
application.

Section 1.3, "Managing
Project Documents During
the Test Phase"

Discusses how to ensure that your QA group tests the correct configuration of project documents during the test phase.

Section 1.4, "Managing
Project Documents During
the Release Phase"

Discusses how to ensure that an installable version of your
application is delivered to your customers.

Section 1.5, "Deploying
Completed Applications"

Discusses how to turn your own application into one that is
installable by the Oracle Installer.

Managing Your Applications

1-1

The Software Development Lifecycle: An Overview

1.1 The Software Development Lifecycle: An Overview
Application development typically occurs in four phases:
n

n

n

n

Design. The initial specification for the application is developed. This specification can be based on a variety of sources: customer feedback, input of project management or development team members, requests for enhancement, necessary bug fixes, or systems analysis.

Develop. Individual modules are created or modified, possibly incorporating a wide variety of languages, tools, or platforms.
Test. The modules are tested. This generally occurs in two stages: unit test and system test. Unit test is testing at a modular or functional level; for example, testing UI elements such as menus or buttons. System test tests the integration of major portions of the code; the backend with the UI, for example.

Deploy. The modules are packaged together in an installable form and delivered to customers.

Figure 1–1 The phases of the development lifecycle: input and deliverables

As the application grows in size and complexity, the four phases are repeated iteratively, and the amount of information produced (actual code, bug reports, enhancement requests, etc.) grows. Yet all input and deliverables for all phases must be tracked and maintained to ensure the integrity of the final deliverable: the application your customer installs.

1-2

Guidelines for Building Applications

The Software Development Lifecycle: An Overview

This chapter discusses how to use Forms Developer or Reports Developer to manage your application’s code base and maintain version integrity.

1.1.1 Using Project Builder to implement a management strategy In any development project, management tasks can be split roughly into two categories: n

n

Project management, which includes allocating the necessary equipment, budget, and person-hours of work necessary to complete the development of the application. Software configuration management, which includes assigning modules to developers, determining dependencies among modules, maintaining the code under development, and version control.

Project Builder, a component of both Forms Developer and Reports Developer, enables you to simplify your software configuration management tasks so you and your team can focus on your primary objectives: designing, coding, and testing applications.

1.1.2 About Project Builder
To help simplify your software management tasks, Project Builder provides the means for you to:
n

Associate modules with an application or component of an application.

n

Automate actions based on file types.

n

Create dependencies between modules and indicate how changes cascade; in other words, show which modules need to be recompiled based on changes to other modules.

n

Assign default connection strings to modules.

n

Designate which modules are to be included in the final install set.

n

n

Share projects and subprojects among team members and port them to different environments.
Invoke other tools from the Project Builder user interface.

These features are described in detail in Section 1.1.3, "Exploring Project Builder benefits". If you’re unfamiliar with Project Builder terminology, however, it’s a good idea to read through Section 1.1.2.1, "Understanding Project Builder terminology" before proceeding. This section defines some basic terms which provide the context for a discussion of Project Builder’s features.

Managing Your Applications

1-3

The Software Development Lifecycle: An Overview

1.1.2.1 Understanding Project Builder terminology
Project Builder is based upon the concepts of projects and subprojects: n

n

Projects are collections of pointers to the modules and files that are part of your application.
Subprojects are projects contained within other projects, providing a finer level of organizational granularity. Often the organization of files into subprojects mirrors the organization of files into subdirectories, but this is not a requirement.

In addition to projects and subprojects, these terms are also central to a solid understanding of Project Builder:
n

n

Types. A type is the basis of every item, and controls the actions that are available in Project Builder. Project Builder types recognize their associated file types primarily by default extension; for example, .TXT for text files. Project Builder predefines types for many commonly used files, such as forms documents (FMB), text files, and C source files. You can also use the Type Wizard to define types for other applications. Project items. The components that make up a project are known as items. An item is simply a description of a file that is part of a project. Each item is fully described in the associated Property Palette, which lists the item’s type, location in the file system, size, and when it was last modified. The actions and macros (see below) for the item are also defined.

It is important to remember that an item is not the file itself; rather, it is a description of the file. So, when you delete an item from a project, you are simply telling Project Builder that the file is no longer part of the project. The file itself is not deleted.

n

n

Actions. Actions are command strings that apply to files of a given type; for example, the Edit action for a text item may be the command string that invokes Notepad or WordPad.
Macros. Macros are variables you can use to modify actions. A macro may be either a constant or a simple expression (which, in turn, may contain other constants and/or expressions). For example, Project Builder inserts all the information you’ve specified for connecting to a database into the ORACONNECT macro, which is included in all commands that might require you to connect. The information in the macro is then inserted into the action so you can log on automatically.

Just as you might use environment variable in scripts or batch files to conveniently modify a script’s actions without editing the script itself, so you can use macros to customize actions without having to edit the action themselves. For example, you might define a macro to determine whether to compile your application in Debug mode or Optimized mode. In preparation for building the deployment version of the application,

1-4

Guidelines for Building Applications

The Software Development Lifecycle: An Overview

you would simply change one macro definition to switch off Debug, rather than having to find and modify every type whose Build command made use of the Debug flag. n

n

n

Global registry. The Global Registry contains the pre-defined Project Builder types. User registry. Each user has a user registry in which to define new types, redefine existing types, and modify or create actions or macros.

Project registry file. The project registry file contains information necessary to track a project, including pointers to modules contained within the project, default connection strings, and a pointer to the "home" directory for the project.

The Project Builder interface provides three tools for manipulating the items that make up a project:
n

n

n

The Project Navigator furnishes a familiar "navigator" or "explorer" style interface with which you can view the modules in your application. In addition, you can use Project Builder’s filtering capabilities to display only the modules you want to see. You can also launch editing tools directly from the Project Navigator. The Property Palette enables you to examine and modify the properties of selected items.

The Launcher, a secondary toolbar, provides another means of accessing development tools. You can even add buttons to the Launcher and associate them with your favorite third-party tools.

Managing Your Applications

1-5

The Software Development Lifecycle: An Overview

Figure 1–2 depicts all three of these tools.

Figure 1–2 The Project Builder user interface

1.1.2.2 How Project Builder affects existing development roles Certain roles must be filled to keep the application development effort going smoothly. Some, such as project manager, development manager, and team leader, are common roles within development groups and require no definition. However, with Project Builder one new role exists—that of project administrator.

A project administrator is charged with creating projects and making them available to developers. The project administrator maintains the Global Registry and modifies it as necessary, exporting the changes to the developers on the team. He or she may also export

1-6

Guidelines for Building Applications

The Software Development Lifecycle: An Overview

the project information to different environments, such as test environments, or other platforms for cross-platform development.
The work the project administrator does when managing projects may affect the roles of the following team members:
n

Developers

n

Source control administrator

n

Testers (QA)

n

Releaser

Of course, the precise duties of each team member vary from development group to development group. A team member may also take on more than one role; for example, a team leader may also be a project administrator, or a developer may be in charge of source control.

1.1.3 Exploring Project Builder benefits
Now that you are familiar with basic Project Builder terminology (see Section 1.1.2.1, "Understanding Project Builder terminology"), let’s examine the benefits Project Builder provides.

1.1.3.1 Associating modules with an application
You can associate all of the modules in an application with the application itself simply by adding the modules to the same project. This allows you to track a large application as a single entity, determine the dependencies between modules, and so on.

1.1.3.2 Automating actions based on file types
Project Builder ships with an extensive list of types, to which are assigned default actions (such as Open, Edit, or Print). When you select a module, then click the right mouse button, a pop-up menu displays the actions associated with that type. By default, the actions included in a type definition apply to all modules of that type in a project. You can also modify and add to these actions.

Actions are simply command strings. One benefit to defining actions with the actual command strings (besides simplicity, of course) is that an action can be associated conceptually with several different types. For example, editing a Word document requires a different tool than editing a text document, yet conceptually the two edits are very similar. Project Builder can associate an Edit command with many different types, using a different

Managing Your Applications

1-7

The Software Development Lifecycle: An Overview

command string for each. In this way, a single command executes an appropriate action no matter what type of module you’re working with.

1.1.3.3 Creating dependencies between modules
Knowing which modules depend on which other modules is necessary to determine when modules need to be recompiled as a result of a change. It’s also the key to managing the impact of changes; for example, if a library changes, which forms are now out-of-date? Project Builder includes the dependencies for module types in their type definitions. Thus, it can recognize dependencies between existing modules in a project. Since it can also track modifications to modules, it automatically recompiles changed modules and the modules dependent on them.

In fact, Project Builder can recognize dependencies that do not yet exist within the project and create markers for them. These markers are called implied items. For example, suppose your project contains an .FMB file, defined by the Project Builder type "Form Builder document." The "Form Builder executable," or .FMX file, may not exist—you may not have generated it yet. But Project Builder knows the existence of this .FMX file is implied by the existence of the .FMB file, and creates an implied item to mark it. To determine the existence of an implied item, Project Builder correlates the value of the property Deliverable Type for each defined type with the input items, or source, required for the Build From action for each defined type. In our example above, the Deliverable Type property for the "Form Builder document" type is defined as "Form Builder executable," or .FMX.The Build From action defined for a Form Builder executable is "Build From FMB". This means .FMB files are the input items for creating .FMX files, and, conversely, .FMX files are targets for .FMB source. The chain of implied items can consist of multiple files. For example, suppose you add a C source file to a library file. In this case, Project Builder adds modules of whatever other types are necessary to get a complete path of Build From actions from one file type to the other (like an object file).

While Project Builder detects dependencies only between compilable modules and their resultant executables, you can set dependencies manually by adding modules to a project below the item dependent on them. For example, if an .FMB is dependent on a PL/SQL library, you can add the .PLL to the project below the .FMB, and Project Builder will recognize the dependency.

1.1.3.4 Assigning default connection strings to modules
With Project Builder, you can define all of your most-used connection strings and store their definitions under the Connections node. You can then assign a connection to a module by dragging the connection from the Connections node and dropping it on the module. When

1-8

Guidelines for Building Applications

The Software Development Lifecycle: An Overview

you need to edit that module—for instance, a form—you can select the form in the Project Navigator and choose Edit from the pop-up menu. Project Builder automatically opens Form Builder and connects to your database for you.

1.1.3.5 Designating which modules are to be included in the final install set
Project Builder makes it easy to determine and track the modules that will be included in your final install package (for example, .EXE files, .DLL files, and .HLP files).To earmark a file for delivery, set the Deliver File property to Yes. When you’re ready to create an install package, you can use the Delivery Wizard to package all modules for which the Deliver File property is set to Yes into a single unit.

Note: You can set the Deliver File property for a type or for individual project items.

1.1.3.6 Sharing and porting project and subproject registry files Project Builder enables you to export the information about a project to other team members and to other platforms. Information about types, actions, macros, and project registry files—including all the customizations you’ve made—can be written to a text-based export file which you can then import to other environments and other platforms. This enables cross-platform development and testing.

1.1.3.7 Accessing other product components and third party tools You can access other tools from the Project Builder user interface through several means: n

n

n

Actions, which you access by selecting a module in the Project Navigator and clicking the right mouse button. A pop-up menu displays all the actions associated with the selected item; the actions listed invoke whatever tools are specified in the command strings. You can also double-click an item in the Project Navigator to invoke its default action.

The Build, Deliver, and source control actions, which launch whatever tools are associated with them.
The Launcher toolbar, which launches many components such as Form Builder, Report Builder, and Graphics Builder. You can also add your own buttons to the Launcher toolbar and associate them with your favorite third-party tools.

1.1.3.8 Using source control packages
Both Forms Developer and Reports Developer provide interfaces to these source control packages:

Managing Your Applications

1-9

Managing Project Documents During Design and Development

n

PVCS from Intersolv

n

Clearcase from PureAtria

n

Versions, the source control component of StarTeam, from StarBase

You can also use other source control tools by modifying the source control actions provided with Project Builder to point to them.
Since a variety of source control packages are available and can be used with Forms Developer and Reports Developer, specific instructions for source-controlling your projects are beyond the scope of this chapter.However, general guidelines will be provided where applicable.

1.2 Managing Project Documents During Design and
Development
Much has been written about the importance of design in the success of an application.Deliverables during the design phase can include design documents and specifications, meeting minutes, UI prototypes, results from customer surveys (if the application is new), user tests and lists of enhancement requests (if the application is to be revised)—all documents that can be added to and tracked within a project. This means the project administrator for the development effort should be identified early in the design process and begin creating the project immediately. (See Section 1.1.2.2, "How Project Builder affects existing development roles" for information on the role of the project administrator.) This section describes the role of the project administrator and the members of the development team in setting up Project Builder to manage a project during the design and development phase.Specifically, this section addresses:

n

Installing Project Builder

n

Creating a project

n

Working with projects and project documents

n

Managing projects and project documents across multiple platforms

Note: The steps involved in accomplishing simple tasks with Project Builder are in the Project Builder online help and are not included in this chapter.

1.2.1 Installing Project Builder
Project Builder is automatically installed to ORACLE_HOME\PJ10.Noteworthy files found in this directory are:

1-10

Guidelines for Building Applications

Managing Project Documents During Design and Development

n

Global Registry file (TYPESnn.UPD), where nn indicates the national language

n

Default user registry files (PJUSERnn.UPD), where nn indicates the national language

Perhaps the most important issue to address during Project Builder installation is how you want to make these various files available to team members. Section 1.2.1.1, "Installing the project and user registries" discusses your options.

1.2.1.1 Installing the project and user registries
Project Builder depends on native file sharing protocols for its security. This can make project files vulnerable to accidental changes, which is something to keep in mind as you decide how to configure the Global Registry and user registries. Table 1–1 lists the available options.

Table 1–1 Registry installation options
Option

Pros

Cons

Recommendation

Install Project Builder
with the Global Registry
on a shared network
drive and the user
registries on local
machines.

If your team is
networked, developers
can access a single
copy of the Global
Registry. This ensures
that all versions of the
Global Registry in use
are up-to-date.

If all team members
have write access to
the Global Registry, it
can be accidentally
overwritten.

To prevent the Global
Registry from being
accidentally
overwritten, install it
in a directory to which
only you have write
access.

Install Project Builder
with copies of the Global
Registry available to
each team member, in
addition to their own
user registries.

You can propagate
updates to the Global
Registry simply by
making a copy of the
changed file available
to your team members
(if they are on the
same platform).

The individual Global
Registries are not safe
from accidental
overwrites or
deletions.

Use Project Builder’s
Export facility to
propagate changed
registry files instead of
providing copies. A
more rigorous process
may help discourage a
casual attitude toward
registry files.

The types, actions,
projects, and project
modules are at risk for
conflicting
modifications.

Don’t choose this
option. But if you
must, have members of
your development
team edit only the
modules, not the
project itself.

Install Project Builder
with the Global Registry
and a single user
registry shared among
team members.

Managing Your Applications 1-11

Managing Project Documents During Design and Development

1.2.2 Creating a project
This section focuses on the creation of a single project for distribution to a team of developers. However, this may not be the best option for your group. If the application being developed is very large or if components are to be split up among team members, you may choose to create several separate, smaller projects, the contents of each determined by the responsibilities of each developer or group of developers.

If you decide to distribute a single project, note that Project Builder projects will accept pointers to modules that do not exist in the specified location. (You can determine whether a module exists by examining its information in the Property Palette; Time created/modified and File size (bytes) are blank if the module does not exist). This means you can distribute a single large project without requiring all team members to have all modules available. Creating a project is an ongoing task that requires the participation of both the project administrator as well as each member of the development team. This section describes the responsibilities unique to each role.

1.2.2.1 Creating a project: Project Administrator
As project administrator, your role goes beyond creating a project registry file and deciding what to include in the project. Whether you use the Project Wizard provided by Project Builder to create the project, or create a project registry file and manually edit the various properties, prior planning is highly recommended before you complete the following tasks: 1.

2.

3.

Create the project:
a.

Set up the project’s directory structure.

b.

Add modules.

c.

Establish default actions, macros, and connection strings.

d.

Set necessary dependencies manually.

Work with the source control administrator to set up a concurrent source control project. a.

Define new types and edit existing ones.

b.

Customize actions and macros.

c.

Create reusable connections.

Make the project available to team members.

The next few topics provide recommendations for completing each of these tasks. 1.2.2.1.1 Step 1: Creating the project

1-12

Guidelines for Building Applications

Managing Project Documents During Design and Development

The Project Wizard provides an easy-to-use interface for creating a project. You can also create a new project without the Project Wizard (using the New Project tool on the toolbar) and set project properties in the Property Palette.

At its simplest, a new project is a default project registry file primed with information about the Global Registry, but little else. Project Builder needs a bit more information before it can keep track of your project, as discussed in the next few topics. Step 1a: Set up the project’s directory structure

The directory structure of a project can have far-reaching consequences. For example, suppose a project contains modules that are located in a directory that’s not a child of the project directory. Now suppose you create actions that search for and modify project modules. How will you find the "orphan" modules? Create alternate actions with hardcoded paths? Not portable. Search from the root? Not efficient.

Recommendations:
n

n

Place modules in the project directory or in a directory that’s a child of the project directory (a good choice when adding subprojects).
As much as possible, organize your projects and subprojects so that they mirror your actual directory structure.

The standard methods for adding modules to a project are the Add Files to Project and Add Directory dialogs. Note that the dialogs always insert the full path unless the module you want to add is in the project directory; then a relative path name is used. Step 1b: Add modules

Once you have planned the directory structure, you can add modules to the project. Recommendation: Use subprojects whenever possible to help organize your project. But don’t simply group together all forms or all reports. Group the modules into components; for example, you might create a subproject for all the modules in a large form, including .FMB files, .FMX files, PL/SQL libraries, menus, bitmaps, icons, etc. This enables you to more easily create some necessary dependencies not detected by Project Builder. Step 1c: Establish default actions, macros, and connection strings This step involves making site-specific edits to actions and macros; for example, changing build actions to use the compilers and compiler options that are standard at your site. If you have not already done so, you can also create connection strings for commonly used databases containing test data or necessary tables.

Step 1d: Set necessary dependencies manually

Managing Your Applications 1-13

Managing Project Documents During Design and Development

Project Builder can recognize some dependencies between modules (it knows that .FMX files are built from .FMB files, which are built from .FMT files), but only the dependencies it can deduce by cross-referencing the Deliverable Type and the Build From actions.

1-14

Guidelines for Building Applications

Managing Project Documents During Design and Development

Other dependencies may exist as well: dependencies on PL/SQL libraries, menus, icons, and so on. You can tell Project Builder about these dependencies by creating entries for the modules on which a module is dependent below the item for the dependent module, as shown in Figure 1–3, "Manually added dependencies".

Figure 1–3 Manually added dependencies

This figure illustrates NAVWIZ.FMB’s dependency upon WIZARD.PLL, NAVIGATE.PLL, and NAVWIZ.MMB.
1.2.2.1.2 Step 2: Work with the source control administrator After you create your project, you’re ready to introduce a source control package. Many third-party source control packages also implement the concept of projects. Recommendation: Work with your source control administrator to set up a source control project that mirrors your development project in Project Builder. When setting up a project to source control a complex application, remember to include the non-obvious modules as well. For example, when checking in a form, don’t forget menus, PL/SQL libraries, user exits, icons, or special fonts you use. Applications running on Windows may use OCX or ActiveX controls that should be source-controlled as well.

Managing Your Applications 1-15

Managing Project Documents During Design and Development

1.2.2.1.3 Step 3: Make the project available to team members Once you’ve done the preliminary work of creating the project and establishing source control, it’s a good idea to export all project information to a project export file and notify team members of its location. They can then import the project. It is possible to notify team members of the location of the actual project registry file, but remember that Project Builder uses your operating system’s own security features to protect your project modules from being deleted or overwritten. Simple deletes and overwrites are possible. To maintain the integrity of your projects, follow Project Builder’s own process for updating projects, and always import and export modifications to the project instead of simply distributing changed registry files.

When you notify your team members of the location of the project export file, you should also notify them of the directory structure you’ve set up so they can mirror that structure on their development machines. The easiest course for setting up the project is to have all team members map the project location to the same project directory on their machines, since mappings to different project locations would require separate copies of the project registry file with different values for the Project Location: Q:\myproj, R:\, etc. Team members can then check out the modules they have been assigned.

1.2.2.2 Creating a project: Team members
After the project administrator has completed the tasks described in Section 1.2.2.1, "Creating a project: Project Administrator", project team members can fine-tune the work. If you are a project team member, you can expect to:

1.

Set up your directory structure and import the project

2.

Customize your user registry

3.

a.

Define new types and edit existing ones

b.

Customize actions and macros

c.

Create re-usable connections

Check out your assigned modules

1.2.2.2.1 Step 1: Set up your directory structure and import the project When your project administrator informs you that the project is available, it’s time to import the project information and set up your working directories with the modules you’ve been assigned.

Recommendation: File management is easier if you set up your directory structure to mirror what your project administrator has already created for the project.

1-16

Guidelines for Building Applications

Managing Project Documents During Design and Development

1.2.2.2.2 Step 2: Customize your user registry
One of the first things to do when setting up a project is to customize your user registry. Step 2a: Define new types and edit existing ones
If you want to add modules to your project that are of a type not represented in the Global Registry, you can use the Type Wizard to define your own type in your user registry and assign actions, macros, and so on to it.

In addition, you may want to override a default command or macro for a particular type in the Global Registry. An easy way to accomplish this is to copy the type in the Global Registry, paste it into your user registry, and edit it. Now, all modules of that type in your project will inherit the modifications from the type in the user registry. Recommendation: Notify your project administrator when you modify a global type by copying it into your user registry and editing it. Such a modification might be useful to the whole team.

Step 2b: Customize actions and macros
While you can customize the actions and macros associated with the types you add to your user registry, it’s important to remember that you can modify actions and macros at other points in the Project Builder hierarchy as well. Where you edit the item depends on the extent of the influence you want your change to have.

The following table lists all the locations you might find an action or macro, the scope of that action or macro, and what can override it.
An action or macro
assigned to:
Affects:

Unless overridden by:

Global Registry

All items of type(s) to which it is
assigned in all user registries and
projects beneath the Global
Registry.

Actions or macros in a user registry,
project, subproject, or item.

User registry

All items of type(s) to which it is
assigned in all projects beneath the
user registry.

Actions or macros in a project,
subproject, or item.

A project

All items of type(s) to which it is
assigned in the project.

Actions or macros in a subproject or
item.

A subproject

All items of type(s) to which it is
assigned in the subproject.

Actions or macros in an item.

An item

Itself only.

Cannot be overridden.

Managing Your Applications 1-17

Managing Project Documents During Design and Development

Step 2c: Create reusable connections
If you have your own set of tables with data you’ve created for testing purposes, you can add your own connections to the list provided by the project administrator. Once you’ve created the connections, you can assign a connection to a module by selecting the connection’s item in the Project Navigator, dragging it to the project file entries, and dropping it on the item for the module you’ve chosen. Now, when you select an action that opens a tool requiring a database connection, Project Builder logs on for you.

1.2.2.2.3 Step 3: Check out your assigned modules
Once you have your directory structure in place and the project imported, you can populate your workspace with the modules you’ve been assigned. The source control commands Check In, Check Out, and Source Control Options, accessible from the File’Administration menu, are associated with actions defined for each type. This means you can modify the actions, if necessary, to affect the results of the commands—though this is not recommended for source control.

1.2.3 Working with projects and project documents
When the project enters the development phase, maintaining the integrity of the project becomes increasingly important.
Recommendation: Only the project administrator should make changes to the project that affects multiple team members (such as modifying the Global Registry or adding new subprojects containing new modules).

1-18

Guidelines for Building Applications

Managing Project Documents During Design and Development

1.2.3.1 Working with projects: Project Administrator
While the application is in development, as project administrator your role is to maintain and support the project. In addition, you might be in charge of managing development deliverables, or working with a development manager to do so. You might need to: n

Add new modules and dependencies

n

Export modifications to the project registry file

n

Apply version labels

1.2.3.1.1 Adding new modules and dependencies
Sometimes new modules must be added to a project after its initial creation, and dependencies added manually. The process for doing so is the same as when creating the initial project. For more information, see Section 1.2.2.1.1, "Step 1: Creating the project". 1.2.3.1.2 Exporting modifications to the project registry file Once you’ve added the new modules and made the necessary changes, you can export the changes and make them available to members of your team. The process for doing so is the same as when exporting the initial project. For more information, see Section 1.2.2.1.1, "Step 1: Creating the project".

1.2.3.1.3 Applying version labels
Although you can try to keep various revisions synchronized with each other (for example, through a nightly check-in), often development on one module will be completed while another needs bugs fixed or headers changed. Synchronous revisions are generally impractical.

A better method is to synchronize versions by applying a symbolic version label to the group of revisions that mark the achievement of a significant milestone. Most major source control tools enable you to apply a symbolic label to a source control project.

Managing Your Applications 1-19

Managing Project Documents During Design and Development

1.2.3.2 Working with project documents: Team members
When your project is set up and your modules have been assigned, you can use Project Builder to:
n

Edit modules

n

Add modules and dependencies manually

n

Build your project

n

Check modules in and out

1.2.3.2.1 Editing modules
Recommendation: The most efficient way to use Project Builder to edit modules is to customize the actions associated with the types of modules you’ll be editing so they invoke the tools you want to use with the options you need. In addition, be sure to associate a connection string with either the individual module or the project. Then you can drag the connection from its location in your user registry and drop it on the module or project item. Once your modules are prepared in this fashion, choosing a pop-up menu item or double-clicking on a project item opens your module in the correct application. If necessary, you’ll already be logged on.

You can also use the Launcher to access development tools. The Launcher is shipped with toolbar buttons already set for the Forms Developer or Reports Developer tools, but you can add a third-party tool by creating a button and associating it with an executable. Note: If you invoke a tool via the Launcher and then open a module, the tool will not be aware of any associated connection strings. You will need to log on to the database manually.

1.2.3.2.2 Adding modules and dependencies manually
See Section 1.2.2.1.1, "Step 1: Creating the project", or contact your project administrator. 1.2.3.2.3 Building your project
The Build commands—Build Selection, Build Incremental, and Build All—are available from the Project menu. They are also associated with an action—in this case, the Build From action.
This means you can select a single command for any different module type and the module will be compiled according to the definition of the Build From action—not for that particular type, but for the target you actually want to build.

1-20

Guidelines for Building Applications

Managing Project Documents During Design and Development

For example, the Build From action for an .FMX file invokes the Form Generator and creates the .FMX file from the corresponding .FMB.What the Build command compiles is the .FMB, but how it compiles the .FMB is determined by the action associated with the .FMX that results.

You can modify the results of the Build commands by modifying the definition of the Build From action for the corresponding target.
Choose Build Selection to compile selected modules, or force a compile of all compilable modules by choosing Build All. Because Project Builder can detect when modules are out-of-date and need to be recompiled, you can compile only out-of-date modules by selecting the item for the project containing them, then choosing Build Incremental. Note: The Build commands are also available from the pop-up menu. 1.2.3.2.4 Checking modules in and out

If modules need conversion for source control (for instance, the source control only works on text and your modules are binary), you can edit the Check file into RCS action to automate the conversion to text before check-in.

You can also edit the Check file out of RCS action in a similar fashion to convert the text-based source controlled version of the module back to binary.

1.2.4 Managing projects and project documents across multiple platforms
Many applications today run on multiple platforms, with development taking place on a variety of platforms as well. Chapter 5, "Designing Portable Applications" can help you ensure that the application underlying your project is portable. To ensure that your project is portable, too, Project Builder supports development on several major platforms. To do so, it must ship with a Global Registry that reflects the platform; in other words, the types defined must be found on that platform, and the actions and macros must be written according to the syntax rules of that platform. This means the Global Registry, and, by extension, all user registries and project registry files, are not portable. However, you can export information about a project to a text file and import the text file to another platform, as discussed in Section 1.1.3.6, "Sharing and porting project and subproject registry files".

Managing Your Applications 1-21

Managing Project Documents During Design and Development

1.2.4.1 Managing projects across multiple platforms: Project Administrator
If you are the administrator of a project undergoing development on multiple platforms, you can expect to:
n

Branch off a source control project to contain the code for the platform

n

Export projects and project information to alternate platforms

1.2.4.1.1 Branching off a source control project to contain the code for the platform
Work with your source control administrator to create a branching source control project that enables your team members to isolate the code for the new platform. 1.2.4.1.2 Exporting projects and project information to alternate platforms Creating an export file for the purpose of distributing a project to another platform is no different from creating an export file to distribute to team members on the same platform. The export file created by Project Builder is a text file, easily transferred to the alternate platform.

1.2.4.2 Managing project documents across multiple platforms: Team members
The role of a team member working on development on an alternate or secondary platform is actually quite similar to the role of a team member developing on the base platform. However, there is one major difference: when you receive a project already created on a different platform, you can expect to:

n

Revise customized actions and macros to conform to platform requirements

1.2.4.2.1 Revising customized actions and macros to conform to platform requirements
Equivalent versions of pre-defined actions and macros, where they exist, are provided by Project Builder for all supported platforms. However, if some actions have been customized or new actions created, you will either need to edit the actions to make them work on the new platform or create equivalent new actions.

1-22

Guidelines for Building Applications

Managing Project Documents During the Test Phase

1.3 Managing Project Documents During the Test Phase
Though the test phase is often thought of as separate and distinct from the development effort—first you develop, then you test—testing is a concurrent process that provides valuable information for the development team.

Managing Your Applications 1-23

Managing Project Documents During the Test Phase

There are at least three options for integrating Project Builder into the test phase: n

n

n

Your testers do not install Project Builder. You use Project Builder functionality to compile and source-control the modules to be tested and hand them off to the testers, whose process remains unchanged.

The testers import the same project or projects that the developers use. You create a project based on the development project but customized for the testers (for example, it does not include support documents, specs, or source), who import it.

Recommendation: A combination of the second and third options works best. Associating your application with a project can be useful during the testing phase, as well. You can create actions to automatically run test scripts or add script types and make them dependent on the modules they are to test.

During unit test, testers can use the same project or projects as the developers, if the project is organized by functional units, or separate projects have been created for functional units.The project or projects can also be exported, so unit test can take place in a variety of environments and on a variety of platforms.

System test might require a new, stripped-down version of the development projects that includes only the modules being tested, especially if you need to concatenate several smaller projects.

1.3.1 On the development side
The goal of the development group in this phase of the process is to provide the test group with the modules to be tested in as smooth a manner as possible.

1.3.1.1 The test phase: Project Administrator
The tasks involved in creating and exporting a project for testing purposes are the same as the tasks required when creating and exporting a project to a development team: n

Create a test project based on deliverable modules (optional)

n

Create the test version

n

Export the project to different test environments

1.3.2 On the test side
Although members of the test team generally are not responsible for any modifications to the modules of an application, they do have input (modules to test) and deliverables (fully-tested modules and lists of bugs uncovered during the testing phase).

1-24

Guidelines for Building Applications

Managing Project Documents During the Release Phase

Project Builder can help the test team keep track of its input and deliverables in the same way it helps development team members.Testers can add scripts and logs to a project, modify actions to include debugging options, and add subprojects containing testing information.

1.3.2.1 The test phase: Testers
If you have decided to use Project Builder to help test your application, you’ll need to do some preparatory work that is very similar to that of the developers when they are first setting up their projects.You may need to:

n

Import the test project and set up the testing environment

n

Add test scripts and test data to the project

n

Modify actions and macros to facilitate testing

1.3.2.1.1 Importing the test project and setting up the testing environment The process of importing a test project and setting up a testing environment is the same as the process for importing a project and setting up the environment for development.See Section 1.2.2, "Creating a project", for more information.

1.3.2.1.2 Adding test scripts and test data to the project
You may need to add some items, such as test scripts, to the project.In addition, you may need to add connection strings to database accounts containing test data. Remember that you can automate the running of test scripts just as you can automate actions associated with the modules in your application.

1.3.2.1.3 Modifying actions and macros to facilitate testing If actions specifying "run with debugging" have not already been provided, you can either modify existing actions to include a debug flag, or create new actions.

1.4 Managing Project Documents...

Read more

Keywords

-00942 -02 -1 -10 -10043 -11 -12 -13 -14 -15 -16 -17 -18 -19 -1997 -2 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -3 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -4 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -5 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -6 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -7 -70 -71 -72 -73 -74 -8 -9 -97 -98 /7 /oracle_home/myapp /package /password 0 0.1 0.5 00 08/05/94 0x0001 0x0002 0x0003 0x0004 0x0005 0x0008 0x0009 0x0101 0x0102 0x0105 0x0201 0x0203 1 1.00 1.1 1.1.1 1.1.2 1.1.2.1 1.1.2.2 1.1.3 1.1.3.1 1.1.3.2 1.1.3.3 1.1.3.4 1.1.3.5 1.1.3.6 1.1.3.7 1.1.3.8 1.2 1.2.1 1.2.1.1 1.2.2 1.2.2.1 1.2.2.1.1 1.2.2.1.2 1.2.2.1.3 1.2.2.2 1.2.2.2.1 1.2.2.2.2 1.2.2.2.3 1.2.3 1.2.3.1 1.2.3.1.1 1.2.3.1.2 1.2.3.1.3 1.2.3.2 1.2.3.2.1 1.2.3.2.2 1.2.3.2.3 1.2.3.2.4 1.2.4 1.2.4.1 1.2.4.1.1 1.2.4.1.2 1.2.4.2 1.2.4.2.1 1.3 1.3.1 1.3.1.1 1.3.2 1.3.2.1 1.3.2.1.1 1.3.2.1.2 1.3.2.1.3 1.4 1.4.1 1.4.1.1 1.4.1.1.1 1.5 1.5.1 1.5.1.1 1.5.1.2 1.5.1.2.1 1.5.1.2.2 1.5.1.2.3 1.5.1.2.4 1.5.1.2.5 1.5.1.3 1.5.2 1.5.2.1 1.6 10 100 1001 1002 102 1024 11 11/02/94 11265 12 12.0 123455432 128 13 14 15 151 16 160 1623 17 17.24 173 1987 1997 1999 1a 1b 1c 1d 2 2.0 2.1 2.1.1 2.1.2 2.1.3 2.1.3.1 2.1.3.2 2.1.3.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.1.2 2.2.1.3 2.2.2 2.2.2.1 2.2.2.10 2.2.2.2 2.2.2.3 2.2.2.4 2.2.2.5 2.2.2.5.1 2.2.2.6 2.2.2.7 2.2.2.8 2.2.2.8.1 2.2.2.9 2.2.2.9.1 2.2.2.9.2 2.2.4 2.3 2.3.1 2.3.2 2.3.3 2.3.4 2.3.4.1 2.3.4.2 2.3.4.3 2.3.4.4 2.3.4.5 2.3.4.6 2.4 2.4.0.7 20 20.10.1998 2000 2048 24.00 240 255 256 257 261 28 29.00 2a 2b 2c 3 3.1 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.3 3.3.1 3.3.1.1 3.3.1.1.1 3.3.1.2 3.3.1.2.1 3.3.1.2.2 3.3.2 3.4 3.4.1 3.4.1.1 3.4.1.1.1 3.4.1.1.2 3.4.1.2 3.4.2 3.4.2.1 3.4.2.2 3.4.2.3 3.4.2.4 3.4.2.4.1 3.4.2.4.2 3.4.2.4.3 3.4.2.5 3.4.2.6 3.4.2.7 3.4.3 3.4.3.1 3.4.3.10 3.4.3.2 3.4.3.2.1 3.4.3.2.2 3.4.3.2.3 3.4.3.2.4 3.4.3.3 3.4.3.4 3.4.3.5 3.4.3.6 3.4.3.7 3.4.3.8 3.4.3.9 3.4.4 3.4.4.1 3.4.4.10 3.4.4.11 3.4.4.12 3.4.4.13 3.4.4.14 3.4.4.15 3.4.4.16 3.4.4.17 3.4.4.18 3.4.4.19 3.4.4.2 3.4.4.20 3.4.4.21 3.4.4.22 3.4.4.23 3.4.4.24 3.4.4.25 3.4.4.3 3.4.4.4 3.4.4.5 3.4.4.6 3.4.4.7 3.4.4.8 3.4.4.9 3.4.5 3.4.5.1 3.4.5.2 3.4.5.3 3.4.5.4 3.4.5.5 3.4.5.6 3.4.5.7 3.5 3.5.0.8 3.5.0.9 3.6 3.6.1 3.6.1.1 3.6.1.10 3.6.1.11 3.6.1.12 3.6.1.13 3.6.1.14 3.6.1.2 3.6.1.3 3.6.1.4 3.6.1.5 3.6.1.6 3.6.1.7 3.6.1.8 3.6.1.9 3.6.2 3.6.3 3.6.4 30 32 34 352 37 38 3gl 4 4.0 4.00 4.1 4.1.1 4.1.1.1 4.1.1.2 4.1.2 4.1.2.1 4.1.2.2 4.1.3 4.1.4 4.1.4.1 4.1.4.2 4.1.5 4.1.5.1 4.1.5.2 4.1.5.3 4.2 4.2.1 4.2.1.1 4.2.1.2 4.2.1.3 4.2.2 4.2.2.1 4.2.2.2 4.2.3 4.2.3.1 4.2.3.2 4.2.3.3 4.2.3.4 4.3 4.3.1 4.3.1.1 4.3.1.2 4.3.2 4.3.2.1 4.3.2.2 4.3.3 4.3.4 40 403 43 493 5 5.00 5.1 5.2 5.2.1 5.2.1.1 5.2.1.2 5.2.1.3 5.2.1.4 5.2.1.4.1 5.2.1.4.2 5.2.1.5 5.2.1.6 5.2.1.7 5.2.1.8 5.2.1.9 5.2.2 5.2.2.1 5.2.3 5.2.3.1 5.2.3.2 5.2.3.3 5.2.3.4 5.2.4 5.3 5.3.1 5.3.1.1 5.4 50 500 51 512 52.227 538 6 6.0 6.1 6.1.1 6.1.1.1 6.1.1.10 6.1.1.11 6.1.1.11.1 6.1.1.11.2 6.1.1.11.3 6.1.1.2 6.1.1.3 6.1.1.4 6.1.1.5 6.1.1.6 6.1.1.7 6.1.1.7.1 6.1.1.7.2 6.1.1.7.3 6.1.1.7.4 6.1.1.8 6.1.1.9 6.1.2 6.1.2.1 6.1.2.2 6.1.2.3 6.1.2.4 6.1.2.5 6.1.2.5.1 6.1.2.5.2 6.1.2.6 6.1.2.7 6.1.2.8 6.1.2.8.1 6.1.2.8.2 6.1.2.8.3 6.2 6.2.1 6.2.1.1 6.2.1.2 6.2.1.2.1 6.2.1.2.2 6.2.1.2.3 6.2.2 6.2.2.1 6.2.2.2 6.2.2.3 6.2.3 6.2.4 6.2.4.1 6.2.4.2 6.2.4.2.1 6.2.5 6.2.5.1 6.2.5.2 6.2.5.3 6.3 6.3.1 6.3.1.1 6.3.1.2 6.3.1.3 6.3.1.4 6.3.2 6.3.3 6.3.3.1 6.3.4 6.3.4.1 6.3.4.2 6.4 6.4.1 6.4.1.1 6.4.1.2 6.4.1.3 6.4.1.4 6.4.1.5 6.4.2 6.4.3 6i 7 7.1 70 77 79 8 8.0.4 80 80th 80x24 81st 82.75 83 8859/1 9 91.73 94065 95 95.when 96 a.a a.d a1 a73073 abandon abbrevi abc abil abl absolut abund abz acceler accept access accessor accident accommod accompani accomplish accord account accur accusatori accustom achiev acknowledg acount acquisit acrobat across act action activ activesheet.cells activex activex/ole actual actxitem ad ada adapt add add-on addcolumn addit address adequ adher adjac adjust administ administr adob advanc advantag advers advis aesthet affect affirm affirmative/negative afford african afterward aggreg agreement ahead aid aim alert algorithm alia alias align alloc allow almost alon along alpha alpha-numer alphabet alreadi also alter altern although altogeth alway america america.ar8mswin1256 american among amount analysi analyz ancestor anchor and/or angl anim anoth answer anticip anyon anyth anyway anywher ap api appear append appl applet appli applic applica application-wid application.deliverables appoint approach appropri approv appstds.olb arab arabic_territory.charset arays arbitrari architectur archiv area area.from arg arglist argument arial aris around arrang array arrays arrow ascii asian ask aspect assessor asset assign assist associ assum assur asterisk atop attach attempt attent attitud attr attr.d2fcmsh_d2fctxa attr.d2fihnd_d2fctxa attr.d2fphnd_d2fctxa attribut audienc audit augment author auto autocr autom automat auxiliari avail averag aviat avoid await awar away axi b b.c back backcolor backend background backup bad balanc bandwidth bar base basi basic batch bc bcd becom begin behalf behav behavior belong beneath benefici benefit besid best bet bethk better bevel beyond bias bidirect big bin binari bind bit bit-map bitmap black blank blind blk blk.itm blob block block-level block-rel block1.image3 block1.item1 blockmod blue bmp board bodi boilerpl bold boldfac boo boo-boo book bookstor bool boolean border bottleneck bottom bound boundari box branch brand break briefli bright bring broad broader broker browser browser-sid btwn budget buf buffer buflen bufsiz bug build buildabl builder built built-in bullet bulletin bundl burden busi button buy buy-in bw bypass byte c c/c c999g999d99 ca caccamo cach calcul calendar call cancel candid cannot canva canvas canvas-rel canvas-view canvass cap capabl capac capit care carri cartridg cascad case casual categor categori caus caution cd cds cell cellforegroundcolor centimet central cercat certain cgi chain chang chapter chapter.however char charact character-mod character-on characterist charg charmod charmode.olb charmode.pll charset chart che check check-in checkbox checker checkmap chemic chemical-rel chemist chevron child children chines choic choos chosen chr chu circl circumst citi cjk class classic claus clean clear clearcas clerk click client client-machin client-sid client/server client/server-specific clip clipboard clock close closer closest cluster cmd cmdshow cmode cnv cobol code col col1 collat collect color color-identif column combin combo combo-box come comfort comma command comment commerci commiss commit common common60 communic comp compani company-issu company-wid compar comparison compat compil compilefil complet complex compliant complic compon component.in component.it component.set components.you compos compris comput computer con concaten concept conceptu concern concis concurr cond condit conduct configur conflict conform confus connect connot consequ consid consider consist consol conson constant constraint construct consult consum contact contain content context context-sensit contextpopup contextu contextuallayout contextualshap continu contract contrast contribut control control-specif conveni convent convers convert convey cool coordin cope copi copyright core corner corpor correct correl correspond cost cost-bas could count counter countri courier cours cover cpp cpu creat created/modified creation creation/access credit critic cross cross-platform cross-product cross-refer cross-referenc cross-tabul crucial ctrl.interface ctx ctype cue cultur cumbersom cumul cur currenc current cursor custom customers.in cut cyan cycl d d2falt d2faltg d2faltis d2falts d2fblk d2fblkcr d2fblkg d2fblkis d2fblks d2fc d2fcnv d2fcnvcr d2fcnvs d2fctx d2fctx_attr.mask d2fctxa d2fctxcn d2fctxcr d2fctxde d2ffmd d2ffmdcf d2ffmdcr d2ffmdg d2ffmdld d2ffmdsv d2fitm d2fitmcr d2fitmg d2fitmis d2fitms d2fitmst d2fmmdsv d2fob d2folbsv d2fp d2frdb d2frdbis d2frdbs d2frel d2frelcr d2frels d2frelup d2fs d2fstatus d2ftrg d2ftrgg d2ftrgis d2ftrgs d2fwin d2fwincr [email protected] d2kwutil.pll daemon daili damag danger dark darkblu darkcyan darkgray darkgreen darkmagenta darkr darkyellow dat data data-intens databas database.owner.tablename datasourc datasource-specif datastorageord datatyp date dati day day-jan1 db dbms dbname dd dd-mm-yyyy dd-mon-yy dd.mm.yyyy ddl de de-instal de-norm deactiv deal dealloc debit debug dec decid decim decis declar decompil decreas decrypt deduc deep default defaultstr defer defin definit degrad dei deinstal deinstallation.it del delay delet delimit deliv deliver deliveri demand demo demonstr deni denomin denorm denot depart department-employe depend depends.to depict deploy depriv dept deptno dere deriv describ descript descriptor design design-tim desir desktop destin destroy destyp detail detect determin detract dev2kapp dev2kapp.dei dev2kapp.ins dev2kapp.map dev2kapp.vrf devdem60.map develop developer-specif development.see devic device-independ devot di diagon diagram dialect dialog didn differ differenti difficult digit dim dimens diminish dir direct directori directory.file disabl disadvantag disappear disassembl disclaim disclosur discourag discret discuss disk diskett dispar dispatch display display-on disregard dist distanc distinct distinguish distribut divers divid dll dlls dm dm29.025 dmda dml dname doc20 doc60 dock document dod doe doesn domain done dos dot dots-per-inch doubl double-click double-i down download downsid dpi draft drag drag-and-drop dramat draw drawback drawn dress drill drill-down drive driven driver drop ds dsload due dummi dump duplic durat duti dwfcnvs dword dy dynam e e.g earli earlier earmark eas easi easier easiest easili eastern easy-to-us ebcdic edg edit editor effect effici effort either elaps elast electron element elimin ellips ellipsi els elsewher elsif email emb embed emp emp.hiredate empdept emphasi emphat employ employe empno empti emul enabl enable/disable enam encapsul enclos encod encompass encount encourag encrypt end end-us endif enforc engin english enhanc enjoy enough ensur enter enterpris entir entireti entiti entri env environ envis equal equip equival eras error escap esist especi essenti esser establish estat etc eurocentr european evalu even event event4294966696 eventu everi everyon everyth everywher evolv exact examin exampl exceed excel excel_worksheet.ole excelmacrosheet excelworksheet except excess exchang exclud exclus exe exec execut exercis exhaust exist exit exitr expand expand-on expandnondefaultbutton expans expect experi experienc explain explan explicit exploit explor export expos express expressli extend extens extent extern extra extract extrem eye f f1 face facil facilit fact factor fail fail-saf failur fair fall fals familiar fan far far-reach fashion fast faster fastest fault favorit feasibl featur feder fee feedback feel fetch fetch-ahead fewer ff29.025 ffi ffi.c_char_ptr ffi.c_dvoid_ptr ffi.c_int ffi.c_long ffi.c_void ffi.funchandletype ffi.register fget fh fichier field field-level field.not fifth figur file file.another filenam filestr filesystem fill filter final financi find fine fine-tun finer finish fire firewal first fit five fix fixedsi flag flash fledg flexibl flow flpath fmb fmb.what fmbs fmt fmx fmx.the focus focus-in follow font forc forcefil foreground foreign forget form form.cursor_item.ocx.spindial.spindialctrl.1.needlposition format forms-specif forms-support forms4w.dispatch forms60 forms_ole.activate forms_ole.get forms_ole.server formsapp formsapp.dei formsapp.ins formsapp.map formsapp.vrf formsnn formul formula forth fortran fortun forward forwin95 found foundat four four-part fput fragment frame frame-by-fram framework franc france.we8iso8859p1 frank frederick free freedom french frequenc frequent frequently-us frm frustrat ftp full full-fledg full-tabl fulli fully-test funchandl function fundament furnish furthermor futur g gain gantt gap gateway gather general generat generic german germany.utf8 germany.we8iso8859p1 get getcel getcellbycolrow getprivateprofilestr getvar give given global glossari glossaryterm go goal goe good govern grand granular graph graphic graphics-specif grasp gray gray-scal great greater greatest green grid ground group grow gs gtm guarante gui gui-bas guid guidelin h h1 halt hand hand-off hand-tun handbook handl happi hard hard-cod hardcod hardcopi hardwar hatch haven head head1 header heavili hebrew height help helpfil helponhelp helvetica henc heterogen heurist hgt hidden hide hide/show hierarch hierarchi high high-level high-low higher highest highlight hinstanc hint histor hit hlp hnd hold home home/bin horizont host hot hour hous howev hp hp-ux hprevinst htm html http humor hundr hwnd hyperlink hypertext i.e i/o iapxtb icd icon iconifi id idea ideal ident identif identifi if60.hlp ifd2f60.lib ifndef ifr60.lib ifxtb60.def ifxtb60.dll ignor iii illustr imag immedi impact imper impiegato implement impli implic implicit import impos imposs impract impress improv in in-memori in-plac inadvert inch includ inclus incorpor incorrect increas increment inde independ index indic individu industri industry-standard ineffici inesistent inexistant inexperienc influenc inform informix infrequ inher inherit init init.ora initcap initi inordin input input/output insert insert/update/delete inset insid inside-out insignific insinu instal install-tim installation/packaging installed.in installer.it installer.setup.exe installer.you installr instanc instanti instead instruct int intact integ integr intellectu intend intens intent inter inter-form interact interchang interfac intermedi intern internet interpret interrelationship interrupt intersolv interv interview intranet introduc introduct introductori invalid invalu invest investig invoc invoic invok invoked.appears involv io ip irregular irrelev isn iso iso8859 isol issu issubclass ital italian italic item item-rel iter itm itti iv iw ix iy iyi iyyy j jan1 januari japan japanes japanese.ja16sjis japanese.utf8 jar java jeffrey job john join journal jpg jump june just-in-tim justif justifi k kanji kbrd keep ken kept key key-help keyboard keyword kilobyt kind kit knob know knowledg known korean krnl386 krnl386.exe l l999g999d99 label lack lan lang languag language-depend language-independ language-specif language_territory.charset laptop larg large-scal larger largest last later latest latin latter launch launcher law lay layer layout lead leader least leav left left-align left-to-right legend legibl len length lengthen lengthi less less-effici let letter level leverag lh liabil libc libc.lib librari licens license life lifecycl lifetim light light-weight like likelihood likewis limit line link list liter littl live ll lo load load-upon-demand loadabl lob loc local local-languag locat lock log logic logo logon long longchunk longer look look-and-feel lookup loop lose loss lost lot lov low low-level lower lowest lpcstr lpstr lpszcommandlin ls lst lucida mac.olb mac.pll machin machine.if machine.while macintosh macro made magenta mail main maintain mainten major make manag mani manipul manner manual map marci margin mark marker market markup mask mass master master-detail master/detail masterless match materi matrix matter max maxim maximum maxrow may mdi mean meaning measur mechan media medic medium meet member memberid members.testers memori mention menu menu.to menubar menus merg mesg messag messaggio met method metric mfc40.dll microhelp microsoft middl might mileston million mimic mind minim minimum minor minus minut mirror miscellan miss mistak mix mm mm/dd/yy mmx mnemon moat mobil modal mode model modeless modif modifi modul modular mon monetari monitor monochrom monospac month most most-us motif motif.olb motif.pll mous move moveabl ms msg mstrless msvc mswindow mswindows32 much multi multi-byt multi-color multi-languag multi-platform multi-record multi-step multi-t multi-ti multibyt multikey multilingu multimedia multin multipl must mutual myapp mycanva mypath myproj mywin n nam name name.property narrat nation nativ natur navig navigate.pll navwiz.fmb navwiz.mmb nearest necess necessari necessarili necessit need needleposit negat neither net8 network network-specif never new new-valu newer newli newly-cr next night nls nlssort nn node non non-applic non-enter non-graph non-icon non-interact non-mod non-navig non-obvi non-oracl non-oracle7 non-procedur non-rend non-standard non-vis non-western non-whit none norm normal north norway norwegian notabl notat note notepad noth notic notifi novic nt nt.prd nt.prd.there nth nuclear null num number number.you numer nvl obj object object/frame oblk oblk.oitm obscur observ obtain obvious oca oca20 oca_info.pdf occasion occupi occur occurr oci oct ocx ocx.server ocx.spindial.spindialctrl.1.needleposition ocx.spreadsheet.cellforegroundcolor odbc odbc-compli off off-load off-screen offer offset often og og.mousedown ogd oisfp10 oitm ok olb older oldnam ole ole-compli ole/activex ole2 ole2.add ole2.create ole2.destroy ole2.get ole2.invoke ole2.list ole2.obj ole2.release ole2.set olearg oleitem oleobj oleobject1 olevar omit on on-dispatch on-dispatch-ev on-dispatch-trigg on-fetch on-lin on-select on/off one one-step ongo onlin onward op open open.bmp opendb opendb.pll oper opinion opportun oppos opt optim optimizesql optimizetp optimum option or1 ora ora_ffi.ffi ora_ffi.find ora_ffi.funchandletype ora_ffi.is ora_ffi.libhandletype ora_ffi.load ora_ffi.pascal ora_ffi.pointertype ora_ffi.register ora_pipe_io.get ora_pipe_io.pclose ora_pipe_io.pipe ora_pipe_io.popen ora_pipe_io.read ora_pipe_io_body.sql ora_pipe_io_spec.sql oracl oracle-specif oracle.ini oracle7 oracle8 oraclehom oraconnect oradlg oradlg.dll oramultifiledlg orasinglefiledlg orawin95 order organ organiz orient origin orphan os other otherwis ou out-of-d outlin output outsid ouvertur over overal overflow overhead overlap overrid overridden overus overview overwhelm overwrit overwritten own owner p p.m packag packet pad page pages/panels pagin paint palett pane panel paper par parallel paramet paramform paramount parent parent-child parent/child parenthes parkway pars parse/bind/create part part-to-whol parti partial partialkey particip particular partit pascal pass past patent path pathnam patienc pattern pay payoff pc pc-dos pcharst pcl5 pclose pd2ctx pd2falt pd2fblk pd2fcnv pd2fctx pd2ffmd pd2fitm pd2frdb pd2frel pd2ftrg pd2fwin pddeptnoitm pddnameitm pdeptblk pdf pdlocitm pec pedeptnoitm peempnoitm peenameitm pejobitm pempblk peopl per per-us perceiv percent percentag percept perfect perform performance-improv perhap period permiss permit persist person person-hour personnel perspect pertain pesalitm phase phase.specifically phrase physic pictur pie piec pipe pixel pj10.noteworthy pjusernn.upd pkg pl/i pl/s pl/sql place placehold placement plain plan platform platform-depend platform-independ platform-specif platformindepend play pleas plenti pll plot pls plug plural plus pm pnum point point-of-origin pointer polici pop pop-up popen poplist popul popup port port-specif portabl porting.olb porting.pll portion pos posit possibl post post-queri postscript potenti power practic pragma prd pre pre-defin pre-delet pre-develop pre-insert pre-load pre-upd prebundl preced precis precompil predecessor predefin predict prefac prefer preliminari prepackag prepar preparatori prepend present press prevent preview previous previously-instal previously-instanti previously-us primari primarili prime principl print printer printer-specif printf prior prioriti privat pro pro20 probabl problem procedur proceed process process.if processor produc product product-specif prof profess profil profit profound program programm programmat prohibit project project-specif project.in project/subproject projects.you prolog/epilogue prompt propag proper properti proport proprietari pros protect protocol prototyp provid prp prt prvnt pt ptr public pull pull-down pun puo purchas pure pureatria purpos push put pvcs q qa ql qrda qri qualifi qualiti quantiti queri query-by-exampl query-driven question quick quit quot quota r rad radio rag rais ram rang rare rate rather rational raw rc rcs rdbms re re-appear re-bound re-compil re-design re-display re-ent re-execut re-link re-load re-open re-pars re-queri re-regist re-set re-siz re-us re-written reach react read read/write readabl reader readi real real-world real1 realiz realli rearrang reason rec recal reced receiv recent recipi recogn recommend recommendations/notes recompil reconnect record rectangl red red-green redefin redraw reduc reduct redund redwood ref refer referenc reflect refresh regactivex32.exe regardless regener region regist registr registri regsrv32.exe regsvr32.exe regul regular relat relations-rel relationship releas releaser.because relev reli relink remain remaind rememb remot remov renam render rep repaint repeat replac repli replic report report-level reports-specif reportsnn reposit repositori repres represent reproduc request requir resembl reserv reset resid resiz resolut resolv resourc resource-intens respect respond respons rest restrain restraint restrict restructur result resum retain retriev return returnbuf returned-table-of-record returntyp retval reus reusabl reveal revers review revis rewrit rgb right right-align right-to-left rightmost rigor risk riski rm robot robust role roman room root rough round round-trip rout routin rovitto row rpad rubin rule rule-bas rule-of-thumb ruler run rundebug runform runtim safe sal salari sale salesperson samp.h sampl san satisfactori satisfi save say scalabl scalar scale scan scatter scenario schedul schema scheme scope scott scott/tiger scrambl screen script scroll scrollbar sdi sdk sea seamless search second secondari section sector secur see seem segment select self self-contain semicolon send sens sensit sent sentenc separ sequenc seri serializ serif serious serv server server-compat server-name.ora server-sid server-stor servic session set set-bas set-up setattr setcel setcont setindex settextprop setup setup.exe setwinpo sever shall shape share shareabl sharp sharpli sheet shell shift ship shipment shoe short short-interv shortcut shorter shot shouldn show shown shrink shut side sign signific similar simpl simpler simplest simpli simplic simplifi simultan sinc singl single-byt single-languag single-record single-sourc single-t site site-specif situat six sixteen siz size sketch skip sky slice slight slow slowli small smaller smallest smart smartclass smclark smooth snap socket softwar solari sold solid solut someth sometim soon sophist sort sound sourc source-control sourcedir space span spare spec special specif specifi speed spell spell-check spend spent spin spindial.spindialctrl split spot spread spreadsheet spreadsheet.getcell spreadsheet.setcell spreadtabl spreadtable.currentcol spreadtable.currentrow spreadtable.getcellbycolrow sql sqlca sqlca.h sqllib18.lib sqxlib18.lib src srt.attr srw.attr srw.do srw.maxrow srw.set ss stabl stack stage stand stand-alon standalon standard starbas start start-up starteam state statement static statist status stay std stdin/stdout step step-by-step sti still stipendio stndrd20.olb stock stop storag store storyboard straightforward strang strategi stream stream.file stream.is stream.read strict string strip stripped-down strncpi strong stronger strtok structur studi style subclass subdirectori subgroup subject submenu submenus submit subprogram subproject subsequ subset substitut substr success suffer suffici suggest suit suitabl sum summar summari sun suno super superior supplement suppli support suppos suppress sure surfac surround survey svga swedish switch switzerland switzerland.we8iso8859p1 sybas symbol synchron synonym syntax sysdat system system-specif system.cursor t-list tab tab1 tabl table_pkg.tablename tablenam tabul tabular tackl tag tag-bas tailor take taken talk tallest tangibl tape tar target task task-bas tblname tcp tcp/ip tcp/ip-based team techniqu technolog tell temperatur templat temporari temporarili tempt tenant tend tenni term termin terminolog territori territory-specif territory.utf8 test tester text text-bas textitem1 textual therebi therefor thing think third third-parti thorough though thought thousand three three-part three-tier throughout thumb thumbnail thus ti tier tight time time-consum timebegin timeend timer tion tip tire titl tk25 tk2motif tkprof tmp tname today togeth toggl tool tool_env.getvar toolbar tooltip top top-to-bottom topic topmost total tour toward trace tracefil tracemod traceopt track trade trade-off trademark tradit traffic trail transact transfer transform transit translat transmiss transmit transpar treat tree trend tri triangl trigger trip troubleshoot trow true truetyp truli truncat tune turn turnov twice two two-tier txt typ type type-specif typesnn.upd typic ub ub2 ue ue.h ue_samp.dll ue_samp.mak uexit.c uexit.pc uez.obj ui uifont.ali uint umbrella un unabl unavail uncertain unchang uncheck uncompil uncov undefin under undergo underlin understand understood unexpect unfamiliar unicod uniform uniniti uniqu unit units.the univers unix unix-bas unknown unless unlik unnam unnecessari unneed unpack unpopul unpredict unprepar unread unrecogn unregist unrestrict unscrambl unset unsupport untun unus unusu up-to-d upd updat updating/inserting/deleting updt upgrad upi upon upper upper-left uppercas upx url us usabl usag usd29.025 use useless user user-defin user-ent user-nam user-specif user-specifi user.exe userexit userid usual utf8 util ux v vacuum vag val valid valu valuabl var varchar varchar2 varchar2/pls_integer varchar2mode vari variabl variant variat varieti various varptr vbx vbxobject1 ve vendor verb verifi version versus vertic vga vi via video view viewabl viewpoint viewport vii viii violat virtual visibl visit visual vms voi voic void volum vowel vprt vrf vs vt vue vulner w wait want warn warrant wast way wbp we8iso8859p1 web webform week weigh weight welcom well western whatev when-button-press when-mouse-click when-new-form-inst when-new-item-inst when-new-record-inst whenev wherea wherev whether whichev white whole whose wid wide wider widget width width/height win32common win95.prd winapi windll window window.olb window.pll window95 windows-bas windows-on windows.h windows95 windowsnt winhelp winhelp.winhelp winmain winsampl winsample.getprivateprofilestring wise wish within without wizard wizard.pll wnd won word word-wrap wordpad work workaround worksheet workspac world worldwid worth worthwhil would wrap wrb write written wrong ww www www.acme.com x x-posit xi xii xiii xitcc xiv xtb.c xv xvi xvii xviii y y-posit year yellow yes yes/no yet yield yourapp yy yyyi z zero zip ä äbc