Application Engine

56
Application Engine

Transcript of Application Engine

Page 1: Application Engine

Application Engine

Page 2: 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

Page 3: Application Engine

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.

Page 4: Application Engine

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.

Page 5: Application Engine

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.

Page 6: Application Engine

www.itwisesolutions.com

Sample AE Program(Definition View)

Page 7: Application Engine

Structure Of An AE Program

• Sections

• Steps

o Actions

Page 8: Application Engine

www.itwisesolutions.com

Section

• Platform

• Effective Date and Status

• Auto Commit and Access Type

• Section Name (e.g. MAIN, etc) and Description

• Market

Page 9: Application Engine

Section Properties

• Section Name (e.g. MAIN, etc) and Description

• Market

• Platform

• Effective Date

• Effective Status : Active & Inactive

• Auto Commit

• Access Type

Page 10: Application Engine

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.

Page 11: Application Engine

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.

Page 12: Application Engine

www.itwisesolutions.com

Step(Design View)

Page 13: Application Engine

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.

Page 14: Application Engine

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.

Page 15: Application Engine

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.

Page 16: Application Engine

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.

Page 17: Application Engine

Action(Execution Hierarchy)

Page 18: Application Engine

Action(Execution Hierarchy)

Page 19: Application Engine

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

Page 20: Application Engine

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.

Page 21: Application Engine

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.

Page 22: Application Engine

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)

Page 23: Application Engine

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.

Page 24: Application Engine

Action Types - Do Select

Configurable Properties

1. RE-USE Statement :

(Already Explained in action type Do When)

Page 25: Application Engine

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.

Page 26: Application Engine

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)

Page 27: Application Engine

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.

Page 28: Application Engine

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)

Page 29: Application Engine

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.

Page 30: Application Engine

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.

Page 31: Application Engine

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.

Page 32: Application Engine

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.

Page 33: Application Engine

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.

Page 34: Application Engine

www.itwisesolutions.com

Program Properties

Page 35: Application Engine

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

Page 36: Application Engine

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.

Page 37: Application Engine

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

Page 38: Application Engine

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

Page 39: Application Engine

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

Page 40: Application Engine

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

Page 41: Application Engine

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

Page 42: Application Engine

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

Page 43: Application Engine

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

Page 44: Application Engine

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

Page 45: Application Engine

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.

Page 46: Application Engine

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

Page 47: Application Engine

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.

Page 48: Application Engine

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.

Page 49: Application Engine

Invoking AE Program

• To invoke or run an Application Engine program, choose one of the

following methods:

• Process Scheduler

• PeopleCode

• Command Line

Page 50: Application Engine

Invoking AE Program(Process Scheduler)

Page 51: Application Engine

Invoking AE Program(Process Scheduler)

Page 52: Application Engine

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 ]);

Page 53: Application Engine

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

Page 54: Application Engine

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

Page 55: Application Engine

Difference b/n AE an SQR

• Restart Facility • Inbuilt Tool

• Graphical User Interface

Page 56: Application Engine

Thank You