Friday 22 April 2011

Application Engine


Application Engine

1.It is a PeopleTool and It is used to develop batch programs or online programs that perform the backed processing against the data.

2.It consists of the 2 distinct components .They are
Designer->Consists of the batch programs.
Run time Environment->To run and monitor the programs.

3.A program is a set of SQL statements.

4.It does not generate SQL or PeopleCode, but it executes SQL or PeopleCode as a part of program.

5.It is designed for batch processing where data must be processed without user interaction.

6.AE resides on database server.

APPLICATION ENGINE PROGRAM ELEMENTS:
======================================
1.PS AE consists a set of processes to execute a given task and made up of several elements.They are

i) Sections
It is a set of ordered steps that gets executed as a part of the program.The execution of the program starts with the section defined as MAIN.

ii) Steps
Steps are the smallest unit of the program that can be commited within a program.It is used to execute the a peopleCode

command or log a message with the step.When the section gets called, its steps execute sequentiately.

iii) Actions
Multiple actions can be within a step.There are 5 multiple actions they are

DO ACTIONS:
===========
Do actions contain a SQL statements taht is designed to return the results on which subsequent actions depend.
It is equvalent to a COBOL perfrom statement.There are 4 types of Do actios they are:
1)Do While 2)DO When 3)Do Select 4)Do Until.

SQL AND CALL SECTION ARE MUTUALLY EXCLUSIVELY ACTION WHICH CANNOT BE PERFORMED ONCE AT ATIME COZ IT CAUSES DEADLOCKS

SQL:
It contain a single SQL statements.There are 4 types of SQL statements.They are
1)Update 2)Delete 3)Insert 4)Select

PeopleCOde:
===========
It provides an excellent way to build dynamic SQL, perform simple if/else edits,set defaults and other operations that

don't require a trip to the database

Log Message:
============

Call Section:
=============
It is used to call and insert an action in the progaram or outside program.

iv) State Records
=============
It is a PeopleSoft Record that must be created and maintained by the Application Engine developer.
This record defines the fields a program uses to pass values from one action to another.
It can be either a Physical record or a work record, any no of sate records can be assosiated with a program.
Physical state records must be keyed by process instance.

APPLICATION ENGINE PROGRAM TYPES:
=================================
There are 5 types of Application Engine Programs.They are.
1.Standard->Normal entery point program.
2.Upgrade Only->used in PS Upgrade utilites.
3.Import Only->used by PS import utilites.
4.Daemon Only->A type of program which is used a daemon Process.
5.Transform Only->used to support Extensible stylesheet language Transformations(XSLT).

DAEMON PROGRAM TYPE:
1.PS AE provides a daemon process called PSDAEMON, that runs continously when PS Process Scheduler is running and it is intended for running jobs.

2.It consists of a predefined set of conditions as events.When PSDAEMON schedules a process to handle an event when the conditions are true.

3.It allows only PS AE tracing at the step and SQL levels

META-SQL
========
1.Meta-SQL is a set of predefined terms designed to replace RDBMS syntax.
2.PS meta-SQL enables us to dynamically generate portions of SQL code.(EX;--2 join 2 tables based on their common keys)
3.%select->It is ued to insert values of varibles in to sate record.
4.%bind->It is used to get values.

SQLEXEC();
=======
By using the SQLEXEC() function we can do the data manipulation (Insert,Update and Delete).
Example:
SQLEXEC("select * from PS_JOB where X.EMPID.vlaue=:1",abc,&emplid1")

The main draw back using this SQLEXEC() function is "It will return only one value at a time".

Note:-for more in detail draw backs about SQLEXEC,please go through the other post Reasons why PeopleSoft does not recomd SQLEXEC()"


Sate Records:
=============
It is a working storage.
It is a physical record or derived work record
It passes values from section to section ,Action to Action and step to step.
We can use "N" no of state records in a program.
It consists of Runcontrol ID and Process Instance ID.
It it is a physical record then process Instance ID must be keyed.
It maintains temporary data in AE programs for online processing.

State Record Properties
=======================
General
-------
It is used to select any sate record from the list

Temp Tables
-----------
1.Select the temp tables tab.
2.It is used to get a temporary record.
3.When we enter any of the wild card character or the table full name and Click on get list.Then it displays all the records containing temporary tables.
4.Select the necessary temporary table and click o add in to the list.
5.We can remove a particular temporary table by selecting it and click on remove.
6.Instance count is used to enter the no.of physical tables to be created for each dedicated table for this program during the SQL Build procedure in PeopleSoft Application Designer.If we want to any program to run for 3 times then we should specify in the instance count.
7.If we select base version then it uses the temporary tables.
8.If we select Abort then the program exists with an error message.

Advanced Tab
------------
1.Disable Restart
2.Application Library
3.Batch only
4.Messsage Set
5.Program Type (STD,Upgrade,Import,Daemon,Transform)


Restating an AE program

=======================
The Key feature of AE is Restart.

Sate record should be a physical record.When the system is processing a huge amount of data (batch processing) and if there

occurs any failure through the environment then the restartable logic comes in to picture.The cursor directly comes in to the checkpoint where the commit is set upand restarts the program from that point.

We can restart the program from the process request page.
AERUNCONTROL record saves all the information that is required for a program to restart.


File Layout's
=========
1.It is used for file processing using INBOUND and OUTBOUND process
2.A File layout is acollection of records.
3.Works with hierarchical and non-hierarchical data
4.stored with _FLT
5.It enables us to do the following
-->Export and Import the data.
-->It uses Batch Process to perform large amount of data import and export.
-->There are 3 types of file formats.They are CSV,XML,FIXED.
6.It also facilitates to provide the transaction between PS systems and 3rd party systems

Inbound Program

===============
Reading from a FALT file and writing in to database
-->Open the flat file in READ mode
-->Read each and every line in a flat file and put them in a string
-->Split the data with separators and put it in an array
-->Insert the values in to the record by matching the field values in to record.

Example:
Local record &rec
&myfile=getfile("c:/documents/abcd.txt","R",%filepath_absolute);
&arr=createarrayrept("",0);
&rec=createrecord(record.EMP_TBL);
If &file.open() then
while &file.readline(&str);
&arr = split(&str,",");
&rec.EMP_ID.value = &arr[1];
&rec.EMP_NAME.value = &arr[2];
&rec.EMP_AGE.value = &arr[3];
&rec.insert();
End-while;
end-if;
&myfile.close


Outbound Program
================

Writing from a Database to flatfile
-->Open the flat file in WRITE mode.
-->Use the %SELECT to select all the record field values.
-->Put the field values in a dummy record.
-->By using the dummy record field value write the files to FLAT file usng WRITELINE.

Example:
&myfile=getfile("c:/documents/abcd.txt","W",%filepath_absolute);
&myfile.open("c:/documents/abcd.txt","W");
For i=1 to5;
&myfile.writeline("HI welcome to PS world");
end-for;
&myfile.close


A sample code to read a file using file layouts and insert data read into a record
==================================================================================

Local File &MYFILE;
Local Record &REC;
Local array of string &ARRAY;
Local string &FILE_DIRECTORY, &FileName;

&FileName = "MY_FILE_NAME.txt";
&FILE_DIRTORY = "/MYDIRECTORY/"
/*open file for reading*/
&MYFILE = GetFile(&FILE_DIRECTORY | &FileName, "R", %FilePath_Absolute);
/*create record object*/
&REC = CreateRecord(Record.MY_RECORD);
&ARRAY = CreateArrayRept("", 0);
/*check if file is open*/
If &MYFILE.IsOpen Then
/*The SetFileLayout method is a file layout method. It associates a specific file layout definition with the file object executing this method, providing easy access to rowset data.(PeopleBooks)*/
If &MYFILE.SetFileLayout(FileLayout.FILE_LAYOUT_NAME) Then
/*read line into &STRING*/
While &MYFILE.ReadLine(&STRING);
&ARRAY = Split(&STRING, ",");
For &I = 1 To &REC.FieldCount
&REC.GetField(&I).Value = RTrim(LTrim(&ARRAY [&I]));
End-For;
/* do additional processing here for converting values */
&REC.Insert();
/*count rows inserted into record*/
&COUNT = &COUNT + 1;
End-While;
Else
/* do error processing - filelayout not correct */
End-If;
Else
/* do error processing - file not open */
End-If;




We can run the AE in 3 way's
============================
1.Application Designer -->RUN
2.Command Line -->PSAE.EXE
3.Process Scheduler.

Order of events in Application Engine
=====================================
1.Do When
2.Do While
3.Do Select
4.People Code
5.SQL
6.Call Section
7.Log Message
8.Do Until



Trace Application Engine Program PeopleSoft


Any normal PeopleSoft user will find it easy to perform an online application server trace after reading our earlier posts on Tracing PeopleCode. However, it is rather incomplete as it does not tell how to trace an Application Engine Program or COBOL Processes inside a PeopleSoft application. As a PeopleSoft Developer, I had to end up tracing my Application Engine Programs often and to those, who don’t know how to do it, it can turn into a fairly complex process.

In this post, we will explain how to perform a trace and pick up the trace file for Application Engine programs or any program that uses the PeopleSoft process scheduler.In order to do a trace for your AE program, navigate to the following location

PeopleTools –> Process Scheduler –> Process Definition

Now, you need to perform a search under Process Definition and open the program for which you need a trace. When you find your program, follow the steps provided in the screenshot below


Setting Trace Options for Application Engine Under Process Definition
Setting Trace Options for Application Engine Under Process Definition

1) First click on Override Options
2) Select “Append” from the Parameter List
3) Enter the trace options in the Text box against Parameter List
4) Hit Save on the page. The Application Engine program is now ready for tracing.
After you do this, every time you run the program the program will be traced by PeopleSoft automatically. You will have to reset or remove the trace options if you do not want to happen like this. You can also use SetTracePC and SetTraceSQL documented earlier, if you want to trace PeopleCode Programmatically. Another trace option is shown below

-TRACE 7 -TOOLSTRACEPC 4044  -TOOLSTRACESQL 31

Now, you have to note that you can use the options TOOLSTRACEPC and TOOLSTRACESQL together only when it is required as the output in both the cases will go to the same trace file. Your trace file can turn out to be quite big when you combine both these options. The trace can also be activated through the process scheduler configuration file. (psprcs.cfg). The equivalent settings in the process scheduler file are provided below

Settings in psprcs.cfg
Settings in Process Definition
Notes
TraceAE
-TRACE
Output is sent to Application Engine Trace (AET) file
TracePC
TOOLSTRACEPC
Output goes to PeopleCode trace file(.trc)
TraceSQL
TOOLSTRACESQL
Output goes to PeopleCode trace file (.trc)

To arrive at the trace bitmap numbers, you can follow the documentation below. Just add the numbers and set to the trace option accordingly.
; Bit       Type of tracing
; ---       ---------------
; 1         - Trace STEP execution sequence to AET file
; 2         - Trace Application SQL statements to AET file
; 4         - Trace Dedicated Temp Table Allocation to AET file
; 8         - not yet allocated
; 16        - not yet allocated
; 32        - not yet allocated
; 64        - not yet allocated
; 128       - Timings Report to AET file
; 256       - Method/BuiltIn detail instead of summary in AET Timings Report
; 512       - not yet allocated
; 1024      - Timings Report to tables
; 2048      - DB optimizer trace to file
; 4096      - DB optimizer trace to tables
TraceAE=0

No comments:

Post a Comment