PeopleTools Tip — App Engine Restart If you get …

PeopleTools Tip — App Engine Restart

If you get an error message like this, you either need to restart the specific instance that abended, or remove the restart row from the table.

PeopleTools 8.46 – Application Engine Server

Copyright (c) 1988-2006 PeopleSoft, Inc.

All Rights Reserved

PSAESRV started service request at 14.19.05 2006-09-19

All Processing Suspended: Restart OPRID=PS, RUNID=AppEngName, PI=499 (108,503)

PSAESRV completed service request at 14.19.05 2006-09-19

Disable Restart:
You can disable the restart on the properties of the application engine, but that will not help when the Application Engine has already abended. Remember, the disable restart prevents the app engine from writing to the restart table when the program abends; it does not prevent it from checking the table to see if another instance is waiting to restart.

In other words, once an application has abended, disable restart will not allow you to rerun the program without restarting.

AERUNCONTROL Record:
The restart status is stored in the record AERUNCONTROL. If you receive the message requiring you to restart instead of rerun, then there is a row in this table for the program you are running and the run control that you are using.

Fields:
PROCESS_INSTANCE — instance that abended
OPRID — your user name
RUN_CNTL_ID — run control used when it abended
AE_APPLID — Application Engine program name

Fixing the Error:
To fix the error, you either have to delete the row from the table or restart the original process instance that abended.

SELECT * FROM PS_AERUNCONTROL WHERE AE_APPLID = ‘<App Engine Name>

Update:
Ray pointed out that PeopleSoft has provided an online way to fix the problem. You can do it from the page: PeopleTools > Application Engine > Manage Abends

Deleting the Row:

If you are the only one with an abended program, you can just truncate the whole table:

TRUNCATE TABLE PS_AERUNCONTROL

Or, if you want to just affect your program, you can do something more like this:

DELETE FROM PS_AERUNCONTROL WHERE OPIRD = ‘<username>‘ AND RUN_CNTL_ID = ‘<run control>

Tip — PeopleTools: Application Engine Logging Ap…

Tip — PeopleTools: Application Engine Logging

Application Engines have the ability to write to the “Redirected Terminal Output”. But, everything that is written into it must be written with a MessageBox command. That results in a blank line between messages and the infamous message set ids at the end.

If you want any formatting at all you should open a file and use the File object to create the file.

First, declare the variable in every PeopleCode program in your App Engine:

Component File &logFile;

Declare the variable as a component or global variable so that it stays around for the life of the App Engine program. Otherwise, you will have to keep reopening the file to write to it in each PeopleCode step.

Second, create an Init step in the Main section that will open the file:

&logFile = GetFile(GetEnv(“PSPRCSLOGDIR”) “\logFile.txt”, “W”, %FilePath_Absolute);

PSPRCSLOGDIR is the environment variable that is set to the path where the files should go. Every file that is put in this path will be copied to the web server so that the user can see it.

You can use %Filepath_Relative in many cases, but sometimes the relative path does not point to the proper folder, particullarly on older PeopleSoft systems. I have had more success with PSPRCSLOGDIR.

Third, close the file in a step at the end of the Main section:

&logFile.close();

Finally, write what you want to the file with:

&logFile.writeline(“This is a log statement!”);

You have complete control of this file and can make it say what you want it to.