Monday, September 15, 2008

DFF Segment Disabling

Used in situations where you enable a DFF segment and can update the value in only one responsibility and not allow other responsibilities to update the value.


In custom.pll write code for When-Validate-Record.

Here check if resp<> 'X'


Now if its a new record then the user should not assign any value to this DFF segment from this reponsibility. user can assign only from Resp X.


So if record status=new and block.attribute1 is not null means he assigned a value. So raise error.

If its an old record and user is trying to update the value then check the old value from the database. compare this value with the new value which has been entered in the form.


If both are same then he didnt update so no need to throw an error. If both values are different he has updated so need to throw error.


To get the old value from database u will need to query the table with the current record primary key.New value is assigned to the form item.


Below is the pseudo code

If event='When-Validate-Record' then

if current_responsibility<>'X' and record_status='INSERT' and block.attribute1 is not null then

fnd_message.set_string('Cant assign value');

fnd_message.error;

raise form_trigger_failure;

elsif current_responsibility<>'X' and record_status='CHANGED' and block.attribute1!=old value of attribute1(queried from database) then

fnd_message.set_string('Cant assign value');

fnd_message.error;

raise form_trigger_failure;

end if;

end if;

How to find Oracle Application file versions

Here are the commands to find the file versions of server file types


Note:

  1. Before running the commands make sure you are in directory where the file for which you want to find is located. or you can explicitly specify complete path along with file name
  2. Some environments you many not find ident command


FORM

ident form.frm | grep Revision (Ex. ident POXPOMPO.frm | grep Revision)

strings -a form.frm | grep Revision (Ex. strings -a POXPOMPO.frm |grep Revision)


REPORT

ident report.rdf | grep Head (Ex. ident ARBARL.rdf | grep Header)

strings -a report.rdf | grep Head (Ex. strings -a ARBARL.rdf | grep Header)


Steps to Register shell script as Concurrent Program

1. Create host file with .prog extension (For ex test.prog).
2. Grant execute permission to the file
3. From the directory of the host file execute following command to create a symbolic link
ln -s $FND_TOP/bin/fndcpesr
ln -s $FND_TOP/bin/fndcpesr test
Note: Step 3 is very critical, concurrent program will error out with out this step
4. Create a concurrent Program executable
5. Create concurrent program

Monday, July 7, 2008

Oracle application Architecture

The Oracle Applications Architecture is a framework for multi-tiered, distributed computing that supports Oracle Applications products. In this model, various servers or services are distributed among three levels, or tiers.

Before going forward lets me tell you what is a sever

A server (or services) is a process or group of processes that runs on a single machine and provides a particular functionality. For example, Forms services process requests for activities related to Oracle Forms. The Concurrent Processing server supports data-intensive programs that run in the background.

Review the picture below to understand the oracle application architecture





The Desktop Tier

The client interface is provided through HTML for HTML-based applications (all i-Modules like iSupplier, iExpenses), and via a Java applet in a Web browser for the traditional Forms-based applications. The Java applet is run by Jinitiator which is a JVM made and distributed by Oracle Corporation. It allows a web enabled Oracle Forms client application to be run inside a web browser. This JVM is called only when a web-based Oracle application is accessed.


The Application Tier

The application tier has a dual role: hosting the various servers and service groups that process the business logic, and managing communication between the desktop tier and the database tier. This tier is sometimes referred to as the middle tier. Four servers or service groups comprise the basic application tier for Oracle Applications:
  • Web services
  • Forms services
  • Concurrent Processing server
  • Admin server
Of all the above service, I will explain more on concurrent processing server over the other ones as this is the one with which we deal with more often than others.

Here are some important points on concurrent processing
  1. Reporting programs and data updating programs that need to run either periodically, or on an ad hoc basis.
  2. These programs, which run in the background while users continue to work on other tasks, may require a large number of data-intensive computations, and are run using the concurrent Processing architecture.
  3. Concurrent Processing is an Oracle Applications feature that allows these non–interactive and potentially long-running functions to be executed efficiently alongside interactive operations.
  4. It uses operating system facilities to facilitate background scheduling of data- or resource-intensive jobs, via a set of programs and forms.
  5. To ensure that resource-intensive concurrent processing operations do not interfere with interactive operations, they are run on a specialized server, the Concurrent Processing server.
  6. Processes that run on the Concurrent Processing server are called concurrent requests.
  7. When you submit such a request, either through HTML-based or Forms-basedApplications, a row is inserted into a database table FND_CONCURRENT_REQUESTS specifying the program to be run.
  8. A concurrent manager then reads the applicable requests in the table, and starts the associated concurrent program.
Concurrent managers are fundamental to concurrent processing. Acting as a job
scheduling and execution system. (Will devote a separate post for explaining different types of concurrent managers)

In Concurrent Processing, programs are run as operating system background processes.
These programs may be written using a variety of Oracle tools, programming languages
for executables, or the host operating system scripting language.

Here are some of the important tables that details the concurrent requests and programs
(I will leave the part of identifying appropriate columns to join these tables to developer who reads this post.. small excercise.. good to do as many as possible of this type to gain self learning experience)

FND_CONCURRENT_REQUESTS : Details of user requests, including status, start date, and completion date

FND_CONCURRENT_PROGRAMS : Details of concurrent programs, including execution method, whether the program is constrained, and whether it must be run alone.

FND_CONCURRENT_PROCESSES: Cross-references between concurrent requests and queues, and a history of concurrent manager processes

FND_CONCURRENT_QUEUES: Information about each of the concurrent manager queues

The Database Tier
  1. The database tier contains the Oracle database server, which stores all the data maintained by Oracle Applications.
  2. The database also stores the Oracle Applications online help information.
  3. More specifically, the database tier contains the Oracle data server files and Oracle Applications database executables that physically store the tables, indexes, and other database objects for your system.
  4. The database server does not communicate directly with the desktop clients, but rather with the servers on the application tier, which mediate the communications between the database server and the clients.

Role of a technical consultant

In my first post, I would like to outline some of the basics regarding oracle apps technical consultant.

Role of a technical consultant in a project is

  • To do a feasibility of business requirement from technical stand point
  • Propose all possible technical solutions to accomplish the business requirement with details of Pros and Cons of each approach
  • To design the business requirements into a technical solution
  • To develop the requirements (using the various technologies and tools)
  • To consider the performance and scalability of the solution
  • Develop deployment strategy

Pre-requisites to become a good technical consultant

To be a successful oracle applications technical consultant here are what you need with order of importance. I will try to cover various aspects of these pre-requisites in my next posts.

  • Oracle SQL
  • PL/SQL
  • AOL (Value sets, registering concurrent Programs, Request sets etc…)
  • Oracle Reports and XML Publisher
  • Forms Personalization/Custom.pll
  • Oracle Workflow customizations
  • Shell Scripting
  • Forms customization
  • OAF Personalization and Customization