Showing posts with label PeopleCode Events. Show all posts
Showing posts with label PeopleCode Events. Show all posts

Thursday, July 9, 2020

Core Technical Course Content

Day#ContentDuration
1PeopleSoft Technical Overview
Application Designer Overview
What all we do in Application Designer
2 Hours
2Introduction to PeopleCode
Application Packages, Classes, Methods and other PeopleCode Elements
What are the common methods we use for business requiremnts
3
Overview
3 Hours
App classes Vs functional Library
Elements of App Classes and their uses
Creating an App Package and App Class
App EngineIntroduction
Why do we prefer Application Engine over SQR
Section, Step and Action
Different types of Actions and how and when they should be used
Execution priority and flow of Actions in a Step
State Records and Temp Records when and how to use them
File Layouts and and how to use them in Application Engine
Developing your First Application Engine Program
Creating Process Definition to run the Program
2 Hours
App EngineDeveloping an Inbound Interface using Application Engine
Developing an Outbound Interface using Application Engine
2 Hours
App EngineParallel Processing Overview
For what business scenarios Parallel Processign to be used
How to Implement Parallel Processing in Application Engine
1. 5 Hours
App EngineSet Processing Overview
For what business scenarios Set Processing to be used
How to Implement Set Processing in Application Engine
1.5 Hours
Page DesignWhat are Pages
What are Sub Pages and how and when they are used
What are Secondary Pages and how and when they are used
Designing a simple and complex page
What are the Components
How to add multiple pages in a Component
Deferred and Interactive Processing
What are the Menues
What are the Menue Bars and BarItems
Creating Menues
Understanding record structure in a Page
Creating a Business Transaction using Page, Component and Menue
Registering a Component through Application Designer
3 Hours
Component BufferUnderstanding Component Buffer
How CB Works
Read/Write data from/to Component Buffer
Reading/Writing data from Records fields in CB at various levels
RowSet Class and how we use it in CB
1.46 Hours
PeopleCode EventsIntroduction of PeopleCode Event
Different Scopes of PeopleCode Events
PeopleCode Events Flow
How to View and Write PeopleCode Events at various levels
What are all the events fired and how they effect the page when we open a page in PIA
2 Hours
11Detailed Discussion on follwoing PeopleCode Events:
Activate
Prebuild
Postbuild
SavePreChange
SavePostChange
SearchInit
SearchSave
Developing a page for a business scenario where all these events have been used
3 - 4 Hours
12Detailed Discussion on follwoing PeopleCode Events:
FieldEdit
FieldChange
FieldDefault
FieldFormula
RowInit
RowInsert
RowDelete
RowSelect
Developing a page for a business scenario where all these events have been used
3 - 4 Hours
13Introduction to Component Interface
Why the CI is extremely important in uploading the data
How does CI works
Properties and in Methods in CI
When and how the CI should be used
How many ways we can call the CI
2 Hours
14Developing an Upload Program using CI and App Engine4 Hours
Migration Overview and project life-cycle
Understand the objects and their types
Inserting objects into project
Creating file references
Understanding data migration
15Understanding DMS scripts and how to create them3 Hours
Upgrade flags and how they work
Creating Change package
Comparing and migrating the project in target instance
Reviewing and updating upgrade flags
Copying the project in the target instance
Building the project
Importing the data through DMS
Converting Classic to fluid
Converting Pages in fluid
6 Hours
Working on Page Layout in fluid
Working on Scroll area in fluid
Working on other page controls
Create layout page
Working on search record for fluid
Creating Component
Creating pivot grid for search functionality
Fluid Tiles
Tiles overview and Core Concepts
2 Hours
Types of creating fluid tiles
Creating tiles through Tile Wizard
Creating tiles through Portal Registry
Adding Tiles to homepage and the security configuration

Sunday, January 28, 2018

Behavior of think-time Functions in PeopleSoft

Some issues are uncommon, weird and hard to understand what exactly went wrong. One such weird issue in peoplesoft is related to Think-time functions. I know many of my colleagues who were stressed to the core and said ‘Its time to leave this planet’ because of this peculiar issue in Peoplesoft. Come!! Let’s sort this one out.

Think-time PeopleCode event (<think-time event>), but a SQL update has occurred in the commit interval.

In this article, let’s see what think-time functions are, and some of the limitations that require our attention when dealing with such functions.


Basically, any function that waits for user input or external process to complete is a think time function. Messagebox, for instance, waits for user to click Ok or Cancel button… Exec() function running in synchronous mode which suspends processing until the triggered process is complete.

Listed below are the think-time function in PS

  • DoCancel
  • DoModal
  • DoModalComponent
  • Exec(Only when it runs in Synchronous Mode)
  • AddAttachment, MAddAttachment, ViewAttachment, DetachAttachment
  • InsertImage, CropImage
  • CreateObject, ObjectDoMethod, ObjectSetProperty, ObjectGetProperty(When object Required User- action)
  • Prompt
  • RemoteCall
  • RevalidatePassword
  • WinExec(Only in Synchronous mode)
  • Winmessage and Messagebox(Depending on Style Parameter)
  • Calls to an External DLL

Think-time functions in Application Engine

Are you using Exec() or RemoteCall() in AE to run a batch file or a remote process? You should consider the following then:

Exec(&unixCmd, %Exec_Asynchronous + %FilePath_Absolute); /*Running in Asynchronous mode*/
&ExitCode = Exec(&unixCmd, %Exec_Synchronous + %FilePath_Absolute); /*Running in Synchronous mode*/

Running Exec() in Asynchronous mode is not a think-time function, as the AE process does not wait for the invoked command to complete. With Synchronous mode it is different, because the AE process needs to wait for the invoked command to complete. OH!! That’s Pathetic.. Don’t expect it to wait for you if you haven’t committed pending transactions, you will end up in think-time event error. 

The simple solution here is to issue a Commit before Exec() is invoked. If AE was written to be Restartable, then make sure that the previous step is committed before the step executing Exec. For AE with ‘Disable Restart’ checked, a CommitWork() has to be issued before Exec(). Easy right?

Think-time functions in Component Interface

Think-time functions are usually suppressed and ignored in CI. So, in such cases better to write a separate logic for CI.

If %CompIntfc then
/*Logic for CI*/
Else
/*Get user Input*/
End-if;

Think-time Functions in Peoplecode

Winmessage() and MessageBox() behaves as a think-time function only when the style parameter specifies more than one button. When you make the style parameter to show only Ok Button(0), then it behaves like a normal function. If style is neglected, Winmessage() displays both Ok and Cancel Button which acts as a think-time function. Hence you must always specify with style parameter like Winmessage(“Test Message”, 0) to show only Ok button.

Sometimes you would have noticed that your MessageBox or Winmessage does not work before call to a Transfer or TransferExact function. If you want to display your message, then change the style to show OK and Cancel Button.

It’s not so hard to debug when you receive error in peoplecode related to think-time functions. PeopleBooks suggests us not to use think-time functions in SavePreChange, Workflow, RowSelect, SavePostChange, and any peoplecode event that executes as a result of ScrollSelect, ScrollSelectNew, RowScrollSelect, or RowScrollSelectNew function call, and any peoplecode event that executes as a result of Rowset class Select or SelectNew method. If you are using think-time functions in one of the above events, just get red of it.