ISD team of client side was struggling with such requirement.
Scenario :They have two request set name say 'X' and request set name 'Y'.
Their requirement was to make these two incompatible to each. So that when X runs Y should wait for X to complete or vice versa?
This might be very similar requirement for other so thought to bring into post.
Lets understand ..... "INCOMPATIBLE"
So left hand side figure , is what defined in m-w.com
Lets revisit in Oracle Context..
INCOMPATIBLE means: Two incompatible reports or request set are not allowed to run in parallel. Incompatible reports /program can only run sequentially, the first one must terminate before the other is allowed to start.
So, it can happen that a report is pending for a long time, when it is waiting for the incompatible report to finish.
In Oracle Context you have to know that INCOMPATIBLE type may be global or domain . If you choose Domain, the incompatibility is resolved at a domain-specific level. If you choose Global, then this concurrent program will be considered globally incompatible with your concurrent program, regardless of which domain it is running in.Make sense.. Lets take a look how documentation define:
Example of Program Incompatibilities
You can understand like this: Oracle General Ledger's Posting program,which is used to post journal entries.
If the Posting program's incompatibility with other concurrent programs were not enforced, other financial reports running simultaneously with the Posting program could contain incorrect account balance information.
Definition of incompatible type "Domain" VS "Global"
If you choose Domain, the incompatibility is resolved at a domain-specific level.
If you choose Global(Fyi..The concept of "Global" incompatibilities was introduced with Patch 2364876), then this concurrent program will be considered globally incompatible with your concurrent program, regardless of which domain it is running in.
You can define a concurrent program to be globally incompatible with another program that is, the two programs cannot be run simultaneously at all; or you can define a concurrent program to be incompatible with another program in a Conflict Domain. Conflict domains are abstract representations of groups of data.
They can correspond to other group identifiers, such as sets of books, or they can be arbitrary.
Concurrent Conflict Domains Concept
As per Oracle system admin user guide, If two programs are defined as incompatible with one another, the data these programs cannot access simultaneously must also be identified.
In other words, to prevent two programs from concurrently accessing or updating the same data, you have to know where, in terms of data, they are incompatible. A Conflict Domain identifies the data where two incompatible programs cannot run simultaneously.
In Oracle Applications, data is stored in database tables that belong to a particular application. Each table may also contain information used to determine what conditions need to be met to access the individual records. These conditions may consist of one or more of the following data groupings:
- Set of books : This is based out of underline profile option i.e..GL_SET_OF_BOOKS
- Multiple Operating units :This is based out of underline profile option MO_OPERATING_UNIT)
- Multiple Orgs :This is based out of underline profile option ie. INV_ORGANIZATION_ID Manufacturing Applications
- HR may use business group as a conflict domain
- Fixed asset may use Fixed asset dep. book(FA)
A conflict domain is an abstract representation of the groupings used to partition your data. There is no limit to the number of domains that can be defined, but excessive domains may hurt performance.
More on Oracle Conflict Domains
A conflict domain is a set of related data stored in one or more ORACLE schemas and linked by grants and synonyms. Do not confuse logical databases with your ORACLE database. The ORACLE database contains all your Oracle Applications data, with each application's data usually residing in one ORACLE schema. You can think of a logical Defining database as a line drawn around a set of related data for which you wish to define concurrent program incompatibilities. In other words, logical databases determine which concurrent programs cannot run at the same time.Make sense:)
Profile Options as part of standard setup
- Concurrent:Conflicts Domain :This option identifies the domain within which all the incompatibilities between programs has to be resolved.
The profile can be set at Site, Application, Responsibility and User levels.This can be an operating unit name, a legal entity name, or a set of books name as the domain name. You are allowed to define as many as domains as you need. Since you cannot delete conflicts domains, you should keep the domains to a necessary minimum.
DEFINING CONFLICTS DOMAINS
Navigate to Concurrent > Conflicts Domains
How its Conflict Domains Works with conflict resolution manager
All programs are assigned a conflict domain when they are submitted. If a domain is defined as part of a parameter the concurrent manager will use it to resolve incompatibilities. If the domain is not defined by a parameter the concurrent manager uses the value defined for the profile option Concurrent:Conflicts Domain.
Lastly, if the domain is not provided by a program parameter and the Concurrent:Conflicts Domain profile option has not been defined the 'Standard' domain is used. The Standard domain is the default for all requests.
All programs use the Standard conflict domain unless a value is defined for the profile option Concurrent:Conflicts Domain or a conflict domain is defined through a program parameter.
Each request submitted uses parameters which identify the records that it will access.
For programs that are defined with incompatibility rules an additional parameter (conflict domain parameter) is used. The conflict domain may be set automatically based on such variables as a login ID, set of books, or the organization the user is working in. The conflict domain parameter may in some cases be selected in the parameters field of the Submit Requests form. Once the parameter is determined the Conflict Resolution Manager (CRM) uses the domain to ensure that incompatible programs do not run simultaneously in the same domain.
Read the rest of this entry »