Application Engine
-
Upload
kiran-putta -
Category
Documents
-
view
67 -
download
2
Transcript of Application Engine
Application Engine
Application Engine - Agenda
• Introduction to Application Engine.
• Structure & Flow of an Application Engine Program.
• Executing Application Engine Programs
• Difference b/n AE and SQR
Introduction
What is an Application Engine • Application Engine is used for BATCH or ONLINE processing
where you have a large (or small) amount of data that needs to be
processed without user intervention. • Application Engine is the PeopleTool that you use to develop
BATCH or ONLINE PROGRAM that are effective alternatives
to COBOL or SQR programs for Performance.
• Program for NON-REPORT PROCESSING.
• Programs that perform HIGH VOLUME BACK GROUND
PROCESSING against your data.
Introduction
Technical Definition
• An AE program is a set of SQL statements, People Code, and Program
Control Actions defined in Application Designer that performs a business
process.
• Think of Application Engine as a tool that allows you to define a
program's framework, as in its algorithm, structure, and looping
constructs. • Allows you to take advantage of features such as the People Code File
objects and Interlink objects, Component Interfaces, Application Messaging,
and so on.
Features Of Application Engine Program
• Application Engine programs reside completely within your database.
• No Compilation required.
• Database Flexibility.
• Does not generate SQL or PeopleCode.
• Built in Re-Start Logic.
• Mostly used for SET based processing.
• PeopleCode can be written.
• AE program can be called from People Code.
www.itwisesolutions.com
Sample AE Program(Definition View)
Structure Of An AE Program
• Sections
• Steps
o Actions
www.itwisesolutions.com
Section
• Platform
• Effective Date and Status
• Auto Commit and Access Type
• Section Name (e.g. MAIN, etc) and Description
• Market
Section Properties
• Section Name (e.g. MAIN, etc) and Description
• Market
• Platform
• Effective Date
• Effective Status : Active & Inactive
• Auto Commit
• Access Type
Section Properties
• Section Type : Critical Update & Prepare Only
In the case of an abnormal termination of the program, the value of this system
field specifies whether or not you will need to Restart the Section.
If a Section controls a procedure that, if not run to completion, could corrupt or
desynchronize your data, choose Critical Updates.
Otherwise, use the default value of Preparation Only.
• Execution Precedence
If a Section for the current Market exists, execute it.
If a Section for the current Platform, or RDBMS, exists, execute it.
If a Section for the current Effective Date exists, execute it.
Step
• A Step represents the smallest unit of work that can be committed in a program.
• When you first create a program, you have a default MAIN Section and Step,
initially named Step01.
• All programs require at least one Section, all Sections should contain at least one
Step, and all Steps should contain at least one Action.
www.itwisesolutions.com
Step(Design View)
Step Properties
Commit After
• Default You can opt to select Default, which means the Step will inherit what
ever Commit level you have specified for the Section in which the Step resides.
• Later By selecting Later, you postpone the commit until a subsequent Commit
occurs, as specified by developers. Again, here you can override the Section-
level commit, if it happened to be set to After Step.
• After Step Selecting After Step is useful if you have a Commit level of None
specified at the Section level. This way, you can override the Section-level
commit, and commit a specific Step within a Section with no other commits.
Step Properties
Frequency
• Blank default (any number can be added)
• The Frequency control only becomes enabled when a Step contains one of the
following Actions: Do While, Do Select, or Do Until. This control will only accept
numeric values. The value indicates the frequency of the rows with which
Application Engine should commit.
• If non-zero, Application Engine commits every N iterations, and then again after
the last iteration.
Step Properties
On Error
Here you can specify how Application Engine should respond to an error at
the Step level. The On Error routine behaves the same for both SQL and
People Code Actions. The program only aborts on errors, not warnings.
• Abort The application will terminate with an error message.
• Ignore The program continues but logs an error message.
• Suppress The program will continue and present no error message.
Action
• Contains all the code of Application Engine Program.
• There are eight types of Actions that you can include within a Step, and a Step
can contain multiple Actions.
• You can only include one of each Action type within a single Step.
• The only mutually exclusive Actions within a single Step are Call Section and
SQL Statement.
Action(Execution Hierarchy)
Action(Execution Hierarchy)
Action Types
Program Flow Actions
Program Flow Actions are used to control the execution of your program. With
these Action types you can control the execution of subsequent Sections, Action(s),
or SQL statements depending on the results of a "Do" SQL statement in the form of
a SELECT.
Below are the four types of Program Flow Actions
• Do When
• Do While
• Do Select
• Do Until
Action Types - Do When
• The DO When Action is a SELECT statement that allows subsequent actions
to be executed if any rows of data are returned.
• This Action is similar to a COBOL "IF" statement.
• A DO When statement runs before any other actions in the Step.
• If the DO When statement returns any rows, the next Action will be executed.
If the Do When conditions are not met, the remaining Actions within that Step
are not executed.
• Your program executes a DO When Action only once when the owning Step
executes.
Action Types - Do When
Configurable Properties
1. RE-USE Statement :
Selecting this means the database engine only needs to compile the SQL once, which
reduces SQL overhead.
Options
• Bulk Insert. Holds all the data in a buffer and only performs an insert after a
large volume of rows has gathered in the buffer.
• No. Select this option to disable ReUse. With ReUse off, the Application Engine
runtime process recompiles the SQL statement every time the loop executes. By
default, ReUse will be disabled.
• Yes. Select this option to enable basic ReUse functionality.
Action Types - Do While
• The Do While is identical to the COBOL "WHILE" function. In other words, the
subsequent Actions within the Step are executed in a loop as long as at least one
row is returned by the SELECT statement for the DO While Action.
• If the Do While does not return any rows of data, the Action terminates.
Configurable Properties
1. RE-USE Statement :
(Already Explained in action type Do When)
Action Types - Do Select
• The DO Select Action is a SELECT statement that executes subsequent Actions
once for every row of data that the Do Select returns.
• DO Select can execute a SQL statement for each row returned from the
SELECT statement. The subsequent Actions within the Step are executed in a
loop based on the results of the SELECT statement.
Action Types - Do Select
Configurable Properties
1. RE-USE Statement :
(Already Explained in action type Do When)
Action Types - Do Select
Configurable Properties
2.Do Select Type :
• Select/Fetch Performs a Fetch for each iteration of the loop to get each row from
the SELECT. When a FETCH results in an "end of table", the looping is
complete. It cannot be restarted.
• Re-Select It opens a cursor and fetches the first row. This means that, with Re-
Select, your program processes the "first row" returned from the Select
statement. Cursor gets re-opened for each iteration of the loop.
• Restartable This option is similar to the Select/Fetch in that Application Engine
opens the cursor associated with the DO Select once, and then it performs a
Fetch on each iteration of the loop to get each row from the SELECT. It can be
Restarted.
Action Types - Do Until
Use a Do Until if you want the "processing actions" to execute at least once, and to
execute over and over until a certain condition is true, such as until a SELECT
returns some rows.
• Configurable Properties
1. RE-USE Statement :
(Already Explained in action type Do When)
Action Types - PeopleCode
PeopleCode Actions allow you to take advantage of IF-THEN logic, messaging, File
Layouts, Component Interface and various other features all from within your
Application Engine programs.
Configurable Properties
On Return :
If your PeopleCode program provides a false result, you can have Application Engine
respond by doing one of the following:
• Abort The program issues an error and exits immediately.
• Break The program exits the current Step and Section, and control returns to the
calling Step.
• Skip Step The program exits the current Step, and continues processing at the next
Step in the Section.
Action Types - SQL
Use this Action if you want to perform the following SQL commands on multiple rows:
• UPDATE
• INSERT
• DELETE
• SELECT
The SQL action differs from the Program Flow action , which also contains the SQL
, in that SQL Action does not control the Flow of the Program.
• Configurable Properties
1. RE-USE Statement :
(Already Explained in action type Do When)
Action Types - SQL
Configurable Properties
2.No Rows
In the event that the SQL (INSERT, UPDATE, and DELETE) associated with the SQL
Action does not return any rows, you need to specify what your Application Engine
program should do.
• Abort The program terminates.
• Section Break Application Engine exits the current Section immediately, and control
returns to the calling Step.
• Continue The program continues processing.
• Skip Step Application Engine exits the current Step immediately and moves on to the
next Step.
Action Types - Call section
• Use the Call Section Action to Call Another Section defined in an Application
Engine program.
• You can call a (local) Section defined within your current program, otherwise
Section MAIN would be the only Section executed.
• Also you can make external calls to a Section defined in another Application
Engine program.
• The external Section you intend to call must have its Access property set to Public.
• If a Section's Access property is set to Private, that Section can only be called from
within the same program.
• Call Section is the only supported way to call Application Engine programs or
Sections from other Application Engine programs or Sections.
Action Types - Call section
Configurable Properties
• Section Name If you are calling another Section, you need to specify the
appropriate Section here. Only the names of Public Sections defined in the
program identified in Program ID will appear in the Section Name drop-down
list.
• Program ID Since you can call Sections in the current program or Sections that
exist within other programs, you need to specify the Program ID, or Program
Name, of the program containing the Section you intend to call. The drop-down
list contains all of the program definitions that currently exist.
Action Types - Log Message
• Use this type of Action to write a message to the Message Log.
• The Message Log refers to the PeopleTools table PS_MESSAGE_LOG where
execution messages reside.
Configurable Properties
• Message Set Identifies a message set within the Message Catalog.
• Number Identifies a particular message within a Message Set.
• Parameters A list of comma-delimited values to substitute for %1, %2, and so
on markers in the message text.
Properties of an Application Engine Program
• When you have an Application Engine Program open in the Application
Designer you can view and modify the properties assigned to an entire
program just as you would to a Step or a Section.
• For AE Program use Application designer as you would for designing other
objects.
www.itwisesolutions.com
Program Properties
Properties of State Records
• The Application Engine State Record is the method by which you allocate variables
for your Application Engine program.
• It is also the method by which Section, Steps, and Actions pass values to
subsequent program steps.
• You can think of State Records in Application Engine as global variables without
scope limiting rules.
• Only one record can be the default State Record
• Record Types as SQL and Derived/Work Records
• Process Instance is the only key Field and is used for maintaining session
• Notice the _AET naming convention
Working of State Records
1. When a program starts, it INSERTS a row into the State Record that
corresponds to the Process Instance assigned to that program run. Application
Engine updates the record whenever a COMMIT occurs. When Restart is
enabled and a commit occurs, all State Records that have been updated in
memory will be written to the database, except for derived State Records, which
are instead initialized.
2. Then, after the program completes successfully, Application Engine deletes the
corresponding row in the State Record. There is only one row in the State Record
for each Process Instance, or program. Multiple programs can use the same State
Record, and each program has it's own row based on the unique Process
Instance key.
o To set values in the State Record, you use the %SELECT construct in a SQL
statement or write PeopleCode that references the State Field with the
standard "record.field" notation.
o To reference fields in the State Record you use the %BIND construct.
Temporary Tables
• PeopleSoft batch applications employ the technique of SET processing, and set
processing (in most cases) involves extensive use of temporary tables.
• Temp Tables are used to store transient or intermediate results
• Improve performance for e.g. if you find that multiple times during a run of
program access a small set of rows from a much larger table , you can insert the
necessary rows into a temp table as as initialization task .
• Any Program can access temporary tables.
• When AE “manages ” a dedicated temp table instance , it controls the locking of
table before use and unlocking after use
Temporary Tables
• Instance Count
o It controls the number of physical tables to be created for each dedicated
table for this program during the SQL build procedure in Application
designer
o Typically, you would set this number to equal the number of parallel
program runs that anticipate
o As long as table is keyed to PROCESS_INSTANCE , and the application
SQL includes the Process instance in the where clause, then the table can
be shared among multiple process
• Runtime
o When you are implementing dedicated temporary tables , you must
consider how your program should behave in the event the number of
active processes exceeds the number of dedicated temporary table instance
Why Develop in AE - Utilize the Database
• Temporary records enable set processing o Temp tables let the data base do the work o Foundation for parallel processing o Temp tables are not temporary! o Online and Batch have different temporary tables
Why Develop in AE - Parallel Processing
• Making batch temp tables parallel processing aware o Instance count is the
number of concurrent instances
o Batch Temp tables = Sum of the instance count for each program a table is used
o Naming convention PS_NAME_TMPnn
Why Develop in AE - Batch Temp Tables
• Batch Temporary Table Usage o Each table is reserved separately at program load time. o A single program may get a different instance table number
for each table o Locked by a record entry in a shared table when program is
loading o Programs that can restart retain lock until successful
completion o Table is cleared when loaded (unless it’s the base table) o If no temp tables are available, program may use a shared
base table
Why Develop in AE - Online Temp Tables
• ‘Online’ AE program is one that is started by the CallAppEngine() function call
• Intent is to share code between online and batch • Let Online take advantage of same processing capabilities batch
has o Set processing o Temp tables
• Online is part of a transaction, so no commit
Why Develop in AE - Online Temp Tables
• Online parallel processing o Temp Table Instances (Online) is: Number of temp tables
built for all temp tables used in an App Engine program not designated as batch only
o Temp Table Instances (Total) is: Difference between Total and Online is the number of temp tables built for custom allocation
Why Develop in Application Engine - Temp Tables
• Online Temp Table Usage o Temp table is reserved at CallAppEngine time by a random
distribution algorithm o Same table instance locked for every table o Released when online transaction is committed o In the case of a crash, tables do not remain locked o If no temp tables program will enter a queue and wait o CallAppEngine is available from exit points where a
transaction will happen
Advanced Developments(SET Processing)
• SET Processing
• Set processing is a SQL technique used to process groups, or sets, of rows at
one time rather than processing each row individually
• Set processing allows you apply your business rule directly on the data
(preferably while it resides in a temporary table) in the database using an
UPDATE or INSERT/SELECT statement
• The bulk of the performance gain lies in the fact that the processing occurs in
the database as opposed to pulling the data into the application program,
processing it, and then inserting the results back into the database tables
• Since the data never leaves the database with set processing (whether or not it
remains in the same table), you effectively eliminate the network round trip
and database API overhead required to pull the data into the application
program and then insert the results back into the database.
Advanced Developments(SET Processing)
SET Processing
• Advantages of SET Processing
1. Improved Performance.
1. Minimized (PeopleTools) SQL Overhead
1. Easy Maintenance
1. Leveraging the RDBMS
Advanced Developments(Using Re-Start)
Using Restart
• Application Engine has the built-in ability to save a program state and restart
where it the last commit issued in the case of an abend.
• By default, Application Engine doesn't perform a COMMIT until an entire
program successfully completes.
• Each time that Application Engine issues a Commit with Restart enabled, it
records the current state of the program.
• With Restart, you can commit as often as you like without worrying about the
data.
Advanced Developments(Using Re-Start)
How Restart Works
• The recording of the current state that Application Engine performs is referred
to as a checkpoint.
• So, if a failure occurs at any point in the process, the end user can restart the
program and expect the program to behave in the following manner:
o Ignore the Steps that have already completed up to the last successful
commit.
o Begin processing at the next Step after the last successful commit.
• The ability for Application Engine to "remember" what Steps have already
completed and which Steps have not, is attributed to an important record
called AERUNCONTROL—keyed by Process Instance.
Invoking AE Program
• To invoke or run an Application Engine program, choose one of the
following methods:
• Process Scheduler
• PeopleCode
• Command Line
Invoking AE Program(Process Scheduler)
Invoking AE Program(Process Scheduler)
Invoking AE Program(Peoplecode)
• CallAppEngine
• To call a particular Application Engine program synchronously
from a page using PeopleCode, you need to use the CallAppEngine()
function in your SavePreChange or SavePostChange PeopleCode.
• The basic syntax for CallAppEngine() is as follows:
CallAppEngine(applid [, statereclist ]);
Debugging AE Program
1. Execute the Application Engine program that you wish to debug.
2. At the Application Engine Debugger prompt, enter the appropriate command that
enables the desired debugging option.
Application Engine Debugger - enter command or type ? for help.
AETESTPROG.MAIN.STATS> ?
Debug Commands:
(Q)uit Rollback work and end program
E(X)it Commit work and end program (valid between steps)
(C)ommit Commit work (valid between steps)
(B)reak Set or remove a break point
(L)ook Examine state record fields
(M)odify Change a state record field
(W)atch Set or remove a watch field
(S)tep over Execute current step or action and stop
Step (I)nto Go inside current step or called section and stop
Step (O)ut of Execute rest of step or called section and stop
(G)o Resume execution
(R)un to commit Resume execution and stop after next commit
Application Engine Execution
Application Engine
Process Scheduler
Execute
AE Constructs
Peoplecode
Program Files
PS
Database
Process Process
Command Peoplecode Call
Logon
Retrieve
AE Program
Definitions
Issue AE program
SQL
PSAE.exe
AE Run Push Button
Difference b/n AE an SQR
• Restart Facility • Inbuilt Tool
• Graphical User Interface
Thank You