Defining Concurrent Programs

Defining Concurrent Programs

After you have defined the logic for your program, you must define a concurrent program that you call from your forms or from Standard Request Submission. You first define a concurrent program executable that tells the application where to find your program logic. You then define as many concurrent programs as you need that use your concurrent program executable. You can define which concurrent programs are incompatible with your concurrent program, and if you use Standard Request Submission, you define the parameters used by your executable. You can specify validation information for your parameters to control the values users select on the Submit Request form.

If your program is a Pro*C immediate program, you must include the concurrent program in a program library. After you change a concurrent program library, you must rebuild the library and then relink it. Only concurrent managers using a library that includes your concurrent program can run your concurrent program.

If your concurrent program uses Standard Request Submission, you should use Oracle System Administration to add your concurrent program to the appropriate request groups. Users can then submit your concurrent program using the Submit Request form.

For more information, see the Oracle E-Business Suite User's Guide and the Oracle E-Business Suite System Administrator's Guide Documentation Set.

Here are the steps for defining a concurrent program:

  1. Define the execution file. (Application Developer)

  2. Define the concurrent program executable. (Application Developer)

  3. Define the concurrent program. (Application Developer or System Administrator)

  4. Define the concurrent program library; rebuild and relink. (Application Developer)

  5. Give access to the concurrent program to users. (System Administrator)

For additional information on the system administrator tasks, see the Oracle E-Business Suite System Administrator's Guide.

Define Your Concurrent Program Executable

When you have completed your program and placed the execution file in the correct directory of your application's base directory, you must define a concurrent program executable with Oracle Application Object Library, using the Concurrent Program Executable form. When you define your program executable, use the name that corresponds to your program's execution file without an extension. You use this name when you define a concurrent program using this executable.

Specify the execution method appropriate for your execution file. Oracle Application Object Library looks for the execution file based on which execution method you identify. Your concurrent programs use the concurrent program executable to locate and run the correct execution file.

If your program is a Pro*C routine, and you want to run it as a subprocess linked in with a concurrent manager, specify the name of your subroutine as well as the execution file name and select immediate as your execution method. The subroutine name is the name you substituted for SUBROUTINE_NAME in the program templates. Although you select an execution method here, you may create both spawned and immediate concurrent program using this executable. You must include any concurrent program you write using the immediate execution method in a concurrent program library.

We recommend using the spawned execution method for your Pro*C programs whenever possible, as they are easier to maintain and support than immediate programs. In future releases, only spawned Pro*C programs will be supported, as PL/SQL stored procedures provide you with a mechanism for writing custom concurrent programs that do not spawn independent processes.

PL/SQL stored procedures are immediate programs in that they do not spawn an independent process, but you should specify the name of the procedure in the execution file field and select PL/SQL Stored Procedure as your execution method.

Define Your Concurrent Programs

Define your concurrent program using your executable with the Oracle Application Object Library form Concurrent Programs. Give each concurrent program a user-friendly program name used when selecting your concurrent program from an end-user List of Values. This name should convey the program's purpose. Specify a short name for the applications to pass to the concurrent manager or for you to use when submitting your request through CONCSUB, the FND_REQUEST PL/SQL API, or #FNDCONCURRENT. For example, in your program file you might write an initial function called glpost(), and then define your executable with the name GL_POST. The concurrent program you define with the name General Ledger Posting and the short name GL_POST.

If you do not wish to make your concurrent program available through Standard Request Submission, you leave the "Use in SRS" box unchecked. If your program is a Standard Request Submission report, you can permit the report to access all values, including obsolete or disabled values, or you can limit the report to current values. You can disable your program at any time. Disabled programs do not show up in end-user Lists of Values, and concurrent managers do not run requests for disabled programs.

Specify the concurrent program executable you previously defined for your program. You can decide whether to run your Pro*C program as spawned or immediate (linked in with the concurrent manager process) if you specified both a execution file name and a subroutine.

If your concurrent program generates output, you should specify the maximum and minimum dimensions of the printed report. This information determines which printer styles can accommodate your report requirements. You can choose to have the concurrent manager automatically print the report output file if your program creates one, and you can choose a print style.

If you are integrating this concurrent program with the Business Event System in Oracle Workflow, specify at which point(s) in the life cycle of a request for this concurrent program you want a business event raised. Users can then subscribe to this business event and create a own business process interacting with the concurrent program.

When you define your program, define any incompatibilities it has with other concurrent programs or itself. List any concurrent programs that your program should not run against in the same logical database. If the concurrent program cannot run while any other concurrent program runs, specify that your program is a Run Alone program.

If your concurrent program uses Standard Request Submission, define the parameters to pass to your execution file. You can define value sets and set parameter validation similar to defining a flexfield segment. This information determines the behavior of the segments in the pop-up parameter window on the Run Reports form.

If your concurrent program uses Oracle Reports, you should specify the tokens you defined for each parameter.

After you define your concurrent program, use Oracle E-Business Suite System Administration to reset the concurrent managers. This forces the concurrent managers to recognize new concurrent programs or any changes you have made in program registration. However, if you change the Execution Method of your program from Spawned to Immediate, your system administrator needs to shutdown and restart the concurrent managers so that the concurrent managers recognize the change.

Defining Your Concurrent Program Library

Use the Register Concurrent Program Library form to define your program library. Specify the Library Name in the Program Library zone and the application whose base directory your execution file resides in. In the Concurrent Programs zone, list all the concurrent programs that you defined as immediate with Oracle Application Object Library that you want to include in this program library.

Before you can run your immediate Pro*C concurrent program, use Oracle System Administration to assign the library including the program to a concurrent manager. If an immediate concurrent program is not in a concurrent manager's library, that concurrent manager cannot process a request to run that immediate concurrent program.

Rebuild your library and relink it whenever you add new concurrent programs. Then restart your concurrent manager before requesting your concurrent program.

The Oracle E-Business Suite installation process defines the Oracle Application Object Library FNDLIBR program library. This library contains Oracle E-Business Suite immediate concurrent programs. You should assign this library to at least one concurrent manager.

Give Access to the Program

If you want users of another application to be able to run your program, you should include your program's application in the data groups for the responsibilities of the other application. The concurrent program runs in the ORACLE ID associated with its application in the current responsibility's data group.

To allow users to run your Standard Request Submission program from the Submit Requests form, add your program to the request group for their responsibility.

Concurrent Program Libraries Window

Use this window to register program libraries, which are lists of immediate concurrent programs that you wish to link with a concurrent manager. Concurrent managers use the programs in a program library to run their immediate programs. You must register libraries before you can define concurrent managers. You can only include immediate-type concurrent programs in program libraries.

After adding any immediate concurrent program to your library or creating a new library, you must rebuild and relink your library before your changes take effect. After you rebuild and relink your library, the system administrator must restart the concurrent manager using your library.

You can only register program libraries that you have already built at the operating system level.


Concurrent Program Libraries Block

The combination of application name plus library name uniquely identifies your set of programs.

Library Name

This is the same name you gave to your program library file at the operating system. The library name must be eight characters or less.

System administrators can then assign this library name to concurrent managers. Each concurrent manager is linked to one program library and can only run immediate-type programs that use concurrent program executables that are part of that library. A concurrent manager can run other execution type programs that are not in its program library.


The bin directory under this application's top directory should contain the executable program library file.

Library Type

There are two types of program library you can define:

Variable Description
Concurrent Library A library of immediate concurrent programs to link with a concurrent manager.
Variable Description
Transaction Library A library of transaction programs to link with a transaction manager.

Concurrent Programs Block

List the concurrent program executables you have linked to this program library at the operating system level.


Enter the name of an immediate-type concurrent program executable that you linked into your program library at the operating system. This block verifies that the program name and application name you specify uniquely identify a defined concurrent program executable.


This is the application to which your concurrent program belongs.

Rebuild Library

Select this button when you need to rebuild your concurrent library. You should rebuild your library whenever you add new programs to your library.