As discussed in last posts, concurrent programs in Oracle Apps allows submitting multiple concurrent programs. You can even submit multiple instances of the same program at the same time.
In such case, multiple runs of the same program can interfere with each other if underline logic is not defined to run in parallel. It may happen that data processed by one instance get overwritten/corrupted by the second instance.
How to avoid this?
You can submit one program (not possible in the real world) or change underline executable to handle it internally.
What is Concurrent Program Incompatibility?
There is an inbuilt mechanism in Oracle Apps to handle this situation called Concurrent Program Incompatibility. You can define a concurrent program as incompatible to each other or itself.
When you define, Concurrent Manager and Conflict Resolution Manager make sure that only one instance of the program is running at a time. The incompatible program goes in Pending Standby phase.
Consider a concurrent program – Inventory Value Report – by Subinventory. Let’s submit multiple instances of the program.
See, all are running in parallel.
Define concurrent program incompatibility
To demonstrate it, I am going to make this program incompatible with itself. You can add different programs also.
Navigate to Application developer->Concurrent program. Query respective concurrent programs and click on the Incompatibilities button.
This opens the Incompatibility Programs window to define incompatibility.
Application – Name of the application under which program defined or registered.
Name – Name of the incompatible concurrent program.
Scope – Define the scope of incompatibility.
- Program – Program incompatible with this program only.
- Set – Program incompatible with this program and all its child request (set).
Type – Type of Incompatibility
- Global – Program incompatible at the global level. Those programs can’t run together in an instance.
- Domain – Program incompatible at a domain level. You can define a custom domain conflict like Operating Unit, Inventory Organization, SOB, etc.
Enter all this information and click on save. You may get below warning message as a popup.
The parameters of concurrent program “CSTRINVR” of application “Bills of Material” use features which are only supported in Oracle Forms. This concurrent program may not be submitted from other environments such as OA Framework or PL/SQL APIs.
Just click on OK Button and incompatibility set.
Now submit 2 instances of the same program. You can clearly see only one is running and other is in pending standby status.
Select the request and go to Tools – Manager. You can see a separate Conflict Resolution Manager is running. Its job is to determine and manage conflict of the running program.
Click Manager Queue button. You can see 2 requests which are in the queue.
As soon as one program completes, you can see other requests started to run.
This is the way you can make a program incompatible with itself or some other concurrent program.