Component Processor

The Component Processor is the PeopleTools runtime engine that controls processing of an application from the time that a user requests a component from an application menu until the database is updated and processing of the component is complete.

The component processor manages the flow of data processing as users enter information on pages.Issues INSERT,DELETE,and UPDATE statements to maintain data in the database and SELECT statements to retrieve data.

 Event flow
1.    Searchinit
2.  Searchsave
3.  Rowselect
4.  Prebuild
5.  Field Default
6.  Field Formula
7.  RowInit
8.  PostBuild
9.  Activate
10.FieldEdit
11. FieldChange (PrePopup, ItemSelected)
12. RowInsert
13. RowDelete
14. SaveEdit
15. SavePreChange.
16. WorkFlow
17. SavePostChnage.
Difference Between Save Pre Change And Save Post Change? 
As I know that Save Pre Change is the last event where we can save/manipulate the Component Buffer data. after this event we can not modify our component buffer data. 
Save Post Change is for update/insert/Delete the data in record which are not associated with Component buffer.  But we can manipulate the other record (Which are not associated with Component buffer) also in Save Pre Change so what is the use?  
 SavePreChange Event -The SavePreChange event is initiated after SaveEdit completes without error.SavePreChange PeopleCode provides one final opportunity to manipulate data before the system updates the database.In Save Prechange we can get the data from Component Buffer for that particular Component.
 SavePostChange Event – SavePostChg is different from all other Peoplecode events since it is performed after the updates are made on the database.SavePost change Component Buffer is cleared we have to get data from Database and this is used to update values outside the database.
Explain about the component buffer and data buffer?
Component Buffer contains all the Data of active component. The data buffer is used to store data added from sources other than the component, such as from a PeopleSoft Application Engine program, an application message, and so on.
 PeopleTools 8 provides an alternative to the scroll level, row, and field components in the form of the data buffer classes Rowset, Row, Record, and Field, which you reference using dot notation with object methods and properties.


Creating the User Profiles and assigning the Roles and Permissions

Creating the Permission List (Collection of roles)
-->Open the PS SignOn page.
-->Click on People Tools.
-->Click On security.
-->Click on permissions & Roles.
-->Click on Permission Lists.
-->Click on Add a New Value.
-->Enter the description.
-->In Permission List Homepage Select Human Resources.
-->Click on Save.
-->Click on Page Tab.
-->Select the Menu Name (Your menu name)
-->Click on Edit components
-->Click on Edit pages
-->Click on select all
-->Click on Ok.
-->Click on Save.
-->Click on PeopleTools Tab.
-->In the PeopleTools Permissions select the necessary.
-->In Data Archival Select the necessary
-->Click on Save.
-->Click on Process Tab
-->Click on Process Group Permissions
-->Select the ALLPAGES, ALLPANLS, FEDALL.
-->In the Allow Process Request:
-->In View By select Owner and In Update By select Owner.
-->Click on Ok.
-->Click on save.
-->Click on Web Libraries Tab.
-->Select WEBLIB PORTAL.
-->Click On save.

Creating Roles (Role is a collection of user profiles)
-->Now Click on Roles
-->Click on Add New Role.
-->Select the Permission List (Ex:Harsha)
-->Click On save

Creating User Profiles:
-->Click on User Profiles.
-->Click on user profiles.
-->Click on Roles Tab.
-->Click On +
-->Select the Role Name and select it.
-->Click on Save.

PeopleSoft Query Security Navigations

  Select PeopleTools

  Select Security  Query Security
  Click on Query Access Manager.
  Click on Search.
  Select the Access Group which is already exists in the database (ex:-AD ACESS GROUP-         Admissions Access Group)

  Select any one of the Leaf Node
  Click on insert child record.
  Click on Search
  Enter the table name (your own table name that u have created before)
  Click on Look Up
  Select the table (which u wants to add)
  Click an Add.
  Click on Save.
  Click on Query Access List Cache under Menu.
  Select the Enable Access List Cache
  Click on Run.
  Click on Ok.
  Sign Out from PS Sign-in page.
  Open the Application Designer.
  Select Go  Click on Query.
  The list of records will appear in the Left hand side.
  Search your record which is added before.
  Send Tree Change Message will be selected by default.
  Click on OK.

Compare PeopleSoft 8.0 to 8.3 to 8.8 to 8.9

General HRMS Enhancements

8.0 Functionality
Web-based architecture.  Browser based deployment.

8.3 Functionality
Continued global expansion of HRMS solutions, adding new countries to the list of supported locations and enhancing our products in those regions already familiar with PeopleSoft
Improved PeopleSoft HRMS Collaborative Applications for better, faster decision making at the desktop by including self-service features and integrating more content from industry leading suppliers.
PeopleSoft Recruiting Solutions combines several applications to provide a fully integrated, end-to-end recruitment tool.

8.8 Functionality
PeopleSoft 8.8 HRMS features portal navigation, a new and more intuitive way to navigate around your HRMS application.
PeopleSoft 8.8 HRMS provides enhanced address formatting for all countries as well as address search functionality.

8.9 Functionality
 Person Model – PeopleSoft has redesigned the HRMS architecture to support the storing and tracking of all person types, including contingent workers and persons of interest, within one centralized repository.
Configurable Search/Match – HRMS 8.9 delivers a company-configurable search and match wherever people can be added into the application. The search results page is also configurable.
Configurable Action/Reasons – HRM 8.9 delivers configurable actions and action reasons. Actions have been moved from the translate table and relocated to their own table.

Dynamic Views as Prompt Tables

Dynamic Views are an excellent object type provided by Peoplesoft - a pseudo view that can take any shape! They are excellent candidates where the SQL condition of a view changes dynamically according and are not even a database objects.
There are two major limitations I have come across when you use a Dynamic View as a prompt:
1. If the SQL of the dynamic view contains joins and if the search fields are used in the join.
2. If the SQL of the dynamic view contains joins.

What causes the failure is that the component processor takes the search fields from the prompt and appends to the SQL statement like 'and = '. Now, unfortunately the processor does not do any aliasing which causes the common 'ambiguous column definition' SQL error.

To overcome this, either put the SQL in a view and query from the view or better, treat the SQL as an inline view and query from the inline view.
For example, if the initial SQL of the DV was something like:
SELECT EMPLID FROM PSOPRDEFN UNION SELECT EMPLID FROM PSOPRDEFN, for this to work in a dynamic view, it has to be called from an inline view like:
SELECT EMPLID FROM (SELECT EMPLID FROM PSOPRDEFN UNION SELECT EMPLID FROM PSOPRDEFN)

Stand alone RowSet


STAND ALONE ROWSET
In PeopleCode a standalone rowset is an independent rowset object not associated with the component buffer. They allow you to work with data outside of the buffer by getting whatever additional data you need form the database. In this sense they replace the functionality of derived records which were once used as place holders to store data not directly associated with the component. Because a standalone rowset is standalone, there is no automatic action by the component processor on it. This means that if a standalone rowset is used to manipulate data (inserts/updates), code will need to be added to manually save the changes. 

Code to create a standalone rowset object
Local Rowset &rsExample; 
&rsExample = CreateRowset(Record.REC1);

Filling a standalone rowset
The Fill method in the Rowset class is used to populate the rowset. This parameters to the fill method are a Where clause and bind values. &rExample.Fill("where FIELD1 = :1", REC2.FIELD2);


The following example writes a file using a file layout that contains parent-child records:

Local File &MYFILE; 
Local Rowset &rsBusExp, &rsBusExpPer, &rsBusExpDtl; 
Local Record &rBusExp, &rBusExpPer, &rBusExpDtl; 
Local SQL &SQL1, &SQL2, &SQL3; 
&rBusExp = CreateRecord(Record.PERSONAL_DATA); 
&rBusExpPer = CreateRecord(Record.BUS_EXPENSE_PER); 
&rBusExpDtl = CreateRecord(Record.BUS_EXPENSE_DTL); 

&rsBusExp = CreateRowset(Record.PERSONAL_DATA, 
CreateRowset(Record.BUS_EXPENSE_PER, 
CreateRowset(Record.BUS_EXPENSE_DTL))); 
&rsBusExpPer = &rsBusExp.GetRow(1).GetRowset(1); 

&MYFILE = GetFile("c:\temp\BUS_EXP.out", "W", %FilePath_Absolute); 
&MYFILE.SetFileLayout(FileLayout.BUS_EXP_OUT); 
&EMPLID = "8001"; 

&SQL1 = CreateSQL("%selectall(:1) where EMPLID = :2", &rBusExp, &EMPLID); 
&SQL2 = CreateSQL("%selectall(:1) where EMPLID = :2", &rBusExpPer, &EMPLID); 

While &SQL1.Fetch(&rBusExp) 
&rBusExp.CopyFieldsTo(&rsBusExp.GetRow(1).PERSONAL_DATA); 
&I = 1; 
While &SQL2.Fetch(&rBusExpPer) 
&rBusExpPer.CopyFieldsTo(&rsBusExpPer(&I).BUS_EXPENSE_PER); 
&J = 1; 
&SQL3 = CreateSQL("%selectall(:1) where EMPLID = :2 
and EXPENSE_PERIOD_DT = :3", &rBusExpDtl, &EMPLID, 
&rsBusExpPer(&I).BUS_EXPENSE_PER.EXPENSE_PERIOD_DT.Value); 
&rsBusExpDtl = &rsBusExpPer.GetRow(&I).GetRowset(1); 
While &SQL3.Fetch(&rBusExpDtl) 
&rBusExpDtl.CopyFieldsTo(&rsBusExpDtl(&J).BUS_EXPENSE_DTL); 
&rsBusExpDtl.InsertRow(&J); 
&J = &J + 1; 
End-While; 

&rsBusExpPer.InsertRow(&I); 
&I = &I + 1; 
End-While; 
&MYFILE.WriteRowset(&rsBusExp); 
End-While; 
&MYFILE.Close();

Out Put for the above program

CC8001 03/01/199802/15/1998011200 USDConference 00001 
CC8001 03/01/199802/16/19980220000 JPYConference 00001

The following code shows an example of reading in a file and inserting the rows into the database:
Local File &MYFILE; 
Local Rowset &rsBusExp, &rsBusExpPer, &rsBusExpDtl; 
Local Record &rBusExp, &rBusExpPer, &rBusExpDtl; 
Local SQL &SQL1; 

&rBusExp = CreateRecord(Record.PERSONAL_DATA); 
&rBusExpPer = CreateRecord(Record.BUS_EXPENSE_PER); 
&rBusExpDtl = CreateRecord(Record.BUS_EXPENSE_DTL); 

&rsBusExp = CreateRowset(Record.PERSONAL_DATA, 
CreateRowset(Record.BUS_EXPENSE_PER, 
CreateRowset(Record.BUS_EXPENSE_DTL))); 

&MYFILE = GetFile("c:\temp\BUS_EXP.out", "R", %FilePath_Absolute); 
&MYFILE.SetFileLayout(FileLayout.BUS_EXP_OUT); 

&SQL1 = CreateSQL("%Insert(:1)"); 

&rsBusExp = &MYFILE.ReadRowset(); 
While &rsBusExp <> Null; 
&rsBusExp.GetRow(1).PERSONAL_DATA.CopyFieldsTo(&rBusExp); 
&rsBusExpPer = &rsBusExp.GetRow(1).GetRowset(1); 
For &I = 1 To &rsBusExpPer.ActiveRowCount 
&rsBusExpPer(&I).BUS_EXPENSE_PER.CopyFieldsTo(&rBusExpPer); 
&rBusExpPer.ExecuteEdits(%Edit_Required); 
If &rBusExpPer.IsEditError Then 
For &K = 1 To &rBusExpPer.FieldCount 
&MYFIELD = &rBusExpPer.GetField(&K); 
If &MYFIELD.EditError Then 
&MSGNUM = &MYFIELD.MessageNumber; 
&MSGSET = &MYFIELD.MessageSetNumber; 
End-If; 
End-For; 
Else 
&SQL1.Execute(&rBusExpPer); 
&rsBusExpDtl = &rsBusExpPer.GetRow(&I).GetRowset(1); 
For &J = 1 To &rsBusExpDtl.ActiveRowCount 
&rsBusExpDtl(&J).BUS_EXPENSE_DTL.CopyFieldsTo(&rBusExpDtl); 
&rBusExpDtl.ExecuteEdits(%Edit_Required); 
If &rBusExpDtl.IsEditError Then 
For &K = 1 To &rBusExpDtl.FieldCount 
&MYFIELD = &rBusExpDtl.GetField(&K); 
If &MYFIELD.EditError Then 
&MSGNUM = &MYFIELD.MessageNumber; 
&MSGSET = &MYFIELD.MessageSetNumber; 
End-If; 
End-For; 
Else 
&SQL1.Execute(&rBusExpDtl); 
End-If; 
End-For; 
End-If; 
End-For; 
&rsBusExp = &MYFILE.ReadRowset(); 
End-While; 
&MYFILE.Close();

Difference between Transcation Tables and Control Tables


Transaction tables store data about day-to-day activities. Because of this, these tables are updated frequently and can be quite large. The type of transaction varies, such as invoices, paychecks, employee names and addresses, job history, benefits data.

Information in transaction tables is organized and stored by Business Unit.

Control tables store information that define the accounting structure and processing rules that are used when transactions are entered into your PeopleSoft applications. Control tables include master lists such as customers, vendors, products, country and location tables. It is important to note that Control tables are static, meaning they only change when you perform specific maintenance on them.

Control table information is organized and stored by a set identifier, commonly called a SetID.

Set ID and Business Unit

Set ID and Business Unit

SetID
An identification code that represents a set of control table information or table sets. Set Ids enable the sharing of a set of control table information across two or more Business Units.

Table sets enable you to share control table information and processing options among business units. The goal is to minimize redundant data and system maintenance tasks. When you assign a setID to a record group in a business unit, you indicate that all of the tables in the record group are shared between that business unit and any other business unit that also assigns that setID to
that record group. For example, you can define a group of common job codes that are shared between several business units. Each business unit that shares the job codes is assigned the same setID for that record group."

Business Unit
An identification code that represents a high-level organization of business information. You can use a business unit to define regional or departmental units within a larger organization.

Business Unit organizes your company or your organization, SetIDs help you organize your data within the system. The HRMS system uses tables (Control Tables or Prompt Tables) that use a high-level key that enables you to identify and retrieve data from the system. A secondary high-level key, referred to as a SetID, has also been added on various tables. SetIDs are simply the labels used to identify a TableSet. Business Unit and SetID functionality in PeopleSoft HRMS also provides you with a higher business level for reporting purposes and other business data roll-up.

People Payroll Tables


PS_STATE_TAX_DATA
PS_GENL_DEDUCTION
PS_BAL_ADJ_UI_CAN
PS_CAN_CHECK_YTDPS_CAN_DED_BALANCE
PS_CAN_ERN_BALANCE
PS_CAN_TAX_BALANCE
PS_CAN_TAX_DATA
PS_CHECK_YTDPS_DEDUCTION_BAL
PS_EARNINGS_BAL
PS_FED_TAX_DATA
PS_TAX_BALANCE
PS_LOCAL_TAX_DATAPS_BAL_ADJ_ARR
PS_BAL_ADJ_CHK
PS_BAL_ADJ_CN_CHK
PS_BAL_ADJ_CN_DED
PS_BAL_ADJ_CN_ERN PS_BAL_ADJ_CN_TAX
PS_BAL_ADJ_DED
PS_BAL_ADJ_ERN
PS_BAL_ADJ_GRN
PS_BAL_ADJ_TAXPS_DED_ARREARS
PS_GARN_RULE
PS_GARN_SCHED
PS_GARN_SPEC
PS_GENL_DED_CD
Complete PeopleSoft Tables
PS_EMPLOYEES
PS_EMPLOYEES_LNG
PS_EMPLOYMENT
PS_EMPLOYMENT_LNG
PS_EMPLOYMENT_LNG1
PS_EMPLOYMENT_LNG2
PS_EMPLOYMENT_LNG3
PS_HS_EMPLOYMENT
PS_HS_EMPL_REL_CAN
PS_HS_EMPL_REL_LNG
PS_HS_EMPL_SUB_CAN
PS_HS_EMPL_SUB_LNG
PS_INJ_CLMADDR_CAN
PS_JOB, PS_PERSONAL_DATA
PS_PERSONL_DTA_LNG
PS_PERS_DATA_AET
PS_PERS_DATA_EFFDT
PS_PERS_DTAEFF_LNG
PS_PERS_NID
PS_JOB_EARNS_DIST
PS_JOB_APPROVALS
PS_STATE_TAX_DATA
PS_GENL_DEDUCTION
PS_BAL_ADJ_UI_CAN
PS_CAN_CHECK_YTD
PS_CAN_DED_BALANCE
PS_CAN_ERN_BALANCE
PS_CAN_TAX_BALANCE
PS_CAN_TAX_DATA
PS_CHECK_YTD
PS_DEDUCTION_BAL
PS_EARNINGS_BAL
PS_FED_TAX_DATA
PS_TAX_BALANCE
PS_LOCAL_TAX_DATA
PS_BAL_ADJ_ARR
PS_BAL_ADJ_CHK
PS_BAL_ADJ_CN_CHK
PS_BAL_ADJ_CN_DED
PS_BAL_ADJ_CN_ERN
PS_BAL_ADJ_CN_TAX
PS_BAL_ADJ_DED
PS_BAL_ADJ_ERN
PS_BAL_ADJ_GRN
PS_BAL_ADJ_TAX
PS_DED_ARREARS
PS_GARN_RULE
PS_GARN_SCHED
PS_GARN_SPEC
PS_GENL_DED_CD
PS_BAS_PARTIC
PS_BAS_PARTIC_COST
PS_BAS_PARTIC_DPND
PS_BAS_PARTIC_INVT
PS_BAS_PARTIC_OPTN
PS_BAS_PARTIC_PLAN
PS_BENEF_COMMENT
PS_BEN_PROG_PARTIC
PS_DEPENDENT_BENEF
PS_DISABILITY_BEN
PS_FSA_BENEFIT
PS_FSA_PAYMENT
PS_HEALTH_BENEFIT
PS_HEALTH_DEPENDNT
PS_LEAVE_ACCRUAL
PS_LEAVE_PLAN
PS_LIFE_ADD_BEN
PS_LIFE_ADD_BENEFC
PS_PENSION_BENEFC
PS_PENSION_PLAN
PS_RTRMNT_PLAN
PS_SAVINGS_BENEFIC
PS_SAVINGS_INVEST
PS_SAVINGS_PLAN


PS_VACATION_BEN

PeopleSoft Employee Data Table

PS_EMPLOYEES
PS_EMPLOYEES_LNG
PS_EMPLOYMENT
PS_EMPLOYMENT_LNG
PS_EMPLOYMENT_LNG1
PS_EMPLOYMENT_LNG2
PS_EMPLOYMENT_LNG3
PS_HS_EMPLOYMENT
PS_HS_EMPL_REL_CAN
PS_HS_EMPL_REL_LNG
PS_HS_EMPL_SUB_CAN
PS_HS_EMPL_SUB_LNG
PS_INJ_CLMADDR_CAN
PS_JOB
PS_PERSONAL_DATA
PS_PERSONL_DTA_LNG
PS_PERS_DATA_AET
PS_PERS_DATA_EFFDT
PS_PERS_DTAEFF_LNG
PS_PERS_NID
PS_JOB_EARNS_DIST
PS_JOB_APPROVALS
PS_BEN_PROG_PARTIC
PeopleSoft Base Benefits Tables
PS_BAS_PARTIC
PS_BAS_PARTIC_COST
PS_BAS_PARTIC_DPND
PS_BAS_PARTIC_INVT
PS_BAS_PARTIC_OPTN
PS_BAS_PARTIC_PLAN
PS_BENEF_COMMENT
PS_BEN_PROG_PARTIC
PS_DEPENDENT_BENEF
PS_DISABILITY_BEN
PS_FSA_BENEFIT
PS_FSA_PAYMENT
PS_HEALTH_BENEFIT
PS_HEALTH_DEPENDNT
PS_LEAVE_ACCRUAL
PS_LEAVE_PLAN
PS_LIFE_ADD_BEN
PS_LIFE_ADD_BENEFC
PS_PENSION_BENEFC
PS_PENSION_PLAN
PS_RTRMNT_PLAN
PS_SAVINGS_BENEFIC
PS_SAVINGS_INVEST
PS_SAVINGS_PLAN
PS_VACATION_BEN



Tables (PeopleTools.HRMS)

Core payroll tables are required to implement the PeopleSoft Payroll application, including organization tables, compensation and earnings tables, deduction tables, pay calendar tables, garnishment tables, vendor tables, general ledger interface, tax tables, retroactive processing, and tip allocation. PeopleSoft updates tax tables annually.

PeopleTool Table

* PSPROJECTDEFN — Project header table
* PSPROJECTITEM — Definitions in the project 

Peoplecode Table

* PSPCMTXT  Stores a read-only version of the PeopleCode.
* PSPCMNAME —Record searched when using ‘Find Definition References’ within App Designer.

* PSPCMPROGActual code itself is stored in the PROGTXT.

Fields
* PSDBFIELD — Fields in the system
* PSXLATITEM — Translate Values 

Records
* PSRECDEFN — Record header table
* PSRECFIELD — Fields in the record (subrecords not expanded)
* PSRECFIELDALL — Fields in the record (subrecords expanded)
* PSKEYDEFN — Indexes
* PSTBLSPCCAT — Tablespaces
* PSRECTBLSPC — Records’ tablespace assignments 

Pages
(Note: Pages still have the name panels in the PeopleTools table names)
* PSPNLDEFN — Page header table
* PSPNLFIELD — Page controls (field types/FIELDTYPE)
* PSPNLHTMLAREA — Static HTML Areas on Pages 

Components

(Note: Components still have the name panel group in the PeopleTools table names)

* PSPNLGRPDEFN — Component header table
* PSPNLGROUP — Pages in the components 

Component Interface

* PSBCDEFN — header record; one row for each component interface
* PSBCITEM — one row for each property 

Menus

* PSMENUDEFN — Menu header table
* PSMENUITEM — Items (components) on the menu 

Security

* PSCLASSDEFN — Permission List header table
* PSAUTHITEM — Menu items granted security by permission lists
* PSROLEDEFN — Role header table
* PSROLECLASS — Permission Lists in roles
* PSOPRDEFN — User ID header table
* PSROLEUSER — Roles granted to users 

Process Scheduler

* PS_PRCSDEFN — Process Definition Header
* PS_PRCSDEFNGRP — Process Group
* PS_PRCSDEFNPNL — Component
* PS_PRCSJOBDEFN — Job Header
* PSPRCSRQST — Process Request Instances
* PS_PRCSJOBITEM — Job Processes 

Portal

* PSPRSMDEFN — Content References and Folders
* PSPRUHTABPGLT — Portal User HP Tab Pagelet 

Change Control

* PSCHGCTLHIST — shows history of locked definitions with project name, incident, and description
* PSCHGCTLLOCK — shows definitions that are currently locked 

Application Engine

* PSAEAPPLDEFN — header record; 1 row per app engine
* PSAEAPPLSTATE — state records assigned to app engines
* PSAEAPPLTEMPTBL — temp tables assigned to app engines
* PSAESECTDEFN — sections
* PSAESTEPDEFN — steps
* PSAESTEPMSGDEFN
* PSAESTMTDEFN — actions (action types) 

List Log Messages

HTML Definitions

* PSCONTDEFN — header record; last update time, etc.
* PSCONTENT — stores actual text in the HTML definition 

SQL Definitions

* PSSQLDEFN — header record; last update time, etc.
* PSSQLTEXTDEFN — stores actual text in the SQL definition 

File Layout Definitions

* PSFLDDEFN — header record; last update time, etc.
* PSFLDSEGDEFN — stores the segments for each layout
* PSFLDFIELDDEFN — stores the fields for each layout 

Workflow


* APPR_RULE_DETL - Approval Rule Defn Details
* APPR_RULE_FIELD - Approval Rule Defn Route Cntl
* APPR_RULE_AMT - Approval Rule Amounts
* RTE_CNTL_LN - Route Control Profile Line
* RTE_CNTL_RUSER - RoleUser Route Cntl Profiles
* RTE_CNTL_TYPE - Route Control Type
* RTE_CNTL_HDR - Routing Control Type

People Payroll Tables
Employee Data Tables