Developer Guide to Customizing the Job Posting Search Index

60
An Oracle Red Paper October 2011 Developer’s Guide to Customizing the Job Posting Search Index

Transcript of Developer Guide to Customizing the Job Posting Search Index

An Oracle Red Paper October 2011

Developer’s Guide to Customizing the Job Posting Search Index

Developer’s Guide to Customizing the Job Posting Search Index

Introduction ......................................................................................... 1 Disclaimer ....................................................................................... 1 Structure of This Red Paper ............................................................ 2 Related Materials ............................................................................ 2 

Overview ............................................................................................. 4 Adding Job Function to the 9.1 Candidate Gateway Search............... 4 

Modifying the Extraction of Searchable Data and Building Search Index Codes ........................................................................ 4 Modifying the Search UI .................................................................. 6 Modifying Codes to Invoke Verity Search APIs ............................. 10 

Developer’s Guide to Customizing the Job Posting Search Index

1

Introduction

This red paper is a practical guide for technical users, installers, system administrators, and programmers who implement, maintain, or develop applications for your PeopleSoft system. In this red paper, we discuss guidelines on how to customize the Job Posting Search Index, including PeopleSoft Internet Architecture and Portal configuration. This document does not cover configuring batch processes.

Much of the information in this document originated within the Oracle Global Support Center and is, therefore, based on “real-life” problems that have been encountered in the field. Although this document does not address every conceivable problem that one could encounter when customizing a search index, the issues that appear in this document are the problems that prove to be the most common or troublesome.

Disclaimer

This material has not been submitted to any formal Oracle test and is published as is. It has not been the subject of rigorous review. Oracle assumes no responsibility for its accuracy or completeness. The use of this information or the implementation of any of these techniques is a customer responsibility and depends on the customer's ability to evaluate and integrate them into the customer's operational environment. While each item may have been reviewed by Oracle for accuracy in a specific situation, there is no guarantee that the same or similar results will be obtained elsewhere. Customers attempting to adapt these techniques to their own environments do so at their own risk.

Information in this red paper was developed in conjunction with use of the products specified and is limited in application to those specific hardware and software products and levels.

Oracle may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents.

Developer’s Guide to Customizing the Job Posting Search Index

2

Structure of This Red Paper

This red paper provides guidance for customizing the Job Posting search index.

Oracle updates this document as needed so that it reflects the most current feedback from the field. Therefore, the structure, headings, content, and length of this document may vary with each posted version. To see if the document has been updated since you last downloaded it, compare the date of your version to the date of the version that is posted on My Oracle Support.

Related Materials

This paper is not a general introduction to PeopleSoft Integration Broker and is written for experienced IT professionals with a good understanding of the PeopleSoft Internet Architecture. To take full advantage of the information in this document, you should have a basic understanding of system administration, basic Internet architecture, integration technologies, relational database concepts and SQL, and how to use PeopleSoft applications.

This document does not replace the PeopleTools 8.4x or 8.5x PeopleBooks. Before you read this document, you should become familiar with the PeopleSoft Internet Architecture information in the PeopleTools PeopleBooks to ensure that you have a well-rounded understanding of the technology.

Note. Much of the information in this document may eventually be incorporated into subsequent versions of the PeopleBooks.

Developer’s Guide to Customizing the Job Posting Search Index

3

The following guides discuss many of the fundamental concepts that are related to the PeopleSoft Internet Architecture:

• PeopleTools PeopleBook: Getting Started with Enterprise PeopleTools

• PeopleTools PeopleBook: System and Server Administration

• PeopleTools PeopleBook: PeopleSoft Application Designer Developer’s Guide

• PeopleTools PeopleBook: PeopleSoft Integration Broker

• PeopleTools PeopleBook: PeopleSoft Integration Broker Administration

• PeopleTools PeopleBook: PeopleCode API Reference

• Enterprise PeopleTools Installation for your database platform

• Enterprise PeopleTools Hardware and Software Requirements

Additionally, you should be familiar with the documentation that is delivered with Oracle Tuxedo, Jolt, and WebLogic.

Developer’s Guide to Customizing the Job Posting Search Index

4

Overview

Customizing a search index involves changes to the database view, the page, and the logic. Developers need to perform the following steps:

1. Modify the extraction of searchable data and build search index codes.

2. Modify the search UI.

3. Modify codes to invoke Verity Search APIs to fetch and display search results.

This Developer Guide provides step-by-step development activities for exposing a new field to Verity and making it available to the Candidate Gateway search. In the instructions that follow, we use Job Function in the example to show how you can do this.

Adding Job Function to the 9.1 Candidate Gateway Search

Modifying the Extraction of Searchable Data and Building Search Index Codes

This step involves identifying the affected search index, modifying codes to create the input_<language>.DAT and input_<language>.BIF file, and modifying database views that are used as data sources for the search index.

Affected Objects

Search index: Job Posting

Data source: View HRS_JOBCODE_I

PeopleCode: Application Class: HRS_COMMON:SEARCH:BUS:JobIndexEntry

Method: flush, fillJobFamily, writeBifRecord, writeHeaderTag

• •View HRS_JOBCODE_I: Add field JOB_FUNCTION to record definition and modify the underlying SQL to retrieve the job function value from the PS_JOBCODE_TBL table.

Developer’s Guide to Customizing the Job Posting Search Index

5

SELECT A.SETID , A.JOBCODE , A.EFFDT , A.EFF_STATUS , A.JOB_FAMILY , A.JOB_PROFILE_ID , A.DESCR , A.DESCRSHORT , A.REG_REGION , B.JOB_FUNCTION FROM PS_HCR_JOBCODE_I A , PS_JOBCODE_TBL B WHERE A.SETID = B.SETID AND A.JOBCODE = B.JOBCODE AND A.EFFDT = B.EFFDT

• Application Class HRS_COMMON:SEARCH:BUS:JobIndexEntry Add: instance string &jobFunction;

• Method flush() Add: &jobFunction = "";

• Method fillJobFamily() Add codes to initialize variable &jobFunction and retrieve job function value from database.

method fillJobFamily Local string &setId; &jobFamily = &nullString; &jobFunction = &nullString; &setId = GetSetId(Field.BUSINESS_UNIT, &businessUnit, Record.HRS_JOBCODE_I, "");

Developer’s Guide to Customizing the Job Posting Search Index

6

&RSJobCode.Flush(); &RSJobCode.Fill(SQL.HRS_SCH_JOBFAMILY, &setId, &jobCode); If (&RSJobCode(1).HRS_JOBCODE_I.JOB_FAMILY.Value <> "") Then &jobFamily = &RSJobCode(1).HRS_JOBCODE_I.JOB_FAMILY.Value; End-If; If (&RSJobCode(1).HRS_JOBCODE_I.JOB_FUNCTION.Value <> "") Then &jobFunction = &RSJobCode(1).HRS_JOBCODE_I.JOB_FUNCTION.Value; End-If; end-method;

• Method writeBifRecord() Add: &pArrLangfile [&fileIndex][2].WriteLine("JOB_FUNCTION:" | &jobFunction);

• Method writeHeaderTag() Add: &pArrLangfile [&fileIndex][1].WriteLine(" <JOB_FUNCTION>" | &jobFunction | "</JOB_FUNCTION>");

• Method updateStyleFiles() Add: &styleFile.WriteLine(" varwidth: JOB_FUNCTION dxa");

Modifying the Search UI

This step involves identifying and modifying the online page that has the new search field.

Assume that you want to make Job Function a search criterion on the Advanced Job Search page. Also assume that you want the Job Function search field to behave like the existing Job Families search field.

The following example shows the page before any changes:

Developer’s Guide to Customizing the Job Posting Search Index

7

Example of the Job Search page before changes

Affected Objects

Page: HRS_APP_SCHJOB

Subpage: HRS_APP_SCHJB_A_SP

HRS_APP_SCHJB_R_SP

Add Job Functions combo list box and Job Functions grid to the subpage. Note that the subpage contains two formats of the Job Families search field: combo format and grid format. The Job Families grid is shown only in Accessible mode.

Record: HRS_JOB_FUNC_VW (new) - To be used as the prompt table for Job Function field.

HRS_JOB_FUNCLVW (new) - Related language.

HRS_APP_JBSCH_I (modified)

HRS_REC_JBSCH_I (modified)

HRS_SRCH_WRK (modified)

Developer’s Guide to Customizing the Job Posting Search Index

8

Message Catalog Entry: (18175,169) Message Text: Select Job Functions

(18175,170) Message Text: Job Functions

Text Catalog: Text ID: HRS_CE_ALL_JO_FUNC

Text: All Job Functions

PeopleCode

These application class methods need to be modified:

• Application Class: HRS_COMMON:CMP_HRS_APP_SCHJOB:UI:AppSchJobPage

Method: refreshCombos, displaySubpages, resetLabels

• Application Class: HRS_COMMON:CMP_HRS_APP_SCHJOB:UI:UIUTils

Method: retrieveCriteria, displayCriteria, displayResults, resetFields

• Application Class: HRS_COMMON:CMP_HRS_APP_SEARCHES:UI:UIUTils

Method: displayCriteria

• Application Class: HRS_COMMON:SEARCH:UTIL

New method: JobFunctionCombo

Note: Codes are similar to the current method FamilyCombo.

The following examples show the page after changes were made, including the Search Results grid with the new Job Function column:

Developer’s Guide to Customizing the Job Posting Search Index

9

Example of the Job Search page after changes (1 of 2)

Developer’s Guide to Customizing the Job Posting Search Index

10

Example of the Job Search page after changes (2 of 2)

Modifying Codes to Invoke Verity Search APIs

This step involves identifying and modifying the PeopleCode that initiates a Job Posting index search and processes the search results. The code change essentially is to add job function codes, if selected, to the Verity query statement.

Affected Objects

PeopleCode

These application class methods need to be modified:

• Application Class: HRS_COMMON:SEARCH:BUS:AppJobSearch

Add a new class property: property array of string jobFunctionCodes;

• Application Class: HRS_COMMON:SEARCH:BUS:AppJobSearch

Method: AppJobSearch

Note: Initialize array jobFunctionCodes.

• Application Class: HRS_COMMON:SEARCH:BUS:AppJobSearch

Method: execute

Note: Add codes to include job function selections in the search criteria. Codes are similar to the existing codes to set job family criteria.

• Application Class: HRS_COMMON:SEARCH:BUS:VerityJobSchProvider

Method: buildJobQueryText, VerityJobSchProvider, flush, search

Developer’s Guide to Customizing the Job Posting Search Index

11

Note: Add codes to include job functions in the Verity query text string.

Details of the code change follow. New codes appear in blue, and modified existing codes appear in red. Records

HRS_APP_JBSCH_I HRS_JOBCODE_I HRS_JOB_FUNCLVW HRS_JOB_FUNC_VW HRS_REC_JBSCH_I HRS_SCH_WRK

Fields

HRS_CLEAR_ALL3 HRS_COMBO_VAL2 HRS_DESCR HRS_SCH_COMBO2 HRS_SELECT HRS_SELECT_ALL3

Pages

HRS_APP_SCHJB_A_SP HRS_APP_SCHJB_R_SP HRS_APP_SCHJOB

Message Catalog Entries

RS Common Components 18175, 169 RS Common Components 18175, 170

SQL

HRS_JOBCODE_I View HRS_JOB_FUNCLVW View HRS_JOB_FUNC_VW View

PeopleCode (Page)

HRS_APP_SCHJOB.Activate

PeopleCode (CompRecFld)

HRS_APP_SCHJOB(GBL).HRS_SCH_WRK.HRS_SCH_COMBO2 FieldDefault

Application Packages

HRS_COMMON.HRS_COMMON

PeopleCode (Appl Package)

HRS_COMMON:CMP_HRS_APP_SCHJOB:BUS:SearchController.OnExecute HRS_COMMON:CMP_HRS_APP_SCHJOB:UI:AppSchJobPage.OnExecute HRS_COMMON:CMP_HRS_APP_SCHJOB:UI:UIUtils.OnExecute HRS_COMMON:CMP_HRS_APP_SEARCHES:UI:UIUtils.OnExecute HRS_COMMON:SEARCH:BUS:AppJobSearch.OnExecute HRS_COMMON:SEARCH:BUS:JobIndex.OnExecute HRS_COMMON:SEARCH:BUS:JobIndexEntry.OnExecute HRS_COMMON:SEARCH:BUS:VerityAppSchProvider.OnExecute

Developer’s Guide to Customizing the Job Posting Search Index

12

HRS_COMMON:SEARCH:BUS:VerityJobSchProvider.OnExecute HRS_COMMON:SEARCH:UTIL:JobFunctionCombo.OnExecute

Record Detail

Record: HRS_APP_JBSCH_I

Description Recruiting Search derived rec Record Type Derived/Work Parent Record Related Language Owner ID RS Common Components Comments Applicant Search for Jobs derived results record

FieldName Type Len Key Srch Req Edit Prompt C Default HRS_JOB_OPENING_ID Num 15 HRS_JO_PST_SEQ Num 3 HOT_JOB Char 1 POSTING_TITLE Char 200 OPEN_DT Date 10 JOB_FAMILY Char 6 DESCR Char 30 JOB_FUNCTION Char 3 Extend Field Info SetCtrlField Label PageControl Audit JOB_FUNCTION JOBFUNCTION

Record: HRS_JOBCODE_I

Description Job Codes Interface View Record Type SQL View Set Control Field BUSINESS_UNIT Parent Record Related Language HRS_JOBCODE_LNI Build Seq 3 Owner ID RS Business Objects Comments Job Codes Interface View

FieldName Type Len Key Srch Req Edit Prompt C Default SETID Char 5 KALS Req Prmt SET_VLD_HR_02 OPR_DEF_TBL_HR.SETID JOBCODE Char 6 KALS Req EFFDT Date 10 KD Req %date EFF_STATUS Char 1 Xlat JOB_FAMILY Char 6 JOB_PROFILE_ID Char 12 DESCR Char 30 AAL Req DESCRSHORT Char 10 REG_REGION Char 5 JOB_FUNCTION Char 3

Record: HRS_JOB_FUNCLVW

Description Job Function Related Language Record Type SQL View Parent Record Related Language Build Seq 2 Owner ID RS Common Components Comments Job function related language view

Developer’s Guide to Customizing the Job Posting Search Index

13

FieldName Type Len Key Srch Req Edit Prompt C Default JOB_FUNCTION Char 3 KALS EFFDT Date 10 KD %date LANGUAGE_CD Char 3 KALS Xlat HRS_DESCR Char 30 Extend Field Info SetCtrlField Label PageControl Audit HRS_DESCR HRS_FUNCTION

Record: HRS_JOB_FUNC_VW

Description Job Functions Record Type SQL View Parent Record Related Language HRS_JOB_FUNCLVW Build Seq 2 Owner ID RS Business Objects Comments View of job functions

FieldName Type Len Key Srch Req Edit Prompt C Default JOB_FUNCTION Char 3 KALS EFFDT Date 10 KD %date EFF_STATUS Char 1 Xlat 'A' HRS_DESCR Char 30 Extend Field Info SetCtrlField Label PageControl Audit HRS_DESCR HRS_FUNCTION

Record: HRS_REC_JBSCH_I

Description Recruiting Search derived rec Record Type Derived/Work Parent Record Related Language Owner ID RS Common Components Comments Recruiter Search for Jobs derived results record

FieldName Type Len Key Srch Req Edit Prompt C Default HRS_JOB_OPENING_ID Num 15 HRS_JO_PST_SEQ Num 3 HRS_JO_PST_TYPE Char 1 Xlat HOT_JOB Char 1 POSTING_TITLE Char 200 OPEN_DT Date 10 JOB_FAMILY Char 6 HRS_MGR_NAME Char 50 DESCR Char 30 JOB_FUNCTION Char 3

Record: HRS_SCH_WRK

Description Recruiting Search Work record Record Type Derived/Work Parent Record Related Language Owner ID RS Common Components Comments Recruiting Search Work record

FieldName Type Len Key Srch Req Edit Prompt C Default HRS_PERSON_ID Num 15

Developer’s Guide to Customizing the Job Posting Search Index

14

HRS_DELETE_BTN Char 1 HRS_SCH_AIRS_BTN Char 1 HRS_EDIT_BTN Char 1 HRS_SCH_SAV_CRIT Char 4 Xlat '0' HRS_SCH_CLEAR_BTN Char 1 HRS_SCH_SAV_CRIT_P Char 30 Prmt HRS_SRCHSAV_VW POSITION_NBR Char 8 LOCATION Char 10 POSTING_TITLE Char 200 HRS_SCH_DATE11 Char 11 NAME Char 50 HRS_FULL_PART_TIME Char 30 HRS_SEARCH_ID Num 15 HRS_REG_TEMP Char 30 HRS_CE_EML_FRND Char 1 SETID Char 5 HRS_CLEAR_ALL Char 1 HRS_LST_FREEZE Char 1 HRS_RSLT_MSG Char 254 HRS_RSLT_ICN Char 1 DESCR50 Char 50 DESCR10 Char 10 HRS_SCH_SCORE_FMT Char 5 HRS_SCH_COMPLIANT Char 1 Xlat HRS_RSL_SAVE_BTN Char 1 HRS_SCH_ACTIVE Char 1 Xlat HRS_OWNER_ID Char 11 CANCEL_BTN Char 1 EMPLOYEE_IND Char 1 Y/N 'N' NON_EMPLOYEE_IND Char 1 Y/N 'N' EXTERNAL_APPL_IND Char 1 Y/N 'N' EMAIL_ADDR Char 70 Prmt HRS_APP_EMAIL_I HRS_SCH_AGNT_IND Char 1 END_DT Date 10 END_DT_IND Char 1 Xlat HRS_SCH_ACCESS Char 1 Xlat 'V' HRS_CONTACT_NAME Char 50 HRS_SCH_CONTACT HRS_CONTACT_ID Num 15 HRS_SCH_CONTACT HRS_LOCATION_ID Num 15 Prmt HRS_RECR_LOC_I JOB_FAMILY Char 6 HRS_DESCR_DD_I STATE Char 6 HRS_STATE_I STATE_DESCR1 Char 30 HRS_STATE_I COUNTRY_DESCR1 Char 30 HRS_COUNTRY_VW CITY Char 30 APP_PER_STATUS Char 1 Xlat BUSINESS_UNIT Char 5 HRS_SCH_JOB_FAMILY Char 1 Y/N 'N' SEARCH_DESCR Char 1 Y/N 'N' LANG_CD Char 3 Xlat 'ENG' HRS_SCH_LOCDSC Char 50 HRS_SCH_LNK08 Char 1 HRS_SCH_LNK07 Char 1 HRS_SCH_DATE Char 6 HRS_APPLY_PB Char 1 HRS_SELECT_ALL Char 1 HRS_SCH_DESCR10 Char 10 HRS_FRST_LIST Char 1 HRS_LAST_LIST Char 1 HRS_LST_NEXT Char 1 HRS_LST_PREV Char 1 HRS_PAGE_TITLE Char 100 HRS_CLEAR_BTN Char 1 HRS_SEARCH_BTN Char 1 HRS_SEARCH_BTN1 Char 1 HRS_SEARCH_BTN2 Char 1 HRS_SEARCH_BTN3 Char 1

Developer’s Guide to Customizing the Job Posting Search Index

15

HRS_SCH_SAVE_BTN Char 1 HRS_SCH_SAVE_BTN1 Char 1 HRS_SCH_SAVE_BTN2 Char 1 HRS_SCH_SAVE_BTN3 Char 1 HRS_SCH_SAVE_BTN4 Char 1 SEARCH_NAME Char 20 HRS_SEARCH_CRIT Char 1 HRS_SCH_GRPBOX Char 1 HRS_SCH_GRPBOX1 Char 1 HRS_SCH_GRPBOX2 Char 1 HRS_SCH_GRPBOX3 Char 1 HRS_SCH_GRPBOX4 Char 1 HRS_SCH_GRPBOX5 Char 1 HRS_SCH_GRPBOX6 Char 1 HRS_SCH_GRPBOXA Char 1 HRS_SCH_GRPBOXB Char 1 HRS_SCH_GRPBOXC Char 1 HRS_SCH_GRPBOXD Char 1 HRS_SCH_GRPBOXE Char 1 HRS_SCH_GRPBOXCR Char 1 HRS_SCH_GRPBOXCNR Char 1 HRS_SCH_CHKBOX Char 1 Y/N 'N' HRS_SCH_GRPBOXK Char 1 HRS_SCH_GRPBOXL Char 1 HRS_SCH_GRPBOXM Char 1 HRS_RESUME_BTN Char 1 DESCR100 Char 100 DESCR25 Char 25 DESCRLONG Long HRS_SCH_TEXT100 Char 100 HRS_APPRCV_WTN Char 3 Xlat HRS_POSTED_WTN Char 1 Xlat HRS_SCH_IMAGE1 ImgR <?> HRS_SCH_GRPBOXO Char 1 HRS_SCH_GRPBOXN Char 1 HRS_SCH_GRPBOXJ Char 1 HRS_SCH_GRPBOXI Char 1 HRS_SCH_GRPBOXH Char 1 HRS_SCH_GRPBOXF Char 1 HRS_SCH_GRPBOXG Char 1 HRS_SCH_IMAGE2 ImgR <?> HRS_SCH_IMAGE3 ImgR <?> HRS_SCH_IMAGE4 ImgR <?> HRS_SCH_LNK01 Char 1 HRS_SCH_LNK02 Char 1 HRS_SCH_LNK03 Char 1 HRS_SCH_LNK04 Char 1 HRS_SCH_LNK05 Char 1 HRS_DT_APPLIED Date 10 HRS_SCH_LNK06 Char 1 HRS_SCH_DT_DISP Char 11 HRS_SCH_COMBO Long HRS_SCH_COMBO1 Long FULL_PART_TIME Char 1 Xlat REG_TEMP Char 1 Xlat HRS_DESIRED_SAL Num 12.6 SAL_RANGE_CURRENCY Char 3 Prmt HRS_CURRENCY_VW HRS_SAL_FREQ Char 1 Xlat HRS_SORT_BY Char 1 Xlat HRS_ROWS_PERPAGE Char 3 Xlat HRS_JOB_OPENING_ID Num 15 HRS_JO_OPEN_I HRS_SCH_ASOC_OPN Num 15 HRS_JO_OPEN_I HRS_RECR_NAME Char 50 HRS_MGR_NAME Char 50 HRS_SCH_DESCR Char 4 HRS_SCH_SEP Char 1

Developer’s Guide to Customizing the Job Posting Search Index

16

SRCH_CATEGORY Char 1 Xlat 'A' HRS_SCH_START_DT Date 10 HRS_SOURCE_NAME Char 30 Prmt HRS_SCH_SRC_VW HRS_SOURCE_ID Num 15 HRS_SCH_SRC_VW HRS_SUBSOURCE_ID Num 15 HRS_SCH_SBSRC_V HRS_SUBSOURCE_DESC Char 50 HRS_SCH_END_DT Date 10 HRS_SCH_ACCOMPS Char 100 HRS_SCH_WRKEXP Char 250 COUNTRY Char 3 HRS_COUNTRY_VW HRS_SCH_DEL_BTN Char 1 HRS_SCH_APPLIED Char 1 URL Char 254 HRS_SCH_SALARY Char 50 HRS_COMBO_VAL Char 254 HRS_COMBO_VAL1 Char 254 HRS_SITE_ID Num 15 HRS_JO_STATUS_DRP Char 100 Prmt HRS_STS_JO_I HRS_JO_REC_ACTVITY Char 1 Xlat HRS_JO_FIND_TYPE Char 1 Xlat HRS_JO_TYPE Char 1 Xlat HRS_JO_SORT_BY Char 3 Xlat HRS_SCH_LST_ACTION Char 3 Xlat '000' HRS_SCH_LST_G_ACT Char 3 Xlat '000' HRS_SCH_LST_GO_ACT Char 1 MANAGER_TYPE Char 1 Xlat HRS_SCH_POP_BTN1 Char 1 HRS_SCH_POP_BTN2 Char 1 HRS_PAGE_INSTR Char 250 HRS_SAVE_SRCH_GPB Char 1 HRS_APP_TOOLBAR Char 1 HRS_CC_NO_RSLT Char 100 HRS_REFER_PB Char 1 DESCR200 Char 254 DESCR254 Char 254 HRS_ROW_ADD_DTTM DT 26 HRS_ROW_ADD_OPRID Char 30 HRS_GRID_SKIP_PA Char 1 HRS_GRID_RET_PA Char 1 HRS_SCH_GRPBXLOC Char 1 HRS_SCH_GRPBXLBLS Char 1 HRS_STARTDATE Date 10 HRS_APP360_DTA_BTN Char 1 HRS_MY_APPS Char 1 Y/N 'N' JPM_PROFILE_ID Char 12 Prmt HRS_NP_PROF_VW HRS_SCH_GRPBOXP Char 1 HRS_SELECT Char 1 Y/N HRS_JOBPROF_MSG Long HRS_SCH_CUSTCONT Char 250 HRS_SCH_CLRCNT_PB Char 1 HRS_SCH_GRPBOXQ Char 1 HRS_SCH_CLRWRK_PB Char 1 HRS_SCH_GRPBOXS Char 1 HRS_SCH_LNK09 Char 1 HRS_SCH_GRPBOXT Char 1 HRS_SCH_GRPBOXU Char 1 HRS_SCH_GRPBOXV Char 1 HRS_SCH_GRPBOXW Char 1 HRS_SCH_GRPBOXX Char 1 HRS_SCH_GRPBOXY Char 1 HRS_SELECT_ALL1 Char 1 HRS_CLEAR_ALL1 Char 1 HRS_CLEAR_ALL2 Char 1 HRS_SELECT_ALL2 Char 1 HRS_SCH_GRPBXEMP Char 1 HRS_SCH_GRPBXPRF Char 1

Developer’s Guide to Customizing the Job Posting Search Index

17

HOT_JOB Char 1 Xlat HRS_SCH_GRPBOXAC1 Char 1 HRS_SCH_GRPBOXAC2 Char 1 HRS_SCH_GRPBOXAC3 Char 1 HRS_APP360_DTA_PB Char 1 GB1 Char 1 HRS_SELECT_ALL3 Char 1 HRS_CLEAR_ALL3 Char 1 HRS_SCH_COMBO2 Long HRS_COMBO_VAL2 Char 254 Extend Field Info SetCtrlField Label PageControl Audit [ . . . Description Unchanged . . . ]

Field Detail

Field: HRS_CLEAR_ALL3

Field Type Char Length 1 Format UpperCase Family Name Display Name Owner ID RS Talent Relationship Mgmt

Label ID Short Name Long Name Def HRS_CLEAR_ALL Deselect All Deselect All Yes HRS_CLEAR_FUNC Deselect All Deselect All Job Functions

Field: HRS_COMBO_VAL2

Field Type Char Length 254 Format UpperCase Family Name Display Name Owner ID RS Talent Relationship Mgmt

Label ID Short Name Long Name Def HRS_COMBO_VAL1 Combo Combo Yes

Field: HRS_DESCR

Field Type Char Length 30 Format MixedCase Family Name Display Name Owner ID RS Common Components

Label ID Short Name Long Name Def HRS_DESCR Descr Description Yes HRS_FAMILY Job Family Job Family HRS_FUNCTION Job Function Job Function HRS_LOCATION Recruiting Loca Recruiting Location HRS_MESSAGE Message Message

Developer’s Guide to Customizing the Job Posting Search Index

18

Field: HRS_SCH_COMBO2

Field Type Long Length 0 Format UpperCase Family Name Display Name Owner ID RS Talent Relationship Mgmt

Label ID Short Name Long Name Def HRS_SCH_COMBO2 Search Search Combo Box Yes HRS_SEL_JOB_FUNC Job Function Select Job Function

Field: HRS_SELECT

Field Type Char Length 1 Format UpperCase Family Name Display Name Owner ID RS Open Integration Framework

Label ID Short Name Long Name Def HRS_SELECT Select Select Yes HRS_SELECTFAM Select Job Fami Select Job Family HRS_SELECTFUNC Select Job Func Select Job Function HRS_SELECTLOC Select Location Select Location

Field: HRS_SELECT_ALL3

Field Type Char Length 1 Format UpperCase Family Name Display Name Owner ID RS Talent Relationship Mgmt

Label ID Short Name Long Name Def HRS_SELECT_ALL Select All Select All Yes HRS_SELECT_FUNC Select All Select All Job Functions

Page Detail

Page: HRS_APP_SCHJB_A_SP

Description Applicant Search Jobs Type SubPage Allow Deferred Proc. Yes Owner ID RS Common Components Comments Advanced Search Pager

Type ID Lvl Record Field Label Attributes HorRule 1 0 [None ] Hide GroupBox 2 0 HRS_SCH_WRK HRS_SCH_GRPBOX +HRS_SCH_GRPBOX3 GroupBox 3 0 HRS_SCH_WRK HRS_SCH_GRPBOXAC1 '' PushBtn 4 0 HRS_SCH_WRK HRS_SEARCH_BTN2 +HRS_SEARH_BTN PushBtn->PCode PushBtn 5 0 HRS_SCH_WRK HRS_CLEAR_BTN +HRS_CLEAR_BTN

Developer’s Guide to Customizing the Job Posting Search Index

19

PushBtn->PCode PushBtn 6 0 HRS_SCH_WRK HRS_SCH_SAVE_BTN2 +HRS_SCH_SAVE_BTN1 PushBtn->PCode PushBtn 7 0 HRS_SCH_WRK HRS_SCH_LNK04 +HRS_SCH_LNK04 HypLink->PCode PushBtn 8 0 HRS_SCH_WRK HRS_SCH_LNK02 +HRS_SCH_LNK02 HypLink->PCode GroupBox 9 0 HRS_SCH_WRK HRS_SCH_GRPBOXJ '' SubPage 10 0 HRS_AGNT_PROF [None ] -> HRS_APP_SAV_SCH_SP EditBox 11 0 HRS_SCH_WRK HRS_SCH_TEXT100 +HRS_SCH_TEXT101 noPrompt HtmlArea 12 0 HRS_SCH_WRK HRS_SCH_COMBO [#18175,138] Gray HtmlArea 13 0 [None ] Gray PSGrid .14 1 HRS_LOC_VW1 [#18032,1649] Lvl 1 #8 noSelUpdInsDel CheckBox .15 1 HRS_SCH_LOC_WRK HRS_SELECT +HRS_SELECTLOC On:Y Off:N EditBox .16 1 HRS_LOC_VW1 SETID +SETID Hide EditBox .17 1 HRS_LOC_VW1 HRS_DESCR +HRS_LOCATION Gray EditBox .18 1 HRS_LOC_VW1 HRS_LOCATION_ID +HRS_LOCATION_ID Hide HorRule 19 0 [None ] Hide PushBtn 20 0 HRS_SCH_WRK HRS_SELECT_ALL1 +HRS_SELECT_LOC HypLink->PCode PushBtn 21 0 HRS_SCH_WRK HRS_CLEAR_ALL1 +HRS_CLEAR_LOC HypLink->PCode GroupBox 22 0 HRS_SCH_WRK HRS_SCH_GRPBXLOC '' HtmlArea 23 0 HRS_SCH_WRK HRS_SCH_COMBO1 +HRS_SCH_COMBO Gray HtmlArea 24 0 [None ] Gray PSGrid .25 1 HRS_JOB_FAM_I_2 [#18032,1650] Lvl 1 #8 noSelUpdInsDel CheckBox .26 1 HRS_SCH_LOC_WRK HRS_SELECT +HRS_SELECTFAM On:Y Off:N EditBox .27 1 HRS_JOB_FAM_I_2 JOB_FAMILY +JOB_FAMILY Hide EditBox .28 1 HRS_JOB_FAM_I_2 HRS_DESCR +HRS_FAMILY Gray HorRule 29 0 [None ] Hide PushBtn 30 0 HRS_SCH_WRK HRS_SELECT_ALL2 +HRS_SELECT_JOB HypLink->PCode PushBtn 31 0 HRS_SCH_WRK HRS_CLEAR_ALL2 +HRS_CLEAR_JOB HypLink->PCode ComboBox 32 0 HRS_SCH_WRK FULL_PART_TIME +FULL_PART_TIME XLatShort ComboBox 33 0 HRS_SCH_WRK REG_TEMP +REG_TEMP XLatShort EditBox 34 0 HRS_SCH_WRK HRS_DESIRED_SAL +HRS_DESIRED_SAL ComboBox 35 0 HRS_SCH_WRK SAL_RANGE_CURRENCY -SAL_RANGE_CURR Prompt: CURRENCY_CD noDefrr CtrlFld ComboBox 36 0 HRS_SCH_WRK HRS_SAL_FREQ +HRS_SAL_FREQ1 Hide XLatShort EditBox 37 0 HRS_CURRENCY_VW DESCR [None ] Gray Related:35 EditBox 38 0 HRS_SCH_WRK HRS_JOB_OPENING_ID +JOB_OPENING_ID noPrompt GroupBox 39 0 HRS_SCH_WRK HRS_SCH_GRPBOXI '' EditBox 40 0 HRS_SCH_WRK HRS_RECR_NAME +HRS_RECR_NAME

Developer’s Guide to Customizing the Job Posting Search Index

20

EditBox 41 0 HRS_SCH_WRK HRS_MGR_NAME +HRS_MGR_NAME ComboBox 42 0 HRS_SCH_WRK HRS_POSTED_WTN +POSTED1 XLatLong ComboBox 43 0 HRS_SCH_WRK HRS_SORT_BY +HRS_SORT_BY1 XLatLong HorRule 44 0 [None ] PushBtn 45 0 HRS_SCH_WRK HRS_SEARCH_BTN2 +HRS_SEARH_BTN PushBtn->PCode PushBtn 46 0 HRS_SCH_WRK HRS_CLEAR_BTN +HRS_CLEAR_BTN PushBtn->PCode PushBtn 47 0 HRS_SCH_WRK HRS_SCH_SAVE_BTN2 +HRS_SCH_SAVE_BTN1 PushBtn->PCode PushBtn 48 0 HRS_SCH_WRK HRS_SCH_LNK04 +HRS_SCH_LNK04 HypLink->PCode PushBtn 49 0 HRS_SCH_WRK HRS_SCH_LNK02 +HRS_SCH_LNK02 HypLink->PCode HorRule 50 0 [None ] Hide Label 51 0 '' GroupBox 52 0 HRS_SCH_WRK HRS_SCH_GRPBXLBLS '' Label 53 0 [#18175,138] Label 54 0 [#18175,137] Label 55 0 [#18175,100] GroupBox 56 0 HRS_SCH_WRK HRS_SCH_GRPBXLBLS '' Label 57 0 '' HtmlArea 58 0 [None ] Gray EditBox 59 0 HRS_SCH_WRK SETID [None ] Hide GroupBox 32 0 HRS_SCH_WRK GB1 '' HtmlArea 33 0 HRS_SCH_WRK HRS_SCH_COMBO2 +HRS_SCH_COMBO2 Gray HtmlArea 34 0 [None ] Gray PSGrid .35 1 HRS_JOB_FUNC_VW [#18175,170] Lvl 1 #8 noSelUpdInsDel CheckBox .36 1 HRS_SCH_LOC_WRK HRS_SELECT +HRS_SELECTFUNC On:Y Off:N EditBox .37 1 HRS_JOB_FUNC_VW JOB_FUNCTION +JOB_FUNCTION Hide EditBox .38 1 HRS_JOB_FUNC_VW HRS_DESCR +HRS_FUNCTION Gray HorRule 39 0 [None ] Hide PushBtn 40 0 HRS_SCH_WRK HRS_SELECT_ALL3 +HRS_SELECT_FUNC HypLink->PCode PushBtn 41 0 HRS_SCH_WRK HRS_CLEAR_ALL3 +HRS_CLEAR_FUNC HypLink->PCode ComboBox 42 0 HRS_SCH_WRK FULL_PART_TIME +FULL_PART_TIME XLatShort ComboBox 43 0 HRS_SCH_WRK REG_TEMP +REG_TEMP XLatShort EditBox 44 0 HRS_SCH_WRK HRS_DESIRED_SAL +HRS_DESIRED_SAL ComboBox 45 0 HRS_SCH_WRK SAL_RANGE_CURRENCY -SAL_RANGE_CURR Prompt: CURRENCY_CD noDefrr CtrlFld ComboBox 46 0 HRS_SCH_WRK HRS_SAL_FREQ +HRS_SAL_FREQ1 Hide XLatShort EditBox 47 0 HRS_CURRENCY_VW DESCR [None ] Gray Related:45 EditBox 48 0 HRS_SCH_WRK HRS_JOB_OPENING_ID +JOB_OPENING_ID noPrompt GroupBox 49 0 HRS_SCH_WRK HRS_SCH_GRPBOXI '' EditBox 50 0 HRS_SCH_WRK HRS_RECR_NAME +HRS_RECR_NAME EditBox 51 0 HRS_SCH_WRK HRS_MGR_NAME +HRS_MGR_NAME ComboBox 52 0 HRS_SCH_WRK HRS_POSTED_WTN +POSTED1 XLatLong

Developer’s Guide to Customizing the Job Posting Search Index

21

ComboBox 53 0 HRS_SCH_WRK HRS_SORT_BY +HRS_SORT_BY1 XLatLong HorRule 54 0 [None ] PushBtn 55 0 HRS_SCH_WRK HRS_SEARCH_BTN2 +HRS_SEARH_BTN PushBtn->PCode PushBtn 56 0 HRS_SCH_WRK HRS_CLEAR_BTN +HRS_CLEAR_BTN PushBtn->PCode PushBtn 57 0 HRS_SCH_WRK HRS_SCH_SAVE_BTN2 +HRS_SCH_SAVE_BTN1 PushBtn->PCode PushBtn 58 0 HRS_SCH_WRK HRS_SCH_LNK04 +HRS_SCH_LNK04 HypLink->PCode PushBtn 59 0 HRS_SCH_WRK HRS_SCH_LNK02 +HRS_SCH_LNK02 HypLink->PCode HorRule 60 0 [None ] Hide Label 61 0 '' GroupBox 62 0 HRS_SCH_WRK HRS_SCH_GRPBXLBLS '' Label 63 0 [#18175,138] Label 64 0 [#18175,137] Label 65 0 [#18175,169] Label 66 0 [#18175,100] GroupBox 67 0 HRS_SCH_WRK HRS_SCH_GRPBXLBLS '' Label 68 0 '' HtmlArea 69 0 [None ] Gray EditBox 70 0 HRS_SCH_WRK SETID [None ] Hide HorRule 71 0 [None ] Hide

Page: HRS_APP_SCHJB_R_SP

Description REcruiter Search Applicant Type SubPage Allow Deferred Proc. Yes Owner ID RS Common Components Comments Results Subpage

Type ID Lvl Record Field Label Attributes GroupBox 1 0 HRS_SCH_WRK HRS_SCH_GRPBOXF +HRS_SCH_GRPBOX3 SubPage 2 0 '' -> HRS_APP_SCHJB_B_SP HorRule 3 0 [None ] Hide GroupBox 4 0 HRS_SCH_WRK HRS_SCH_GRPBOXG +HRS_SCH_GRPBOX3 SubPage 5 0 HRS_AGNT_PROF [None ] -> HRS_APP_SCHJB_A_SP GroupBox 6 0 HRS_SCH_WRK HRS_SCH_GRPBOXH '' GroupBox 7 0 HRS_SCH_WRK HRS_SCH_GRPBOXCR +HRS_SCH_GRPBOX4 PushBtn 8 0 HRS_SCH_WRK HRS_RSLT_ICN +10 ImgBtn->PCode EditBox 9 0 HRS_SCH_WRK DESCR100 [None ] Gray PushBtn 10 0 HRS_SCH_WRK HRS_SELECT_ALL +HRS_SELECT_ALL HypLink->PCode PushBtn 11 0 HRS_SCH_WRK HRS_CLEAR_ALL +HRS_CLEAR_ALL HypLink->PCode PushBtn 12 0 HRS_SCH_WRK HRS_SCH_SAVE_BTN +HRS_SAVE_JOBS PushBtn->PCode PushBtn 13 0 HRS_SCH_WRK HRS_APPLY_PB +HRS_APPLY_PB PushBtn->PCode Anchor 14 0 HRS_SCH_WRK HRS_GRID_SKIP_PA +HRS_SKIP Anchor

Developer’s Guide to Customizing the Job Posting Search Index

22

PushBtn 15 0 HRS_SCH_WRK HRS_SCH_SEP +HRS_FIRST ImgLink->Scroll PushBtn 16 0 HRS_SCH_WRK HRS_FRST_LIST -HRS_FRST_LIST HypLink->Scroll PushBtn 17 0 HRS_SCH_WRK HRS_SCH_SEP +HRS_PREVIOUS ImgLink->Scroll PushBtn 18 0 HRS_SCH_WRK HRS_LST_PREV -HRS_LST_PREV HypLink->Scroll PushBtn 19 0 HRS_SCH_WRK HRS_SCH_SEP +HRS_SCH_SEP ImgLink->PCode PushBtn 20 0 HRS_SCH_WRK HRS_LST_NEXT -HRS_LST_NEXT HypLink->Scroll PushBtn 21 0 HRS_SCH_WRK HRS_SCH_SEP +HRS_NEXT ImgLink->Scroll PushBtn 22 0 HRS_SCH_WRK HRS_LAST_LIST +HRS_LAST_LIST HypLink->Scroll PushBtn 23 0 HRS_SCH_WRK HRS_SCH_SEP +HRS_LAST ImgLink->Scroll Anchor 24 0 HRS_SCH_WRK HRS_GRID_RET_PA +HRS_RET Anchor EditBox 25 0 HRS_SCH_WRK DESCR254 [None ] Gray HorRule 26 0 [None ] Hide PSGrid .27 1 HRS_AGNT_RSLT_I [#18175,120] Lvl 1 #10 noSelUpdInsDel CheckBox .28 1 HRS_SCH_WRK HRS_SCH_CHKBOX +HRS_SCH_CHKBOX3 On:Y Off:N EditBox .29 1 HRS_APP_JBSCH_I OPEN_DT -OPEN_CREAT_DT Gray Century PushBtn .30 1 HRS_SCH_WRK HRS_SCH_IMAGE1 -IMAGE 1 ImgBtn->PCode EditBox .31 1 HRS_APP_JBSCH_I HOT_JOB [None ] noCompChange Hide EditBox .32 1 HRS_APP_JBSCH_I POSTING_TITLE +POSTING_TITLE Hide noPrompt PushBtn .33 1 HRS_SCH_WRK POSTING_TITLE +POSTING_TITLE HypLink->PCode EditBox .34 1 HRS_APP_JBSCH_I HRS_JOB_OPENING_ID -JOB_OPENING Gray EditBox .35 1 HRS_APP_JBSCH_I HRS_JO_PST_SEQ [None ] Hide EditBox .36 1 HRS_APP_JBSCH_I JOB_FAMILY +JOB_FAMILY Hide CtrlFld EditBox .37 1 HRS_JOB_FAM_I DESCR +DESCR Gray Related:36 EditBox .38 1 HRS_APP_JBSCH_I DESCR +DESCR Gray EditBox .39 1 HRS_AGNT_RSLT_I HRS_PERSON_ID [None ] Hide EditBox .40 1 HRS_SCH_WRK LOCATION +LOCATION_1 Hide HorRule 41 0 [None ] Hide PushBtn 42 0 HRS_SCH_WRK HRS_SELECT_ALL +HRS_SELECT_ALL HypLink->PCode PushBtn 43 0 HRS_SCH_WRK HRS_CLEAR_ALL +HRS_CLEAR_ALL HypLink->PCode PushBtn 44 0 HRS_SCH_WRK HRS_SCH_SAVE_BTN +HRS_SAVE_JOBS PushBtn->PCode PushBtn 45 0 HRS_SCH_WRK HRS_APPLY_PB +HRS_APPLY_PB PushBtn->PCode PushBtn 46 0 HRS_SCH_WRK HRS_REFER_PB +HRS_REFER_PB PushBtn->PCode GroupBox 47 0 HRS_SCH_WRK HRS_SCH_GRPBOXCNR +HRS_SCH_GRPBOX4 EditBox 48 0 HRS_SCH_WRK HRS_CC_NO_RSLT [None ]

Developer’s Guide to Customizing the Job Posting Search Index

23

Gray HorRule 49 0 [None ] Hide EditBox .38 1 HRS_APP_JBSCH_I JOB_FUNCTION +JOBFUNCTION Hide CtrlFld EditBox .39 1 HRS_JOB_FUNC_VW HRS_DESCR +HRS_FUNCTION Gray Related:38 EditBox .40 1 HRS_APP_JBSCH_I DESCR +DESCR Gray EditBox .41 1 HRS_AGNT_RSLT_I HRS_PERSON_ID [None ] Hide EditBox .42 1 HRS_SCH_WRK LOCATION +LOCATION_1 Hide HorRule 43 0 [None ] Hide PushBtn 44 0 HRS_SCH_WRK HRS_SELECT_ALL +HRS_SELECT_ALL HypLink->PCode PushBtn 45 0 HRS_SCH_WRK HRS_CLEAR_ALL +HRS_CLEAR_ALL HypLink->PCode PushBtn 46 0 HRS_SCH_WRK HRS_SCH_SAVE_BTN +HRS_SAVE_JOBS PushBtn->PCode PushBtn 47 0 HRS_SCH_WRK HRS_APPLY_PB +HRS_APPLY_PB PushBtn->PCode PushBtn 48 0 HRS_SCH_WRK HRS_REFER_PB +HRS_REFER_PB PushBtn->PCode GroupBox 49 0 HRS_SCH_WRK HRS_SCH_GRPBOXCNR +HRS_SCH_GRPBOX4 EditBox 50 0 HRS_SCH_WRK HRS_CC_NO_RSLT [None ] Gray HorRule 51 0 [None ] Hide

Page: HRS_APP_SCHJOB

Description Recruiter Search for Applicant Type Standard Page Allow Deferred Proc. Yes Owner ID RS Common Components Comments Recruiter Search for Applicants

Type ID Lvl Record Field Label Attributes GroupBox 1 0 HRS_SCH_WRK HRS_APP_TOOLBAR '' SubPage 2 0 HRS_APP_CAR_DRV [None ] -> HRS_APP_HDRLNK_SBP SubPage 3 0 HRS_PAGE_WRK [None ] -> HRS_CG_HEADER3_SBP SubPage 4 0 HRS_SCH_TRN [None ] -> HRS_SCH_TRN_SBP EditBox 5 0 HRS_SCH_WRK HRS_PAGE_INSTR [None ] Gray ComboBox 6 0 HRS_SCH_WRK HRS_SCH_SAV_CRIT +HRS_SEARCH_CRIT2 XLatLong PushBtn 7 0 HRS_SCH_WRK HRS_SEARCH_BTN +HRS_SEARH_BTN PushBtn->PCode GroupBox 8 0 HRS_SCH_WRK HRS_SCH_GRPBOXA '' SubPage 9 0 HRS_AGNT_PROF [None ] -> HRS_APP_SCHJB_B_SP GroupBox 10 0 HRS_SCH_WRK HRS_SCH_GRPBOXB '' SubPage 11 0 HRS_AGNT_PROF [None ] -> HRS_APP_SCHJB_A_SP GroupBox 12 0 HRS_SCH_WRK HRS_SCH_GRPBOXC '' SubPage 13 0 HRS_AGNT_PROF 'Results Page Job S -> HRS_APP_SCHJB_R_SP EditBox 14 0 HRS_SCH_WRK HRS_SITE_ID [None ]

Developer’s Guide to Customizing the Job Posting Search Index

24

Hide EditBox 15 0 HRS_AGNT_PROF HRS_PERSON_ID [None ] Hide EditBox 16 0 HRS_AGNT_PROF SEARCH_NAME [None ] Hide EditBox 17 0 HRS_SCH_WRK SETID [None ] Hide EditBox 18 0 HRS_SCH_WRK HRS_COMBO_VAL1 [None ] noPrompt EditBox 19 0 HRS_SCH_WRK HRS_COMBO_VAL [None ] noPrompt EditBox 20 0 HRS_AGNT_PROF HRS_SEARCH_ID [None ] Hide HorRule 21 0 [None ] Hide PushBtn 22 0 HRS_SCH_WRK HRS_SCH_LNK05 +HRS_SCH_LMK5B HypLink->PCode EditBox 19 0 HRS_SCH_WRK HRS_COMBO_VAL2 [None ] EditBox 20 0 HRS_SCH_WRK HRS_COMBO_VAL [None ] noPrompt EditBox 21 0 HRS_AGNT_PROF HRS_SEARCH_ID [None ] Hide HorRule 22 0 [None ] Hide PushBtn 23 0 HRS_SCH_WRK HRS_SCH_LNK05 +HRS_SCH_LMK5B HypLink->PCode

Message Catalog Detail

Message Catalog Entry: RS Common Components 18175, 169

Severity Message Msg Text Select Job Functions: Explanation Select Job Functions:

Message Catalog Entry: RS Common Components 18175, 170

Severity Message Msg Text Job Functions Explanation

SQL Detail

SQL: HRS_JOBCODE_I View

SQL Statement SELECT A.SETID, A.JOBCODE, A.EFFDT, A.EFF_STATUS, A.JOB_FAMILY, A.JOB_PROFILE_ID, A.DESCR, A.DESCRSHORT, A.REG_REGION FROM PS_HCR_JOBCODE_I A A.REG_REGION, B.JOB_FUNCTION

Developer’s Guide to Customizing the Job Posting Search Index

25

FROM PS_HCR_JOBCODE_I A, PS_JOBCODE_TBL B WHERE A.SETID = B.SETID AND A.JOBCODE = B.JOBCODE AND A.EFFDT = B.EFFDT

SQL: HRS_JOB_FUNCLVW View

SQL Statement SELECT JOB_FUNCTION, EFFDT, LANGUAGE_CD, DESCR FROM PS_JOBFUNCTION_LNG

SQL: HRS_JOB_FUNC_VW View

SQL Statement SELECT JOB_FUNCTION, EFFDT, EFF_STATUS, DESCR FROM PS_JOBFUNCTION_TBL B WHERE %EffdtCheck(JOBFUNCTION_TBL, B, %CurrentDateIn)

PeopleCode Detail

PeopleCode (CompRecFld): HRS_APP_SCHJOB(GBL).HRS_SCH_WRK.HRS_SCH_COMBO2 FieldDefault

<* 12917597 09/12/11 ... Begin *> import HRS_COMMON:SEARCH:UTIL:JobFunctionCombo; Component boolean &accessibilitymode; If Not &accessibilitymode Then Local HRS_COMMON:SEARCH:UTIL:JobFunctionCombo &jobFunctions = create HRS_COMMON:SEARCH:UTIL:JobFunctionCombo(Record.HRS_SCH_WRK, Field.HRS_SCH_COMBO2, Record.HRS_SCH_WRK, GetLevel0()(1).GetRecord(Record.HRS_SCH_WRK).GetField(Field.HRS_COMBO_VAL2), 5); HRS_SCH_WRK.HRS_SCH_COMBO2 = &jobFunctions.getHTML(); End-If; <* 12917597 09/12/11 ... End *>

PeopleCode (Appl Package): HRS_COMMON:CMP_HRS_APP_SCHJOB:UI:AppSchJobPage.OnExecute

[ . . . Unchanged Code not Shown . . . ] method displaySubpages /+ &hrs_mode as HRS_COMMON:CMP_HRS_APP_SCHJOB:UI:DisplayMode +/ Local Rowset &rsLocations, &rsJobFamilies; <* 12917597 09/12/11 ... Begin *> Local Rowset &rsJobFunctions; <* 12917597 09/12/11 ... End *>

Developer’s Guide to Customizing the Job Posting Search Index

26

/* Hide/show internal applicant specific fields */ If (&applicant.APP_PER_STATUS <> "A") Then HRS_SCH_WRK.HRS_SCH_GRPBOXI.Visible = True; Else HRS_SCH_WRK.HRS_SCH_GRPBOXI.Visible = False; End-If; /* Set default labels on search buttons */ HRS_SCH_WRK.HRS_SEARCH_BTN1.Label = HRS_SCH_WRK.HRS_SEARCH_BTN1.GetLongLabel("HRS_SEARH_BTN"); HRS_SCH_WRK.HRS_SEARCH_BTN2.Label = HRS_SCH_WRK.HRS_SEARCH_BTN2.GetLongLabel("HRS_SEARH_BTN"); HRS_SCH_WRK.HRS_SCH_SAVE_BTN2.Label = HRS_SCH_WRK.HRS_SCH_SAVE_BTN1.GetLongLabel("HRS_SCH_SAVE_BTN1"); Evaluate True When (&hrs_mode.isBasicSearchMode()) HRS_SCH_WRK.HRS_SCH_GRPBOXJ.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXA.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXB.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXC.Visible = False; <*806672 Code Begin*> If None(HRS_SCH_WRK.HRS_POSTED_WTN.Value) Then HRS_SCH_WRK.HRS_POSTED_WTN.Value = "M"; End-If; <*806672 Code End*> When (&hrs_mode.isAdvancedSearchMode()) HRS_SCH_WRK.HRS_SCH_GRPBOXJ.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXA.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXB.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXC.Visible = False; /* Default Posted within field if required */ If None(HRS_SCH_WRK.HRS_POSTED_WTN.Value) Then HRS_SCH_WRK.HRS_POSTED_WTN.Value = "M"; End-If; &rsLocations = GetRowset(Record.HRS_LOC_VW1); &rsJobFamilies = GetRowset(Record.HRS_JOB_FAM_I_2); <* 12917597 09/12/11 ... Begin *> &rsJobFunctions = GetRowset(Record.HRS_JOB_FUNC_VW); <* 12917597 09/12/11 ... End *> If &accessibilityMode = True Then HRS_SCH_WRK.HRS_SCH_GRPBOXAC1.Visible = False; &rsLocations.ShowAllRows(); &rsJobFamilies.ShowAllRows(); <* 12917597 09/12/11 ... Begin *> &rsJobFunctions.ShowAllRows(); HRS_SCH_WRK.HRS_SELECT_ALL3.Visible = True; HRS_SCH_WRK.HRS_CLEAR_ALL3.Visible = True; <* 12917597 09/12/11 ... End *> GetField(HRS_APP_CAR_DRV.HRS_SKIP_PA).Visible = True; GetField(HRS_APP_CAR_DRV.HRS_RET_PA).Visible = True; HRS_SCH_WRK.HRS_SELECT_ALL.Visible = True; HRS_SCH_WRK.HRS_SELECT_ALL1.Visible = True; HRS_SCH_WRK.HRS_SELECT_ALL2.Visible = True; HRS_SCH_WRK.HRS_CLEAR_ALL.Visible = True; HRS_SCH_WRK.HRS_CLEAR_ALL1.Visible = True; HRS_SCH_WRK.HRS_CLEAR_ALL2.Visible = True; Else HRS_SCH_WRK.HRS_SCH_GRPBOXAC1.Visible = True; &rsLocations.HideAllRows(); &rsJobFamilies.HideAllRows();

Developer’s Guide to Customizing the Job Posting Search Index

27

<* 12917597 09/12/11 ... Begin *> &rsJobFunctions.HideAllRows(); HRS_SCH_WRK.HRS_SELECT_ALL3.Visible = False; HRS_SCH_WRK.HRS_CLEAR_ALL3.Visible = False; <* 12917597 09/12/11 ... End *> GetField(HRS_APP_CAR_DRV.HRS_SKIP_PA).Visible = False; GetField(HRS_APP_CAR_DRV.HRS_RET_PA).Visible = False; HRS_SCH_WRK.HRS_SELECT_ALL.Visible = False; HRS_SCH_WRK.HRS_SELECT_ALL1.Visible = False; HRS_SCH_WRK.HRS_SELECT_ALL2.Visible = False; HRS_SCH_WRK.HRS_CLEAR_ALL.Visible = False; HRS_SCH_WRK.HRS_CLEAR_ALL1.Visible = False; HRS_SCH_WRK.HRS_CLEAR_ALL2.Visible = False; End-If; When (&hrs_mode.isBasicEditSearchMode()) HRS_SCH_WRK.HRS_SCH_GRPBOXJ.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXA.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXB.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXC.Visible = False; /* Change button labels during edit */ HRS_SCH_WRK.HRS_SEARCH_BTN1.Label = HRS_SCH_WRK.HRS_SEARCH_BTN1.GetLongLabel("HRS_SEARCH_BTN4"); HRS_SCH_WRK.HRS_SCH_SAVE_BTN2.Label = HRS_SCH_WRK.HRS_SCH_SAVE_BTN2.GetLongLabel("HRS_SCH_SAVE_BTN2"); /* Hide Dropdown during edit */ GetRecord(Record.HRS_SCH_WRK).GetField(Field.HRS_SCH_SAV_CRIT).Visible = False; GetRecord(Record.HRS_SCH_WRK).GetField(Field.HRS_SEARCH_BTN).Visible = False; When (&hrs_mode.isAdvancedEditSearchMode()) HRS_SCH_WRK.HRS_SCH_GRPBOXJ.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXA.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXB.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXC.Visible = False; /* Change button labels during edit */ HRS_SCH_WRK.HRS_SEARCH_BTN2.Label = HRS_SCH_WRK.HRS_SEARCH_BTN2.GetLongLabel("HRS_SEARCH_BTN3"); HRS_SCH_WRK.HRS_SCH_SAVE_BTN2.Label = HRS_SCH_WRK.HRS_SCH_SAVE_BTN2.GetLongLabel("HRS_SCH_SAVE_BTN2"); /* Hide Dropdown during edit */ GetRecord(Record.HRS_SCH_WRK).GetField(Field.HRS_SCH_SAV_CRIT).Visible = False; GetRecord(Record.HRS_SCH_WRK).GetField(Field.HRS_SEARCH_BTN).Visible = False; When (&hrs_mode.isAdvancedResultsMode()) /* Autocollapse criteria */ HRS_SCH_WRK.HRS_SCH_GRPBOXG.DataAreaCollapsed = True; HRS_SCH_WRK.HRS_SCH_GRPBOXJ.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXA.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXB.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXC.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXF.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXG.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXH.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXG.Label = MsgGetText(18178, 287, ""); When (&hrs_mode.isBasicResultsMode()) /* Autocollapse criteria */ HRS_SCH_WRK.HRS_SCH_GRPBOXF.DataAreaCollapsed = True; HRS_SCH_WRK.HRS_SCH_GRPBOXJ.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXA.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXB.Visible = False;

Developer’s Guide to Customizing the Job Posting Search Index

28

HRS_SCH_WRK.HRS_SCH_GRPBOXC.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXF.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXG.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXH.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXF.Label = MsgGetText(18178, 286, ""); When-Other /* DO NOTHING */ End-Evaluate; If &returnToSearch Or &returnToCE Then HRS_SCH_WRK.HRS_SCH_LNK05.Visible = True; Else HRS_SCH_WRK.HRS_SCH_LNK05.Visible = False; End-If; end-method; method refreshCombos Local HRS_COMMON:SEARCH:UTIL:LocationCombo &locations = create HRS_COMMON:SEARCH:UTIL:LocationCombo(Record.HRS_SCH_WRK, Field.HRS_SCH_COMBO, Record.HRS_SCH_WRK, GetLevel0()(1).GetRecord(Record.HRS_SCH_WRK).GetField(Field.HRS_COMBO_VAL), 5, GetLevel0()(1).HRS_SCH_WRK.SETID.Value); Local HRS_COMMON:SEARCH:UTIL:FamilyCombo &families = create HRS_COMMON:SEARCH:UTIL:FamilyCombo(Record.HRS_SCH_WRK, Field.HRS_SCH_COMBO1, Record.HRS_SCH_WRK, GetLevel0()(1).GetRecord(Record.HRS_SCH_WRK).GetField(Field.HRS_COMBO_VAL1), 5); Local string &setID; Local Rowset &RSLocations, &RSFamilies; <* 12917597 09/12/11 ... Begin *> Local Rowset &RSFunctions; <* 12917597 09/12/11 ... End *> Local number &numcount; Local number &index, &index2, &ctr; /*862240*/ /*if accessibility mode turned on, then use a grid instead of the combo htmls */ If &accessibilityMode = True Then /*FAMILIES*/ &RSFamilies = GetRowset(Record.HRS_JOB_FAM_I_2); &RSFamilies.Flush(); &RSFamilies.Select(Record.HRS_JOB_FAM_I_2, SQL.HRS_JOB_FAMILY_WHERE1); &RSFamilies.Sort(HRS_JOB_FAM_I_2.HRS_DESCR, "A"); <* 12917597 09/12/11 ... Begin *> /* Job Functions ... */ &RSFunctions = GetRowset(Record.HRS_JOB_FUNC_VW); &RSFunctions.Flush(); &RSFunctions.Select(Record.HRS_JOB_FUNC_VW, "WHERE EFF_STATUS = 'A'"); &RSFunctions.Sort(HRS_JOB_FUNC_VW.HRS_DESCR, "A"); <* 12917597 09/12/11 ... End *> /*LOCATIONS*/ &setID = GetLevel0()(1).HRS_SCH_WRK.SETID.Value; &RSLocations = GetRowset(Record.HRS_LOC_VW1); &RSLocations.Flush(); &RSLocations.Select(Record.HRS_LOC_VW1, "WHERE SETID = :1 AND STATUS='A'", &setID);

Developer’s Guide to Customizing the Job Posting Search Index

29

&RSLocations.Sort(HRS_LOC_VW1.HRS_DESCR, "A"); /*hide combo*/ HRS_SCH_WRK.HRS_SCH_GRPBXLOC.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBXLBLS.Visible = False; <* 12917597 09/12/11 ... Begin *> HRS_SCH_WRK.GB1.Visible = False; HRS_SCH_WRK.HRS_SCH_COMBO2.Visible = False; <* 12917597 09/12/11 ... End *> HRS_SCH_WRK.HRS_SCH_COMBO1.Visible = False; HRS_SCH_WRK.HRS_SCH_COMBO.Visible = False; Else HRS_SCH_WRK.HRS_SCH_COMBO1.Value = &families.getHTML(); HRS_SCH_WRK.HRS_SCH_COMBO.Value = &locations.getHTML(); /* unhide combo*/ HRS_SCH_WRK.HRS_SCH_GRPBXLBLS.Visible = True; <* 12917597 09/12/11 ... Begin *> HRS_SCH_WRK.GB1.Visible = True; HRS_SCH_WRK.HRS_SCH_COMBO2.Visible = True; <* 12917597 09/12/11 ... End *> HRS_SCH_WRK.HRS_SCH_GRPBXLOC.Visible = True; HRS_SCH_WRK.HRS_SCH_COMBO1.Visible = True; HRS_SCH_WRK.HRS_SCH_COMBO.Visible = True; End-If; end-method; method resetLabels Local Grid &grid; Local GridColumn &columnLink, &columnLabel; /* ReSet Posting title Column heading */ &grid = GetGrid(Page.HRS_APP_SCHJOB, "HRS_AGNT_RSLT_I"); &columnLink = &grid.GetColumn("SCH_JOB_TITLE_LINK"); &columnLabel = &grid.GetColumn("SCH_JOB_TITLE"); &columnLink.Label = &columnLabel.Label; /* Set Location description column heading */ &columnLink = &grid.GetColumn("LOCATION"); &columnLabel = &grid.GetColumn("LOCATION_LABEL"); &columnLink.Label = &columnLabel.Label; /* Set Job Family column heading */ &columnLink = &grid.GetColumn("JOB_FAMILY"); &columnLabel = &grid.GetColumn("JOB_FAMILY_LABEL"); &columnLink.Label = &columnLabel.Label; <* 12917597 09/12/11 ... Begin *> /* Set Job Function column heading */ &columnLink = &grid.GetColumn("JOB_FUNCTION"); &columnLabel = &grid.GetColumn("JOB_FUNCTION_LABEL"); &columnLink.Label = &columnLabel.Label; <* 12917597 09/12/11 ... End *> end-method;

PeopleCode (Appl Package): HRS_COMMON:CMP_HRS_APP_SCHJOB:UI:UIUtils.OnExecute

Developer’s Guide to Customizing the Job Posting Search Index

30

[ . . . Unchanged Code not Shown . . . ] method displayCriteria /+ &criteria as HRS_COMMON:SEARCH:BUS:AppJobSearch +/ Local number &ctr = 0; HRS_AGNT_PROF.SEARCH_NAME.Value = &criteria.searchName; HRS_AGNT_PROF.HRS_JOBAGENT_IND.Value = &criteria.jobAgentInd; HRS_AGNT_PROF.EMAIL_ADDR.Value = &criteria.emailAddress; HRS_SCH_WRK.HRS_SCH_TEXT100.Value = &criteria.keywords; HRS_SCH_WRK.HRS_POSTED_WTN.Value = &criteria.postedWithin; /* Populate the combo box related fields and the dropdowns */ HRS_SCH_WRK.HRS_COMBO_VAL.Value = ""; For &ctr = 1 To &criteria.recLocations.Len If &ctr = 1 Then HRS_SCH_WRK.HRS_COMBO_VAL.Value = &criteria.recLocations [&ctr]; Else HRS_SCH_WRK.HRS_COMBO_VAL.Value = HRS_SCH_WRK.HRS_COMBO_VAL.Value | "," | &criteria.recLocations [&ctr]; End-If; End-For; HRS_SCH_WRK.HRS_SCH_COMBO.SetDefault(); HRS_SCH_WRK.HRS_COMBO_VAL1.Value = ""; For &ctr = 1 To &criteria.jobFamilies.Len If &ctr = 1 Then HRS_SCH_WRK.HRS_COMBO_VAL1.Value = &criteria.jobFamilies [&ctr]; Else HRS_SCH_WRK.HRS_COMBO_VAL1.Value = HRS_SCH_WRK.HRS_COMBO_VAL1.Value | "," | &criteria.jobFamilies [&ctr]; End-If; End-For; HRS_SCH_WRK.HRS_SCH_COMBO1.SetDefault(); <* 12917597 09/12/11 ... Begin *> HRS_SCH_WRK.HRS_COMBO_VAL2.Value = ""; For &ctr = 1 To &criteria.jobFunctions.Len If &ctr = 1 Then HRS_SCH_WRK.HRS_COMBO_VAL2.Value = &criteria.jobFunctions [&ctr]; Else HRS_SCH_WRK.HRS_COMBO_VAL2.Value = HRS_SCH_WRK.HRS_COMBO_VAL2.Value | "," | &criteria.jobFunctions [&ctr]; End-If; End-For; rem HRS_SCH_WRK.HRS_SCH_COMBO2.SetDefault(); <* 12917597 09/12/11 ... End *> HRS_SCH_WRK.FULL_PART_TIME.Value = &criteria.fullPartTime; HRS_SCH_WRK.REG_TEMP.Value = &criteria.regTemp; HRS_SCH_WRK.HRS_DESIRED_SAL.Value = &criteria.SalRangeMin; HRS_SCH_WRK.SAL_RANGE_CURRENCY.Value = &criteria.SalRangeCurr; HRS_SCH_WRK.HRS_SAL_FREQ.Value = &criteria.SalRangeFreq; HRS_SCH_WRK.HRS_JOB_OPENING_ID.Value = &criteria.jobOpeningId; HRS_SCH_WRK.HRS_RECR_NAME.Value = &criteria.recruiterName; HRS_SCH_WRK.HRS_MGR_NAME.Value = &criteria.managerName; HRS_SCH_WRK.HRS_SORT_BY.Value = &criteria.sortBy; end-method; [ . . . Unchanged Code not Shown . . . ] method retrieveCriteria /+ &isBasicSearch as Boolean +/

Developer’s Guide to Customizing the Job Posting Search Index

31

/+ Returns HRS_COMMON:SEARCH:BUS:AppJobSearch +/ Local number &ctr = 0; Local number &jobcnt, &loccnt; Local Rowset &RSstatus, &rsLocations, &rsJobFamilies; Local HRS_COMMON:SEARCH:BUS:AppJobSearch &criteria = create HRS_COMMON:SEARCH:BUS:AppJobSearch(HRS_AGNT_PROF.HRS_PERSON_ID.Value); Local boolean &criteriaExists = False; Local string &strJobs, &strLocations; /* Else retrieve criteria */ If (&isBasicSearch) Then &criteria.searchType = "B"; Else &criteria.searchType = "A"; End-If; /* Site ID - Hidden field */ If All(HRS_SCH_WRK.HRS_SITE_ID.Value) Then &criteria.siteId = HRS_SCH_WRK.HRS_SITE_ID.Value; End-If; /* Search Name - Hidden field */ If All(HRS_AGNT_PROF.SEARCH_NAME.Value) Then &criteria.searchName = HRS_AGNT_PROF.SEARCH_NAME.Value; End-If; /* Job Agent Email address */ If All(HRS_AGNT_PROF.EMAIL_ADDR.Value) Then &criteria.emailAddress = HRS_AGNT_PROF.EMAIL_ADDR.Value; End-If; /* Job Agent Indicator */ If All(HRS_AGNT_PROF.HRS_JOBAGENT_IND.Value) Then &criteria.jobAgentInd = HRS_AGNT_PROF.HRS_JOBAGENT_IND.Value; End-If; /* Sort By */ If All(HRS_SCH_WRK.HRS_SORT_BY.Value) And ( Not &isBasicSearch) Then &criteria.sortBy = HRS_SCH_WRK.HRS_SORT_BY.Value; &criteriaExists = True; End-If; /* Basic Keywords or Posting text */ If All(HRS_SCH_WRK.HRS_SCH_TEXT100.Value) Then &criteria.keywords = HRS_SCH_WRK.HRS_SCH_TEXT100.Value; &criteriaExists = True; End-If; /* Applications received within */ If All(HRS_SCH_WRK.HRS_POSTED_WTN.Value) Then &criteria.postedWithin = HRS_SCH_WRK.HRS_POSTED_WTN.Value; &criteriaExists = True; End-If; /* Full Part Time */ If All(HRS_SCH_WRK.FULL_PART_TIME.Value) And ( Not &isBasicSearch) Then &criteria.fullPartTime = HRS_SCH_WRK.FULL_PART_TIME.Value; &criteriaExists = True; End-If; /* Regular Temp */ If All(HRS_SCH_WRK.REG_TEMP.Value) And ( Not &isBasicSearch) Then

Developer’s Guide to Customizing the Job Posting Search Index

32

&criteria.regTemp = HRS_SCH_WRK.REG_TEMP.Value; &criteriaExists = True; End-If; /* Desired Pay */ If All(HRS_SCH_WRK.HRS_DESIRED_SAL.Value) And ( Not &isBasicSearch) Then &criteria.SalRangeMin = HRS_SCH_WRK.HRS_DESIRED_SAL.Value; &criteriaExists = True; End-If; /* Desired Pay Currency */ If All(HRS_SCH_WRK.SAL_RANGE_CURRENCY.Value) And ( Not &isBasicSearch) Then &criteria.SalRangeCurr = HRS_SCH_WRK.SAL_RANGE_CURRENCY.Value; &criteriaExists = True; End-If; /* Desired Pay Frequency */ If All(HRS_SCH_WRK.HRS_SAL_FREQ.Value) And ( Not &isBasicSearch) Then &criteria.SalRangeFreq = HRS_SCH_WRK.HRS_SAL_FREQ.Value; &criteriaExists = True; End-If; /* Search Job Opening Id */ If All(HRS_SCH_WRK.HRS_JOB_OPENING_ID.Value) And ( Not &isBasicSearch) Then &criteria.jobOpeningId = HRS_SCH_WRK.HRS_JOB_OPENING_ID.Value; &criteriaExists = True; End-If; /* Search Recruiter Name */ If All(HRS_SCH_WRK.HRS_RECR_NAME.Value) And ( Not &isBasicSearch) Then &criteria.recruiterName = HRS_SCH_WRK.HRS_RECR_NAME.Value; &criteriaExists = True; End-If; /* Manager Name */ If All(HRS_SCH_WRK.HRS_MGR_NAME.Value) And ( Not &isBasicSearch) Then &criteria.managerName = HRS_SCH_WRK.HRS_MGR_NAME.Value; &criteriaExists = True; End-If; If &accessibilityMode = False Then /* Job Family */ &criteria.jobFamilies = Split(HRS_SCH_WRK.HRS_COMBO_VAL1.Value, ","); /* Rec Location */ &criteria.recLocations = Split(HRS_SCH_WRK.HRS_COMBO_VAL.Value, ","); <* 12917597 09/12/11 ... Begin *> &criteria.jobFunctions = Split(HRS_SCH_WRK.HRS_COMBO_VAL2.Value, ","); <* 12917597 09/12/11 ... End *> Else /* we pull from the grid instead of the html area in accessibility mode */ /* access the job locations grid */ &strJobs = ""; &strLocations = ""; &rsJobFamilies = GetRowset(Record.HRS_JOB_FAM_I_2); &jobcnt = &rsJobFamilies.ActiveRowCount; For &ctr = 1 To &jobcnt If &rsJobFamilies(&ctr).HRS_SCH_LOC_WRK.HRS_SELECT.Value = "Y" Then

Developer’s Guide to Customizing the Job Posting Search Index

33

If None(&strJobs) Then &strJobs = &rsJobFamilies(&ctr).HRS_JOB_FAM_I_2.JOB_FAMILY.Value; Else &strJobs = &strJobs | "," | &rsJobFamilies(&ctr).HRS_JOB_FAM_I_2.JOB_FAMILY.Value; End-If; End-If; End-For; &criteria.jobFamilies = Split(&strJobs, ","); If &criteria.jobFamilies.Len = &jobcnt Then &strJobs = "0"; &criteria.jobFamilies = Split(&strJobs, ","); End-If; <* 12917597 09/12/11 ... Begin *> /* Get job functions ... */ Local string &strJobFunctions = ""; Local Rowset &rsJobFunctions = GetRowset(Record.HRS_JOB_FUNC_VW); For &ctr = 1 To &rsJobFunctions.ActiveRowCount If &rsJobFunctions(&ctr).HRS_SCH_LOC_WRK.HRS_SELECT.Value = "Y" Then If None(&strJobFunctions) Then &strJobFunctions = &rsJobFunctions(&ctr).HRS_JOB_FUNC_VW.JOB_FUNCTION.Value; Else &strJobFunctions = &strJobFunctions | "," | &rsJobFunctions(&ctr).HRS_JOB_FUNC_VW.JOB_FUNCTION.Value; End-If; End-If; End-For; &criteria.jobFunctions = Split(&strJobFunctions, ","); If &criteria.jobFunctions.Len = &rsJobFunctions.ActiveRowCount Then &strJobFunctions = "0"; &criteria.jobFunctions = Split(&strJobFunctions, ","); End-If; <* 12917597 09/12/11 ... End *> /* now get our locations from its grid*/ &rsLocations = GetRowset(Record.HRS_LOC_VW1); &loccnt = &rsLocations.ActiveRowCount; For &ctr = 1 To &loccnt If &rsLocations(&ctr).HRS_SCH_LOC_WRK.HRS_SELECT.Value = "Y" Then If None(&strLocations) Then &strLocations = &rsLocations(&ctr).HRS_LOC_VW1.HRS_LOCATION_ID.Value; Else &strLocations = &strLocations | "," | &rsLocations(&ctr).HRS_LOC_VW1.HRS_LOCATION_ID.Value; End-If; End-If; End-For; &criteria.recLocations = Split(&strLocations, ","); If &criteria.recLocations.Len = &loccnt Then &strLocations = "0"; &criteria.recLocations = Split(&strLocations, ","); End-If; End-If; If (&criteria.jobFamilies.Len > 0) Then &criteriaExists = True;

Developer’s Guide to Customizing the Job Posting Search Index

34

End-If; If (&criteria.recLocations.Len > 0) Then &criteriaExists = True; End-If; <* 12917597 09/12/11 ... Begin *> If (&criteria.jobFunctions.Len > 0) Then &criteriaExists = True; End-If; <* 12917597 09/12/11 ... End *> If Not &criteriaExists Then &criteria.setDefaultSearch(); End-If; Return &criteria; end-method; method displayResults /+ &RSresults as Rowset +/ Local number &ctr = 0; /* Populate the results rowset */ Local Rowset &displayGrid = GetRowset(Scroll.HRS_AGNT_RSLT_I); Local Record &schWrk; Local Record &appJobSchI; Local Record &jobFamI; Local Record &recResult; Local string &sortBy = GetLevel0()(1).HRS_SCH_WRK.HRS_SORT_BY.Value; &displayGrid.Flush(); If (&RSresults(1).HRS_APP_JBSCH_I.HRS_JOB_OPENING_ID.Value <> 0) Then For &ctr = 1 To &RSresults.ActiveRowCount /* Insert Results into position 1 */ &appJobSchI = &displayGrid(1).GetRecord(Record.HRS_APP_JBSCH_I); &schWrk = &displayGrid(1).GetRecord(Record.HRS_SCH_WRK); &recResult = &RSresults(&ctr).GetRecord(Record.HRS_APP_JBSCH_I); &appJobSchI.GetField(Field.OPEN_DT).Value = &recResult.GetField(Field.OPEN_DT).Value; If All(&recResult.GetField(Field.POSTING_TITLE).Value) Then &schWrk.GetField(Field.POSTING_TITLE).Label = &recResult.GetField(Field.POSTING_TITLE).Value; Else &schWrk.GetField(Field.POSTING_TITLE).Label = "Unknown"; End-If; &appJobSchI.GetField(Field.HRS_JOB_OPENING_ID).Value = &recResult.GetField(Field.HRS_JOB_OPENING_ID).Value; &appJobSchI.GetField(Field.HRS_JO_PST_SEQ).Value = &recResult.GetField(Field.HRS_JO_PST_SEQ).Value; &appJobSchI.GetField(Field.JOB_FAMILY).Value = &recResult.GetField(Field.JOB_FAMILY).Value; <* 12917597 09/12/11 ... Begin *> &appJobSchI.GetField(Field.JOB_FUNCTION).Value = &recResult.GetField(Field.JOB_FUNCTION).Value; <* 12917597 09/12/11 ... End *> &appJobSchI.GetField(Field.DESCR).Value = &recResult.GetField(Field.DESCR).Value; /* Set hot job icon */ If (&recResult.GetField(Field.HOT_JOB).Value = "Y") Then &schWrk.GetField(Field.HRS_SCH_IMAGE1).Visible = True; Else

Developer’s Guide to Customizing the Job Posting Search Index

35

&schWrk.GetField(Field.HRS_SCH_IMAGE1).Visible = False; End-If; /* Accessibility */ If &accessibilityMode Then &schWrk.GetField(Field.HRS_SCH_CHKBOX).Label = MsgGetText(18175, 164, ""); End-If; /* If more results to display insert another grid row */ If &ctr <> &RSresults.ActiveRowCount Then &displayGrid.InsertRow(0); End-If; End-For; /* Default to Sort By Date */ If &sortBy = "" Then &sortBy = "D"; End-If; /* Sort the results */ Evaluate &sortBy When "D" /* Sort by posting Date */ &displayGrid.Sort(HRS_APP_JBSCH_I.OPEN_DT, "D"); When "L" /* Sort By location */ &displayGrid.Sort(HRS_APP_JBSCH_I.DESCR, "A"); When-Other /* Dont sort */ End-Evaluate; /* Display buttons and links */ HRS_SCH_WRK.HRS_SELECT_ALL.Visible = True; HRS_SCH_WRK.HRS_CLEAR_ALL.Visible = True; HRS_SCH_WRK.HRS_SCH_SAVE_BTN.Visible = True; HRS_SCH_WRK.HRS_APPLY_PB.Visible = True; HRS_SCH_WRK.HRS_REFER_PB.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXCR.Visible = True; HRS_SCH_WRK.HRS_SCH_GRPBOXCNR.Visible = False; HRS_SCH_WRK.HRS_RSLT_ICN.Visible = True; HRS_SCH_WRK.DESCR100.Visible = True; If &RSresults.ActiveRowCount = 500 Then HRS_SCH_WRK.DESCR254 = MsgGetText(18175, 5058, "") | " " | MsgGetText(124, 92, ""); HRS_SCH_WRK.DESCR100.Visible = False; HRS_SCH_WRK.DESCR254.Visible = True; Else HRS_SCH_WRK.DESCR100 = String(&RSresults.ActiveRowCount) | " " | MsgGetText(18175, 173, ""); HRS_SCH_WRK.DESCR100.Visible = True; HRS_SCH_WRK.DESCR254.Visible = False; End-If Else /* Hide first result row */ &appJobSchI = &displayGrid(1).GetRecord(Record.HRS_APP_JBSCH_I); &schWrk = &displayGrid(1).GetRecord(Record.HRS_SCH_WRK); &jobFamI = &displayGrid(1).GetRecord(Record.HRS_JOB_FAM_I); &appJobSchI.GetField(Field.OPEN_DT).Visible = False; &schWrk.GetField(Field.POSTING_TITLE).Visible = False; &appJobSchI.GetField(Field.HRS_JOB_OPENING_ID).Visible = False; &appJobSchI.GetField(Field.JOB_FAMILY).Visible = False; &appJobSchI.GetField(Field.DESCR).Visible = False; &jobFamI.GetField(Field.DESCR).Visible = False; &schWrk.GetField(Field.HRS_SCH_IMAGE1).Visible = False;

Developer’s Guide to Customizing the Job Posting Search Index

36

&schWrk.GetField(Field.DESCR50).Visible = False; &schWrk.GetField(Field.HRS_SCH_CHKBOX).Visible = False; /* Hide buttons and links */ HRS_SCH_WRK.HRS_SELECT_ALL.Visible = False; HRS_SCH_WRK.HRS_CLEAR_ALL.Visible = False; HRS_SCH_WRK.HRS_SCH_SAVE_BTN.Visible = False; HRS_SCH_WRK.HRS_APPLY_PB.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXCR.Visible = False; HRS_SCH_WRK.HRS_SCH_GRPBOXCNR.Visible = True; HRS_SCH_WRK.HRS_RSLT_ICN.Visible = False; HRS_SCH_WRK.DESCR100.Visible = False; HRS_SCH_WRK.HRS_REFER_PB.Visible = False; /* Default description - No results found*/ HRS_SCH_WRK.HRS_CC_NO_RSLT.Value = MsgGetText(18175, 131, ""); End-If; end-method; /** * resetFields */ method resetFields Local HRS_COMMON:SEARCH:BUS:AppJobSearch &criteria = create HRS_COMMON:SEARCH:BUS:AppJobSearch(HRS_AGNT_PROF.HRS_PERSON_ID.Value); /* Reset the combo boxes */ HRS_SCH_WRK.HRS_COMBO_VAL.Value = ""; HRS_SCH_WRK.HRS_COMBO_VAL1.Value = ""; <* 12917597 09/12/11 ... Begin *> HRS_SCH_WRK.HRS_COMBO_VAL2.Value = ""; <* 12917597 09/12/11 ... End *> %This.displayCriteria(&criteria); end-method;

PeopleCode (Appl Package): HRS_COMMON:CMP_HRS_APP_SEARCHES:UI:UIUtils.OnExecute

[ . . . Unchanged Code not Shown . . . ] method displayCriteria /+ &criteria as HRS_COMMON:SEARCH:BUS:AppJobSearch +/ Local number &ctr = 0; HRS_AGNT_PROF.SEARCH_NAME.Value = &criteria.searchName; HRS_AGNT_PROF.EMAIL_ADDR.Value = &criteria.emailAddress; HRS_AGNT_PROF.HRS_JOBAGENT_IND.Value = &criteria.jobAgentInd; HRS_SCH_WRK.HRS_SCH_TEXT100.Value = &criteria.keywords; HRS_SCH_WRK.HRS_POSTED_WTN.Value = &criteria.postedWithin; /* Populate the combo box related fields and the dropdowns */ HRS_SCH_WRK.HRS_COMBO_VAL.Value = ""; For &ctr = 1 To &criteria.recLocations.Len If &ctr = 1 Then HRS_SCH_WRK.HRS_COMBO_VAL.Value = &criteria.recLocations [&ctr]; Else HRS_SCH_WRK.HRS_COMBO_VAL.Value = HRS_SCH_WRK.HRS_COMBO_VAL.Value | "," | &criteria.recLocations [&ctr];

Developer’s Guide to Customizing the Job Posting Search Index

37

End-If; End-For; HRS_SCH_WRK.HRS_SCH_COMBO.SetDefault(); HRS_SCH_WRK.HRS_COMBO_VAL1.Value = ""; For &ctr = 1 To &criteria.jobFamilies.Len If &ctr = 1 Then HRS_SCH_WRK.HRS_COMBO_VAL1.Value = &criteria.jobFamilies [&ctr]; Else HRS_SCH_WRK.HRS_COMBO_VAL1.Value = HRS_SCH_WRK.HRS_COMBO_VAL1.Value | "," | &criteria.jobFamilies [&ctr]; End-If; End-For; HRS_SCH_WRK.HRS_SCH_COMBO1.SetDefault(); <* 12917597 09/12/11 ... Begin *> HRS_SCH_WRK.HRS_SCH_COMBO2.SetDefault(); <* 12917597 09/12/11 ... End *> HRS_SCH_WRK.FULL_PART_TIME.Value = &criteria.fullPartTime; HRS_SCH_WRK.REG_TEMP.Value = &criteria.regTemp; HRS_SCH_WRK.HRS_DESIRED_SAL.Value = &criteria.SalRangeMin; HRS_SCH_WRK.SAL_RANGE_CURRENCY.Value = &criteria.SalRangeCurr; HRS_SCH_WRK.HRS_SAL_FREQ.Value = &criteria.SalRangeFreq; HRS_SCH_WRK.HRS_JOB_OPENING_ID.Value = &criteria.jobOpeningId; HRS_SCH_WRK.HRS_RECR_NAME.Value = &criteria.recruiterName; HRS_SCH_WRK.HRS_MGR_NAME.Value = &criteria.managerName; HRS_SCH_WRK.HRS_SORT_BY.Value = &criteria.sortBy; end-method;

PeopleCode (Appl Package): HRS_COMMON:SEARCH:BUS:AppJobSearch.OnExecute

[ . . . Unchanged Code not Shown . . . ] class AppJobSearch extends HRS_COMMON:SEARCH:BUS:SearchCriteria /* Public methods */ method AppJobSearch(&owner As number); method execute() Returns Rowset; method getName() Returns string; method getOwnerID() Returns number; method isBasic() Returns boolean; method setDefaultSearch(); method isDefaultSearch() Returns boolean; /* Public properties */ property number ownerId; property string searchName; property string emailAddress; property date lastUpdate; property string jobAgentInd; property number searchId; property string searchType; property string rowsPerPage; property string sortBy; property string keywords; property string postedWithin; property number SalRangeMin; property number SalRangeMax; property string SalRangeCurr; property string SalRangeFreq; property string regTemp; property string fullPartTime;

Developer’s Guide to Customizing the Job Posting Search Index

38

property number jobOpeningId; property string recruiterName; property string managerName; property string languageCode; property number siteId; property array of string jobFamilies; property array of string recLocations; <* 12917597 09/12/11 ... Begin *> property array of string jobFunctions; <* 12917597 09/12/11 ... End *> private instance boolean &defaultSearch; Constant &DEFAULT_RESULT_COUNT = 100; Constant &STANDARD_RESULT_COUNT = 500; Constant &INTERNAL = "I"; Constant &EXTERNAL = "E"; Constant &DEFAULT_COMBO_SELECTION = "0"; end-class; [ . . . Unchanged Code not Shown . . . ] method AppJobSearch /+ &owner as Number +/ %Super = create HRS_COMMON:SEARCH:BUS:SearchCriteria(); /* Initialise state */ &jobFamilies = CreateArrayRept("", 0); &recLocations = CreateArrayRept("", 0); <* 12917597 09/12/11 ... Begin *> &jobFunctions = CreateArrayRept("", 0); <* 12917597 09/12/11 ... End *> &languageCode = %Language_User; &ownerId = &owner; &defaultSearch = False; end-method; [ . . . Unchanged Code not Shown . . . ] method execute /+ Returns Rowset +/ /+ Extends/implements HRS_COMMON:SEARCH:BUS:SearchCriteria.execute +/ Local HRS_COMMON:SEARCH:BUS:VerityJobSchProvider &provider = create HRS_COMMON:SEARCH:BUS:VerityJobSchProvider(); Local Rowset &SearchResults, &rs_SiteSource; Local number &numRows, &nbr_Count; Local number &index = 0; Local number &i; Local string &str_SourceId; /* If no criteria specified then set to default */ If %This.defaultSearch Then %This.setDefaultSearch(); End-If; If &siteId <> 0 Then &rs_SiteSource = CreateRowset(Record.HRS_SRCE_SITE_I); &nbr_Count = &rs_SiteSource.Fill("WHERE HRS_SITE_ID = :1", &siteId);

Developer’s Guide to Customizing the Job Posting Search Index

39

If &nbr_Count > 0 Then For &i = 1 To &nbr_Count If All(&str_SourceId) Then &str_SourceId = &str_SourceId | ", " | &rs_SiteSource.GetRow(&i).HRS_SRCE_SITE_I.HRS_SOURCE_ID.Value; Else &str_SourceId = &rs_SiteSource.GetRow(&i).HRS_SRCE_SITE_I.HRS_SOURCE_ID.Value; End-If; End-For; &provider.setSourceId(&str_SourceId); End-If; End-If; /* Search for Internal/External Postings as appropriate */ If &applicant.APP_PER_STATUS = "E" Then /* Internal Search Request */ &provider.setPostType(&INTERNAL); Else /* External Search Request */ &provider.setPostType(&EXTERNAL); End-If; &provider.setApplicantId(%This.ownerId); &provider.setKeywords(%This.keywords); &provider.setRegTemp(%This.regTemp); &provider.SetFullPartTime(%This.fullPartTime); &provider.setPostedWithin(%This.postedWithin); &provider.setSalRangeMinRate(%This.SalRangeMin); &provider.setSalRangeMaxRate(%This.SalRangeMax); &provider.setSalRangeCurrency(%This.SalRangeCurr); &provider.setSalRangeFreq(%This.SalRangeFreq); &provider.setJobOpeningId(%This.jobOpeningId); &provider.setRecruiterName(%This.recruiterName); &provider.setManagerName(%This.managerName); /* Set Job Families and Recruiting Locations */ /* If the criteria contains the "All Locations" or "All Job Families" selection then */ /* do not limit the search in any way */ &index = %This.jobFamilies.Find(&DEFAULT_COMBO_SELECTION); If (&index = 0) Then &provider.setJobFamilies(%This.jobFamilies); End-If; &index = %This.recLocations.Find(&DEFAULT_COMBO_SELECTION); If (&index = 0) Then &provider.setRecLocations(%This.recLocations); End-If; <* 12917597 09/12/11 ... Begin *> &index = %This.jobFunctions.Find(&DEFAULT_COMBO_SELECTION); If (&index = 0) Then &provider.setJobFunctions(%This.jobFunctions); End-If; <* 12917597 09/12/11 ... End *> /* Only extract whats required */ If %This.defaultSearch Then &numRows = &DEFAULT_RESULT_COUNT; Else &numRows = &STANDARD_RESULT_COUNT; End-If; /* TODO: Set last date this search run */

Developer’s Guide to Customizing the Job Posting Search Index

40

&SearchResults = &provider.search(1, &numRows, &languageCode); Return &SearchResults; end-method; [ . . . Unchanged Code not Shown . . . ]

PeopleCode (Appl Package): HRS_COMMON:SEARCH:BUS:JobIndex.OnExecute

[ . . . Unchanged Code not Shown . . . ] method updateStyleFiles Local File &styleFile; /* Update style.vgw */ &styleFile = GetFile(&styleDir | "style.vgw", "W", %FilePath_Absolute); &styleFile.WriteLine("$control: 1"); &styleFile.WriteLine("gateway:"); &styleFile.WriteLine("{"); &styleFile.WriteLine("}"); &styleFile.WriteLine("$$"); &styleFile.Close(); /* Update style.dft */ &styleFile = GetFile(&styleDir | "style.dft", "W", %FilePath_Absolute); &styleFile.WriteLine("$control: 1"); &styleFile.WriteLine("dft:"); &styleFile.WriteLine("{"); &styleFile.WriteLine(" field: DOC"); &styleFile.WriteLine(" /filter=""zone"""); &styleFile.WriteLine(" zone-begin: NOEXTRACT"); &styleFile.WriteLine(" /hidden=yes"); &styleFile.WriteLine(" field:Title"); &styleFile.WriteLine(" /zone=Title"); &styleFile.WriteLine(" /hidden=yes"); &styleFile.WriteLine(" zone-end: NOEXTRACT"); &styleFile.WriteLine(" zone-begin: NOEXTRACT"); &styleFile.WriteLine(" /hidden=yes"); &styleFile.WriteLine(" field:Keywords"); &styleFile.WriteLine(" /zone=Keywords"); &styleFile.WriteLine(" /hidden=yes"); &styleFile.WriteLine(" zone-end: NOEXTRACT"); &styleFile.WriteLine("}"); &styleFile.Close(); /* Update style.ufl - user fields */ &styleFile = GetFile(&styleDir | "style.ufl", "W", %FilePath_Absolute); &styleFile.WriteLine("data-table: ddf"); &styleFile.WriteLine("{"); &styleFile.WriteLine(" varwidth: JOB_OPENING_ID dxa"); &styleFile.WriteLine(" varwidth: JOB_POSTING_ID dxa"); &styleFile.WriteLine(" varwidth: POST_TYPE dxa"); &styleFile.WriteLine(" varwidth: POSTING_TITLE dxa"); &styleFile.WriteLine(" varwidth: JOB_FAMILY dxa"); <* 12917597 09/12/11 ... Begin *> &styleFile.WriteLine(" varwidth: JOB_FUNCTION dxa"); <* 12917597 09/12/11 ... End *> &styleFile.WriteLine(" varwidth: RCMNT_LOC_DESCR dxa"); &styleFile.WriteLine(" varwidth: HIRER_NAME dxa"); &styleFile.WriteLine(" varwidth: DEPT_NAME dxa"); &styleFile.WriteLine(" varwidth: HOT_JOB dxa");

Developer’s Guide to Customizing the Job Posting Search Index

41

&styleFile.WriteLine(" fixwidth: MIN_SALARY 4 unsigned-integer"); &styleFile.WriteLine(" fixwidth: MAX_SALARY 4 unsigned-integer"); &styleFile.WriteLine(" varwidth: POST_OPEN_DT_DSP dxa"); &styleFile.WriteLine(" fixwidth: POST_OPEN_DT 4 date"); &styleFile.WriteLine(" varwidth: SOURCE_ID dxa"); &styleFile.WriteLine("}"); &styleFile.Close(); end-method; [ . . . Unchanged Code not Shown . . . ]

PeopleCode (Appl Package): HRS_COMMON:SEARCH:BUS:JobIndexEntry.OnExecute

[ . . . Unchanged Code not Shown . . . ] class JobIndexEntry method JobIndexEntry(); method formatZone(&rec As Record, &pArrLangfile As array of array of File, &pArrLang As array of string, &arrCatProps As array of Rowset, &arrCatTypes As array of string, &pArrENGFile As array of File); method fillCountryCityState(); method fillJobFamily(); method fillJobRequirements(); method fillJobPostingDescr(); method fillRecruitingLocation(); method fillNonPrimaryRecLocation(); method fillSalaryRanges(); method fillSalaryRangeJobRqmt(); method fillDeptName(); method fillManagerNames(&p_recruiterId As string, &p_managerId As string); method writeBifRecord(&pArrLangfile As array of array of File, &pArrLang As array of string, &pArrENGFile As array of File); method writeHeaderTag(&pRecordNbr As number, &pArrLangfile As array of array of File, &pArrLang As array of string, &tag As string, &pArrENGFile As array of File); method extractLocationAreas(&locId As number, &setId As string); method getJobOpeningId() Returns number; method setJobOpeningId(&newValue As number); method getBusinessUnit() Returns string; method setBusinessUnit(&newValue As string); method getJobOpnStatus() Returns string; method setJobOpnStatus(&newValue As string); method getJobPostingSeq() Returns number; method setJobPostingSeq(&newValue As number); method getPostOpenDate() Returns date; method setPostOpenDate(&newValue As date); method getPostCloseDate() Returns date; method setPostCloseDate(&newValue As date); method getFullPartTime() Returns string; method setFullPartTime(&newValue As string); method getRegularTemp() Returns string; method setRegularTemp(&newValue As string); method getMinSalaryRate() Returns number; method setMinSalaryRate(&newValue As number); method getMaxSalaryRate() Returns number; method setMaxSalaryRate(&newValue As number); method getSalaryCurrency() Returns string; method setSalaryCurrency(&newValue As string); method getSalaryFrequency() Returns string; method setSalaryFrequency(&newValue As string); method getPostType() Returns string;

Developer’s Guide to Customizing the Job Posting Search Index

42

method setPostType(&newValue As string); method getPostingTitle() Returns string; method setPostingTitle(&newValue As string); method getCity() Returns string; method setCity(&newValue As string); method getState() Returns string; method setState(&newValue As string); method getStateDescr() Returns string; method setStateDescr(&newValue As string); method getCountry() Returns string; method setCountry(&newValue As string); method getCountryDescr() Returns string; method setCountryDescr(&newValue As string); method getJobFamily() Returns string; method setJobFamily(&newValue As string); method getRecruitingLocation() Returns string; method setRecruitingLocation(&newValue As string); method getRecLocationDescr() Returns string; method setRecLocationDescr(&newValue As string); method getLang() Returns string; method setLang(&newValue As string); method getPostingDesc() Returns string; method setPostingDesc(&newValue As string); method getEffDt() Returns date; method setEffDt(&newValue As date); method getJobSource() Returns string; method setJobSource(&newValue As string); method getRecruiterName() Returns string; method setRecruiterName(&newValue As string); method getHiringMgrName() Returns string; method setHiringMgrName(&newValue As string); method getDocFileName() Returns string; method setDocFileName(&newValue As string); method getDocFileName2() Returns string; method setDocFileName2(&newValue As string); method getJobCode() Returns string; method setJobCode(&newValue As string); method getCompany() Returns string; method setCompany(&newValue As string); method getDeptId() Returns string; method setDeptId(&newValue As string); method getHRLocation() Returns string; method setHRLocation(&newValue As string); method getRecLocationId() Returns number; method setRecLocationId(&newValue As number); method getHotJob() Returns string; method setHotJob(&newValue As string); method getDeptName() Returns string; method setDeptName(&newValue As string); method setSourceId(&newValue As number); method getSourceId() Returns number; method flush(); private method GetPropRS(&arrCatProps As array of Rowset, &arrCatTypes As array of string, &catType As string) Returns Rowset; method FormatPropertyZone(&catItemRec As Record, &searchfld As string, &fldvalue As string); /* One zone for each individual catalog item */ instance string &catalogzone; /* Zoned single line of data containing concatenation of catalog item and descriptions */ instance string &catalogzone2; instance number &recordNbr;

Developer’s Guide to Customizing the Job Posting Search Index

43

instance number &jobOpeningId; instance string &businessUnit; instance string &jobOpnStatus; instance number &postingSeq; instance date &postOpenDate; instance date &postCloseDate; instance string &fullPartTime; instance string &regularTemp; instance number &JOminSalaryRate; instance number &JOmaxSalaryRate; instance string &JOsalaryCurrency; instance string &JOsalaryFrequency; instance number &minSalaryRate; instance number &maxSalaryRate; instance string &salaryCurrency; instance string &salaryFrequency; instance string &postType; instance string &postingTitle; instance string &secPostingTitle; instance string &city; instance string &state; instance string &stateDescr; instance string &country; instance string &countryDescr; instance string &jobFamily; <* 12917597 09/12/11 ... Begin *> instance string &jobFunction; <* 12917597 09/12/11 ... End *> instance string &recruitingLocation; instance string &recLocationDescr; instance string &language; instance string &postingDesc; instance string &secPostingDesc; instance string &jobSource; instance string &recruiterName; instance string &hiringMgrName; instance string &docFileName; instance string &docFileName2; instance string &jobCode; instance string &company; instance string &deptId; instance string &HRLocation; instance number &recLocationId; instance string &hotJob; instance string &DeptName; instance number &SourceId; /* document start position */ instance number &startPos; instance number &startPos2; /* language file index */ instance number &fileIndex; /* Property rating scale */ instance HRS_COMMON:SEARCHMATCH:Utilities:PropertyScale &propscale; /* Business object layer helper objects */ instance HRS_BO:BUS:BODefaults &BOLayer; instance HRS_BO:BUS:RecruiterProfile &recruiterProfile; instance date &effdt; /* Null date */ instance date &nullDate; instance string &nullString; /* Instance Record/Rowset objects */ instance Rowset &RSlocations;

Developer’s Guide to Customizing the Job Posting Search Index

44

instance Rowset &RSDept; instance Rowset &RSJobCode; instance Record &recLocationAreaDescr; instance Rowset &RSJobReqs; instance Rowset &RSJobReqsSalRange; instance Rowset &RSSalRangeJobReqs; instance Rowset &RSJobDsc; /* ice 1850830000 need seperate rowset for internal vs external job descr */ instance Rowset &RSJobDscLngIn; instance Rowset &RSJobDscLngEx; instance Record &recCountry; instance Record &recState; end-class; [ . . . Unchanged Code not Shown . . . ] method flush &recordNbr = 0; &jobOpeningId = 0; &businessUnit = ""; &jobOpnStatus = ""; &postingSeq = 0; &fullPartTime = ""; &regularTemp = ""; &minSalaryRate = 0; &maxSalaryRate = 0; &salaryCurrency = ""; &salaryFrequency = ""; &postType = ""; &postingTitle = ""; &city = ""; &state = ""; &stateDescr = ""; &country = ""; &countryDescr = ""; &jobFamily = ""; <* 12917597 09/12/11 ... Begin *> &jobFunction = ""; <* 12917597 09/12/11 ... End *> &recruitingLocation = ""; &language = ""; &postingDesc = ""; &jobSource = ""; &recruiterName = ""; &hiringMgrName = ""; &effdt = &nullDate; &postOpenDate = &nullDate; &postCloseDate = &nullDate; &jobCode = ""; &company = ""; &deptId = ""; &HRLocation = ""; &recLocationId = 0; &hotJob = ""; &DeptName = ""; end-method; [ . . . Unchanged Code not Shown . . . ] method fillJobFamily /* TODO: If IsFederal then we need to populate GVT_PATCOB_CD for federal

Developer’s Guide to Customizing the Job Posting Search Index

45

when this is added to HRS_JOBCODE_I */ Local string &setId; &jobFamily = &nullString; <* 12917597 09/12/11 ... Begin *> &jobFunction = &nullString; <* 12917597 09/12/11 ... End *> &setId = GetSetId(Field.BUSINESS_UNIT, &businessUnit, Record.HRS_JOBCODE_I, ""); &RSJobCode.Flush(); &RSJobCode.Fill(SQL.HRS_SCH_JOBFAMILY, &setId, &jobCode); If (&RSJobCode(1).HRS_JOBCODE_I.JOB_FAMILY.Value <> "") Then &jobFamily = &RSJobCode(1).HRS_JOBCODE_I.JOB_FAMILY.Value; End-If; <* 12917597 09/12/11 ... Begin *> If (&RSJobCode(1).HRS_JOBCODE_I.JOB_FUNCTION.Value <> "") Then &jobFunction = &RSJobCode(1).HRS_JOBCODE_I.JOB_FUNCTION.Value; End-If; <* 12917597 09/12/11 ... End *> end-method; [ . . . Unchanged Code not Shown . . . ] method writeBifRecord /+ &pArrLangfile as Array2 of File, +/ /+ &pArrLang as Array of String, +/ /+ &pArrENGFile as Array of File +/ /*------------------------*/ /* write to the .bif file */ /*------------------------*/ Local string &veggieKey = "{" | &jobOpeningId | "}{" | &postType | "}"; Local number &endPos = &pArrLangfile [&fileIndex][1].GetPosition() - &startPos; &pArrLangfile [&fileIndex][2].WriteLine("VdkVgwKey:" | &veggieKey); &pArrLangfile [&fileIndex][2].WriteLine("DOC_FN:" | %This.getDocFileName()); &pArrLangfile [&fileIndex][2].WriteLine("DOC_OF:" | &startPos); &pArrLangfile [&fileIndex][2].WriteLine("DOC_SZ:" | &endPos); &pArrLangfile [&fileIndex][2].WriteLine("JOB_OPENING_ID:" | &jobOpeningId); &pArrLangfile [&fileIndex][2].WriteLine("JOB_POSTING_ID:" | &postingSeq); &pArrLangfile [&fileIndex][2].WriteLine("POST_TYPE:" | &postType); &pArrLangfile [&fileIndex][2].WriteLine("POSTING_TITLE:" | &postingTitle); &pArrLangfile [&fileIndex][2].WriteLine("JOB_FAMILY:" | &jobFamily); <* 12917597 09/12/11 ... Begin *> &pArrLangfile [&fileIndex][2].WriteLine("JOB_FUNCTION:" | &jobFunction); <* 12917597 09/12/11 ... End *> &pArrLangfile [&fileIndex][2].WriteLine("RCMNT_LOC_DESCR:" | &recLocationDescr); &pArrLangfile [&fileIndex][2].WriteLine("HIRER_NAME:" | &hiringMgrName); &pArrLangfile [&fileIndex][2].WriteLine("DEPT_NAME:" | &DeptName); &pArrLangfile [&fileIndex][2].WriteLine("HOT_JOB:" | &hotJob); &pArrLangfile [&fileIndex][2].WriteLine("MIN_SALARY:" | &minSalaryRate); &pArrLangfile [&fileIndex][2].WriteLine("MAX_SALARY:" | &maxSalaryRate); &pArrLangfile [&fileIndex][2].WriteLine("POST_OPEN_DT_DSP:" | &postOpenDate); &pArrLangfile [&fileIndex][2].WriteLine("POST_OPEN_DT:" | &postOpenDate); &pArrLangfile [&fileIndex][2].WriteLine("SOURCE_ID:" | &SourceId); &pArrLangfile [&fileIndex][2].WriteLine("<<EOD>>"); /*------------------------*/ /* write to the .bif file for Job Opening Item Collection, in English */

Developer’s Guide to Customizing the Job Posting Search Index

46

/*------------------------*/ If HRS_JSRCH_AET.HRS_JPM_INTGRN = "Y" Then Local string &veggieKey2 = "{" | &jobOpeningId | "}{" | &postingSeq | "}{" | &postType | "}"; Local number &endPos2 = &pArrENGFile [1].GetPosition() - &startPos2; &pArrENGFile [2].WriteLine("VdkVgwKey:" | &veggieKey2); &pArrENGFile [2].WriteLine("DOC_FN:" | %This.getDocFileName2()); &pArrENGFile [2].WriteLine("DOC_OF:" | &startPos2); &pArrENGFile [2].WriteLine("DOC_SZ:" | &endPos2); &pArrENGFile [2].WriteLine("JOB_OPENING_ID:" | &jobOpeningId); &pArrENGFile [2].WriteLine("JOB_POSTING_ID:" | &postingSeq); &pArrENGFile [2].WriteLine("POST_TYPE:" | &postType); &pArrENGFile [2].WriteLine("<<EOD>>"); End-If; end-method; method writeHeaderTag /+ &pRecordNbr as Number, +/ /+ &pArrLangfile as Array2 of File, +/ /+ &pArrLang as Array of String, +/ /+ &tag as String, +/ /+ &pArrENGFile as Array of File +/ If &tag = "S" Then /*------------------------*/ /* Write to the .dat file */ /*------------------------*/ &fileIndex = &pArrLang.Find(%This.getLang()); &startPos = &pArrLangfile [&fileIndex][1].GetPosition(); &pArrLangfile [&fileIndex][1].WriteLine("<RECORD" | String(&pRecordNbr) | ">"); &pArrLangfile [&fileIndex][1].WriteLine(" <JOB_OPENING_ID>" | &jobOpeningId | "</JOB_OPENING_ID>"); &pArrLangfile [&fileIndex][1].WriteLine(" <JOB_POSTING_ID>" | &postingSeq | "</JOB_POSTING_ID>"); &pArrLangfile [&fileIndex][1].WriteLine(" <JOB_BUSUNIT>" | &businessUnit | "</JOB_BUSUNIT>"); &pArrLangfile [&fileIndex][1].WriteLine(" <OPENING_STATUS>" | &jobOpnStatus | "</OPENING_STATUS>"); &pArrLangfile [&fileIndex][1].WriteLine(" <POST_OPEN_DT_DSP>" | &postOpenDate | "</POST_OPEN_DT_DSP>"); &pArrLangfile [&fileIndex][1].WriteLine(" <POST_OPEN_DT>" | &postOpenDate | "</POST_OPEN_DT>"); &pArrLangfile [&fileIndex][1].WriteLine(" <POST_CLOSE_DT>" | &postCloseDate | "</POST_CLOSE_DT>"); &pArrLangfile [&fileIndex][1].WriteLine(" <FULL_PART>" | &fullPartTime | "</FULL_PART>"); &pArrLangfile [&fileIndex][1].WriteLine(" <REG_TEMP>" | &regularTemp | "</REG_TEMP>"); &pArrLangfile [&fileIndex][1].WriteLine(" <MIN_SALARY>" | &minSalaryRate | "</MIN_SALARY>"); &pArrLangfile [&fileIndex][1].WriteLine(" <MAX_SALARY>" | &maxSalaryRate | "</MAX_SALARY>"); &pArrLangfile [&fileIndex][1].WriteLine(" <SALARY_CURR>" | &salaryCurrency | "</SALARY_CURR>"); &pArrLangfile [&fileIndex][1].WriteLine(" <SALARY_FREQ>" | &salaryFrequency | "</SALARY_FREQ>"); &pArrLangfile [&fileIndex][1].WriteLine(" <POST_TYPE>" | &postType | "</POST_TYPE>"); &pArrLangfile [&fileIndex][1].WriteLine(" <POSTING_DESC>" | &postingDesc | "</POSTING_DESC>"); &pArrLangfile [&fileIndex][1].WriteLine(" <POSTING_TITLE>" | &postingTitle | "</POSTING_TITLE>"); &pArrLangfile [&fileIndex][1].WriteLine(" <JOB_FAMILY>" | &jobFamily | "</JOB_FAMILY>");

Developer’s Guide to Customizing the Job Posting Search Index

47

<* 12917597 09/12/11 ... Begin *> &pArrLangfile [&fileIndex][1].WriteLine(" <JOB_FUNCTION>" | &jobFunction | "</JOB_FUNCTION>"); <* 12917597 09/12/11 ... End *> &pArrLangfile [&fileIndex][1].WriteLine(" <COUNTRY>" | &country | "</COUNTRY>"); &pArrLangfile [&fileIndex][1].WriteLine(" <CITY>" | &city | "</CITY>"); &pArrLangfile [&fileIndex][1].WriteLine(" <STATE>" | &state | "</STATE>"); &pArrLangfile [&fileIndex][1].WriteLine(" <RCMNT_LOCATION>" | &recruitingLocation | "</RCMNT_LOCATION>"); &pArrLangfile [&fileIndex][1].WriteLine(" <RCMNT_LOC_DESCR>" | &recLocationDescr | "</RCMNT_LOC_DESCR>"); &pArrLangfile [&fileIndex][1].WriteLine(" <SOURCE_ID>" | &SourceId | "</SOURCE_ID>"); &pArrLangfile [&fileIndex][1].WriteLine(" <RECR_NAME>" | &recruiterName | "</RECR_NAME>"); &pArrLangfile [&fileIndex][1].WriteLine(" <HIRER_NAME>" | &hiringMgrName | "</HIRER_NAME>"); &pArrLangfile [&fileIndex][1].WriteLine(" <DEPT_NAME>" | &DeptName | "</DEPT_NAME>"); Else &pArrLangfile [&fileIndex][1].WriteLine("</RECORD" | String(&pRecordNbr) | ">"); End-If; If HRS_JSRCH_AET.HRS_JPM_INTGRN = "Y" Then If &tag = "S" Then /*------------------------*/ /* Write to the .dat file */ /*------------------------*/ &startPos2 = &pArrENGFile [1].GetPosition(); &pArrENGFile [1].WriteLine("<RECORD" | String(&pRecordNbr) | ">"); &pArrENGFile [1].WriteLine(" <JOB_OPENING_ID>" | &jobOpeningId | "</JOB_OPENING_ID>"); &pArrENGFile [1].WriteLine(" <JOB_POSTING_ID>" | &postingSeq | "</JOB_POSTING_ID>"); &pArrENGFile [1].WriteLine(" <POST_TYPE>" | &postType | "</POST_TYPE>"); Else &pArrENGFile [1].WriteLine("</RECORD" | String(&pRecordNbr) | ">"); End-If; End-If end-method; [ . . . Unchanged Code not Shown . . . ]

PeopleCode (Appl Package): HRS_COMMON:SEARCH:BUS:VerityJobSchProvider.OnExecute

[ . . . Unchanged Code not Shown . . . ] class VerityJobSchProvider /* Public members */ method VerityJobSchProvider(); method search(&searchStartNbr As number, &searchPageChunk As number, &langCd As string) Returns Rowset; method searchCollection(&searchStartNbr As number, &searchPageChunk As number, &langCd As string) Returns ApiObject; method buildJobQueryText() Returns string;

Developer’s Guide to Customizing the Job Posting Search Index

48

method determinePostedWtnDate() Returns date; method determineRecLocations(); method determineJobFamilies(); method flush(); /* Signifies whether this criteria represents an Applicant or a Recuiter search for jobs */ method isRecruiterSearch() Returns boolean; /* Possible search owners */ method setRecruiterId(&p_recruiterId As string); method setApplicantId(&p_ApplicantId As number); method setSearchName(&p_searchName As string); method setKeywords(&p_keywords As string); method setRegTemp(&p_regTemp As string); method SetFullPartTime(&p_fullPartTime As string); method setPostedWithin(&p_postedWithin As string); method setSalRangeMinRate(&p_salRangeMin As number); method setSalRangeMaxRate(&p_salRangeMax As number); method setSalRangeCurrency(&p_salRangeCurrency As string); method setSalRangeFreq(&p_salRangeFrequency As string); method setJobOpeningId(&p_jobOpeningId As number); method setRecruiterName(&p_recruiterName As string); method setManagerName(&p_managerName As string); method setCountryCode(&p_countryCode As string); method setPostType(&p_postType As string); method setJobFamilies(&p_jobFamilies As array of string); method setRecLocations(&p_recLocations As array of string); method setSourceId(&p_SourceId As string); <* 12917597 09/12/11 ... Begin *> method setJobFunctions(&p_jobFunctions As array of string); <* 12917597 09/12/11 ... End *> /* Private members */ private /* Possible search owners */ instance number &applicantId; instance string &recruiterId; /* Criteria */ instance string &searchName; instance string &keywords; instance string &regTemp; instance string &fullPartTime; instance string &postedWithin; instance number &salRangeMin; instance number &salRangeMax; instance string &salRangeCurrency; instance string &salRangeFrequency; instance number &jobOpeningId; instance string &recruiterName; instance string &managerName; instance string &countryCode; instance string &postType; instance string &SourceId; instance array of string &jobFamilyPref; instance array of string &locationPref; <* 12917597 09/12/11 ... Begin *> instance array of string &jobFunctionPref; <* 12917597 09/12/11 ... End *> end-class; /**

Developer’s Guide to Customizing the Job Posting Search Index

49

* Constructor * */ method VerityJobSchProvider /* Apply minimal defaults */ &locationPref = CreateArrayRept("", 0); &jobFamilyPref = CreateArrayRept("", 0); <* 12917597 09/12/11 ... Begin *> &jobFunctionPref = CreateArrayRept("", 0); <* 12917597 09/12/11 ... End *> end-method; [ . . . Unchanged Code not Shown . . . ] method flush Local number &nullNumber; Local string &nullString; &applicantId = &nullNumber; &recruiterId = &nullString; /* Criteria */ &searchName = &nullString; &keywords = &nullString; &regTemp = &nullString; &fullPartTime = &nullString; &postedWithin = &nullString; &salRangeMin = &nullNumber; &salRangeMax = &nullNumber; &salRangeCurrency = &nullString; &salRangeFrequency = &nullString; &jobOpeningId = &nullNumber; &recruiterName = &nullString; &managerName = &nullString; &countryCode = &nullString; &postType = &nullString; &SourceId = &nullString; &locationPref = CreateArrayRept("", 0); &jobFamilyPref = CreateArrayRept("", 0); <* 12917597 09/12/11 ... Begin *> &jobFunctionPref = CreateArrayRept("", 0); <* 12917597 09/12/11 ... End *> end-method; [ . . . Unchanged Code not Shown . . . ] method search /+ &searchStartNbr as Number, +/ /+ &searchPageChunk as Number, +/ /+ &langCd as String +/ /+ Returns Rowset +/ Local Rowset &RSresults; Local ApiObject &resCollection, &searchResult; Local Record &recResult; /* Different result set requirements for both Applicant and Recruiter Job Searches */ If %This.isRecruiterSearch() Then &RSresults = CreateRowset(Record.HRS_REC_JBSCH_I); Else

Developer’s Guide to Customizing the Job Posting Search Index

50

&RSresults = CreateRowset(Record.HRS_APP_JBSCH_I); End-If; &resCollection = %This.searchCollection(&searchStartNbr, &searchPageChunk, &langCd); /* Build rowset result from the collection */ If All(&resCollection) Then &searchResult = &resCollection.First(); While &searchResult <> Null If %This.isRecruiterSearch() Then &recResult = &RSresults.GetRow(1).GetRecord(Record.HRS_REC_JBSCH_I); Else &recResult = &RSresults.GetRow(1).GetRecord(Record.HRS_APP_JBSCH_I); End-If; /* Extract results from the collection and build result rowset */ &recResult.GetField(Field.HRS_JOB_OPENING_ID).Value = &searchResult.SearchFields.ItemByName("JOB_OPENING_ID").value; &recResult.GetField(Field.HRS_JO_PST_SEQ).Value = &searchResult.SearchFields.ItemByName("JOB_POSTING_ID").value; &recResult.GetField(Field.HOT_JOB).Value = &searchResult.SearchFields.ItemByName("HOT_JOB").value; &recResult.GetField(Field.POSTING_TITLE).Value = &searchResult.SearchFields.ItemByName("POSTING_TITLE").value; &recResult.GetField(Field.OPEN_DT).Value = &searchResult.SearchFields.ItemByName("POST_OPEN_DT_DSP").value; &recResult.GetField(Field.JOB_FAMILY).Value = &searchResult.SearchFields.ItemByName("JOB_FAMILY").value; <* 12917597 09/12/11 ... Begin *> &recResult.GetField(Field.JOB_FUNCTION).Value = &searchResult.SearchFields.ItemByName("JOB_FUNCTION").value; <* 12917597 09/12/11 ... End *> &recResult.GetField(Field.DESCR).Value = &searchResult.SearchFields.ItemByName("RCMNT_LOC_DESCR").value; /* &recResult.GetField(Field.).Value = &searchResult.SearchFields.ItemByName("DEPT_NAME").value;*/ /* Recruiter results also include manager name andposting type */ If %This.isRecruiterSearch() Then &recResult.GetField(Field.HRS_MGR_NAME).Value = &searchResult.SearchFields.ItemByName("HIRER_NAME").value; &recResult.GetField(Field.HRS_JO_PST_TYPE).Value = &searchResult.SearchFields.ItemByName("POST_TYPE").value; End-If; &searchResult = &resCollection.Next(); If (&searchResult <> Null) Then /* Insert a new empty row at position #1 */ &RSresults.InsertRow(0); End-If; End-While; End-If; Return &RSresults; end-method; [ . . . Unchanged Code not Shown . . . ] method buildJobQueryText /+ Returns String +/

Developer’s Guide to Customizing the Job Posting Search Index

51

Local string &queryText = ""; Local string &recLocationQueryText = ""; Local string &jobFamilyQueryText = ""; <* 12917597 09/12/11 ... Begin *> Local string &jobFunctionQueryText = ""; <* 12917597 09/12/11 ... End *> Local string &booleanText = " <AND> "; Local string &orText = " <OR> "; Local date &dt; Local number &ctr = 0; If (&keywords <> "") Then &queryText = "((" | &keywords | ") <IN> POSTING_TITLE <OR> (" | &keywords | ") <IN> POSTING_DESC)"; End-If; /* The <YESNO> operator below will force the scoring for this portion of the query to return a boolean: either a 1 if the score is greater than 0 or 0 if the score is 0 */ If (&regTemp <> "") Then If None(&queryText) Then &queryText = "<YESNO>((" | &regTemp | ") <IN> REG_TEMP) "; Else &queryText = &queryText | &booleanText | "<YESNO>((" | &regTemp | ") <IN> REG_TEMP) "; End-If; End-If; If (&fullPartTime <> "") Then If None(&queryText) Then &queryText = "<YESNO>((" | &fullPartTime | ") <IN> FULL_PART) "; Else &queryText = &queryText | &booleanText | "<YESNO>((" | &fullPartTime | ") <IN> FULL_PART) "; End-If; End-If; If (&SourceId <> "") Then &SourceId = "(" | &SourceId | ")"; If None(&queryText) Then &queryText = "<YESNO>(" | &SourceId | " <IN> SOURCE_ID) "; Else &queryText = &queryText | &booleanText | "<YESNO>(" | &SourceId | " <IN> SOURCE_ID) "; End-If; End-If; /* Recruiting locations */ If (&locationPref.Len <> 0) Then For &ctr = 1 To &locationPref.Len If (&ctr = 1) Then &recLocationQueryText = "<YESNO>(" | &locationPref [&ctr]| " <IN> RCMNT_LOCATION) "; Else &recLocationQueryText = &recLocationQueryText | " <OR> <YESNO>(" | &locationPref [&ctr]| " <IN> RCMNT_LOCATION) "; End-If; End-For; &recLocationQueryText = "(" | &recLocationQueryText | ")"; /* Add the consolidated text to the overall query */ If None(&queryText) Then &queryText = &recLocationQueryText; Else &queryText = &queryText | &booleanText | &recLocationQueryText; End-If;

Developer’s Guide to Customizing the Job Posting Search Index

52

End-If; /* Job Families */ If (&jobFamilyPref.Len <> 0) Then For &ctr = 1 To &jobFamilyPref.Len If (&ctr = 1) Then &jobFamilyQueryText = "<YESNO>(" | &jobFamilyPref [&ctr]| " <IN> JOB_FAMILY) "; Else &jobFamilyQueryText = &jobFamilyQueryText | " <OR> <YESNO>(" | &jobFamilyPref [&ctr]| " <IN> JOB_FAMILY) "; End-If; End-For; &jobFamilyQueryText = "(" | &jobFamilyQueryText | ")"; /* Add the consolidated text to the overall query */ If None(&queryText) Then &queryText = &jobFamilyQueryText; Else &queryText = &queryText | &booleanText | &jobFamilyQueryText; End-If; End-If; <* 12917597 09/12/11 ... Begin *> /* Job Functions */ If (&jobFunctionPref.Len <> 0) Then For &ctr = 1 To &jobFunctionPref.Len If (&ctr = 1) Then &jobFunctionQueryText = "<YESNO>(" | &jobFunctionPref [&ctr]| " <IN> JOB_FUNCTION) "; Else &jobFunctionQueryText = &jobFunctionQueryText | " <OR> <YESNO>(" | &jobFunctionPref [&ctr]| " <IN> JOB_FUNCTION) "; End-If; End-For; &jobFunctionQueryText = "(" | &jobFunctionQueryText | ")"; /* Add the consolidated text to the overall query */ If None(&queryText) Then &queryText = &jobFunctionQueryText; Else &queryText = &queryText | &booleanText | &jobFunctionQueryText; End-If; End-If; <* 12917597 09/12/11 ... End *> /* Posted Within Date */ &dt = %This.determinePostedWtnDate(); If All(&dt) Then If None(&queryText) Then &queryText = " (POST_OPEN_DT >= " | &dt | ")"; Else &queryText = &queryText | " <AND> (POST_OPEN_DT >= " | &dt | ")"; End-If; End-If; /* Minimum requirements - desired salary must fall within the maximum and minimum specified for the position */ If (&salRangeMin > 0) Then If None(&queryText) Then &queryText = " (MIN_SALARY <=" | &salRangeMin | ") <AND> (MAX_SALARY >=" | &salRangeMin | ")"; Else &queryText = &queryText | " <AND> (MIN_SALARY <=" | &salRangeMin | ") <AND> (MAX_SALARY >=" | &salRangeMin | ")"; End-If;

Developer’s Guide to Customizing the Job Posting Search Index

53

End-If; /* Maximum salary requirements - desired salary must be less than the maximum specified for the position*/ If (&salRangeMax > 0) Then If None(&queryText) Then &queryText = " (MAX_SALARY <= " | &salRangeMax | ")"; Else &queryText = &queryText | " <AND> (MAX_SALARY >= " | &salRangeMax | ")"; End-If; End-If; /* Salary Currency */ If (&salRangeCurrency <> "") Then If None(&queryText) Then &queryText = "<YESNO>((" | &salRangeCurrency | ") <IN> SALARY_CURR) "; Else &queryText = &queryText | &booleanText | "<YESNO>((" | &salRangeCurrency | ") <IN> SALARY_CURR) "; End-If; End-If; /* Salary Frequency */ If (&salRangeFrequency <> "") Then If None(&queryText) Then &queryText = "<YESNO>((" | &salRangeFrequency | ") <IN> SALARY_FREQ) "; Else &queryText = &queryText | &booleanText | "<YESNO>((" | &salRangeFrequency | ") <IN> SALARY_FREQ) "; End-If; End-If; /* Job Opening Id */ If (&jobOpeningId > 0) Then If None(&queryText) Then &queryText = "<YESNO>((" | &jobOpeningId | ") <IN> JOB_OPENING_ID) "; Else &queryText = &queryText | &booleanText | "<YESNO>((" | &jobOpeningId | ") <IN> JOB_OPENING_ID) "; End-If; End-If; /* Recruiter Name */ If (&recruiterName <> "") Then If None(&queryText) Then &queryText = "<YESNO>((" | &recruiterName | ") <IN> RECR_NAME) "; Else &queryText = &queryText | &booleanText | "<YESNO>((" | &recruiterName | ") <IN> RECR_NAME) "; End-If; End-If; /* Manager/Hirer Name */ If (&managerName <> "") Then If None(&queryText) Then &queryText = "<YESNO>((" | &managerName | ") <IN> HIRER_NAME) "; Else &queryText = &queryText | &booleanText | "<YESNO>((" | &managerName | ") <IN> HIRER_NAME) "; End-If; End-If;

Developer’s Guide to Customizing the Job Posting Search Index

54

/* Country Code */ If (&countryCode <> "") Then If None(&queryText) Then &queryText = "<YESNO>((" | &countryCode | ") <IN> COUNTRY) "; Else &queryText = &queryText | &booleanText | "<YESNO>((" | &countryCode | ") <IN> COUNTRY) "; End-If; End-If; /* Posting Type */ If (&postType <> "") Then If None(&queryText) Then &queryText = "<YESNO>((" | &postType | ") <IN> POST_TYPE) "; Else &queryText = &queryText | &booleanText | "<YESNO>((" | &postType | ") <IN> POST_TYPE) "; End-If; End-If; Return Upper(&queryText); end-method; [ . . . Unchanged Code not Shown . . . ] <* 12917597 09/12/11 ... Begin *> /** * setJobFunctions * * Property set method * * @param &p_jobFunctions The array of Job Function codes */ method setJobFunctions /+ &p_jobFunctions as Array of String +/ &jobFunctionPref = &p_jobFunctions; end-method; <* 12917597 09/12/11 ... End *> /** * setSearchName * * Property set method * * @param &p_searchName The name of this search */ [ . . . Unchanged Code not Shown . . . ]

PeopleCode (Appl Package): HRS_COMMON:SEARCH:UTIL:JobFunctionCombo.OnExecute

import HRS_COMMON:COMMON:UTIL:GetText; /** * class JobFunctionCombo * * @version 1.0 * @author Recruiting Solutions * * Module: Search * Description: Provides facilities for a Recruiting Job Function Combo box

Developer’s Guide to Customizing the Job Posting Search Index

55

* */ class JobFunctionCombo /* Public methods */ method JobFunctionCombo(&comboRecName As string, &comboFldName As string, &editRecName As string, &editField As Field, &displaySize As number); method getHTML() Returns string; private Constant &DEFAULT_OPTION_VALUE = "0"; instance string &HTMLSegment; end-class; /** * Constructor * * Create a combo box UI object and initialises it. * * @param &comboRecName The NAME of the Combo Box record * @param &comboFldName The NAME of the Combo Box field * @param &editRecName The NAME of the related Edit Box record * @param &editField The FIELD object of the related Edit Box field * @param &displaySize The number of rows you would like to display in the combo box viewable area. * @exception */ method JobFunctionCombo /+ &comboRecName as String, +/ /+ &comboFldName as String, +/ /+ &editRecName as String, +/ /+ &editField as Field, +/ /+ &displaySize as Number +/ Local Rowset &RSJobFunction; Local Record &recJobFunction; Local number &numCount, &i; Local string &strFld, &strFldLst, &strFldEdt, &strValue, &strSelected; Local array of string &arrEdtValue; Local HRS_COMMON:COMMON:UTIL:GetText &cls_getText = create HRS_COMMON:COMMON:UTIL:GetText(); Local string &AllJobFly = &cls_getText.GetAdminTextSimple("HRS_CE_ALL_JO_FUNC"); /* Init with recruiting job functions */ &RSJobFunction = CreateRowset(Record.HRS_JOB_FUNC_VW); &RSJobFunction.Fill("where EFF_STATUS = :1", "A"); &RSJobFunction.Sort(HRS_JOB_FUNC_VW.HRS_DESCR, "A"); &numCount = &RSJobFunction.ActiveRowCount; &strFld = &comboRecName | "_" | &comboFldName; &strFldLst = &strFld; &strFldEdt = "this.form." | &editRecName | "_" | &editField.Name; &arrEdtValue = Split(&editField.Value, ","); &strValue = "<SELECT NAME='" | &strFldLst | "' ID='" | &strFldLst | "' TABINDEX='108' SIZE='" | &displaySize | "' Multiple CLASS='PSDROPDOWNLIST' style='width: 50mm'"; &strValue = &strValue | " OnChange='javascript: handleSelection(this," | &strFldEdt | ")'>"; /* Check if default option was selected */

Developer’s Guide to Customizing the Job Posting Search Index

56

If &arrEdtValue.Find(&DEFAULT_OPTION_VALUE) > 0 Then &strSelected = "SELECTED"; Else &strSelected = ""; End-If; /* Add a default option */ &strValue = &strValue | "<OPTION VALUE='" | &DEFAULT_OPTION_VALUE | "' " | &strSelected | ">" | &AllJobFly; For &i = 1 To &numCount &recJobFunction = &RSJobFunction.GetRow(&i).GetRecord(Record.HRS_JOB_FUNC_VW); If &arrEdtValue.Find(&recJobFunction.JOB_FUNCTION.Value) > 0 Then &strSelected = "SELECTED"; Else &strSelected = ""; End-If; &strValue = &strValue | "<OPTION VALUE='" | &recJobFunction.JOB_FUNCTION.Value | "' " | &strSelected | ">" | &recJobFunction.HRS_DESCR.Value; End-For; &strValue = &strValue | "</SELECT>"; &HTMLSegment = &strValue; end-method; /** * getHTML * * Retrieves the HTML segment representing this combo box * * @Return String-The HTML segment * @exception */ method getHTML /+ Returns String +/ Return &HTMLSegment; end-method;

Developer’s Guide to Customizing the Job Posting Search Index

57

Validation and Feedback

This section documents the real-world validation that this red paper has received.

Customer Validation

Oracle is working with PeopleSoft customers to get feedback and validation on this document. Lessons that are learned from these customer experiences will be posted here.

Field Validation

Oracle Consulting Services has provided feedback and validation on this document. Additional lessons that are learned from field experience will be posted here.

Authors

PeopleSoft HCM Development Team

Revision History

TABLE [1]. REVISION HISTORY

DATE CHANGE

10/17/2011 Created document.

Developer’s Guide to Customizing the Job Posting Search Index Red Paper October 2011

Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A.

Worldwide Inquiries: Phone: +1.650.506.7000 Fax: +1.650.506.7200

oracle.com

Copyright © 2011, Oracle and/or its affiliates. All rights reserved. This document is provided for information purposes only and the contents hereof are subject to change without notice. This document is not warranted to be error-free, nor subject to any other warranties or conditions, whether expressed orally or implied in law, including implied warranties and conditions of merchantability or fitness for a particular purpose. We specifically disclaim any liability with respect to this document and no contractual obligations are formed either directly or indirectly by this document. This document may not be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without our prior written permission.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. UNIX is a registered trademark licensed through X/Open Company, Ltd. 1010