Professional Documents
Culture Documents
TXN Store Data Cache Access Methods
TXN Store Data Cache Access Methods
TXN Store Data Cache Access Methods
*each number from column Patterns in Existing Data Models/ Pattern to be looked for corresponds to the same number from column How to use new Procedures
in Existing Patterns
*customers can have only one/more of the Patterns
Proposed New Purpose/ Parameters
Package Name Patterns in Existing Data Models/ Pattern to be looked for How to use new Procedures in Existing Patterns
Procedure Functionality Description
transaction
Id : Id of
the
transaction
for which
the data
needs to be
fetched.
FUNCTION
extractXMLSequenceF
VONames
orVO(
Provide SELECT SELECT
transactionId Varchar2,
It fetches XML Comma per_bipntf_flex.GETATTRIBUTE('AssignmentMDVORow',RowType.getclobval(),'A per_bipntf_flex.GETATTRIBUTE('AssignmentMDVORow',VALUE(RowType),'Assi
VONames Varchar2,
sequence for a Separated ssignmentId','OldValue') as "CurrentAssignmentId", gnmentId','OldValue') AS "CurrentAssignmentId",
parentVOName
VO names per_bipntf_flex.GETATTRIBUTE('AssignmentMDVORow',RowType.getclobval(),'A per_bipntf_flex.GETATTRIBUTE('AssignmentMDVORow',VALUE(RowType),'Assi
PER_BIPNTF_U VARCHAR2 list of VOs
if you need ssignmentId','NewValue') as "ProAssignmentId", gnmentId','NewValue') AS "ProAssignmentId",
TILITY DEFAULT NULL from compare
to fetch FROM hrc_txn_data FROM
) data of data multiple txndata,TABLE(xmlsequence(extract(xmltype('<root>'||txndata.data_cache||'</root>'), TABLE
RETURN cache. EOs else '//COMPAREDATA/CompareVO/AssignmentMDVORow'))) RowType (per_bipntf_utility.extractXMLSequenceForVO(:transId,'AssignmentMDVO'))
xmlsequencetype;
give single where txndata.transaction_id=:transId; RowType;
VO name.
Internally it
performs an
Or operation
parentVON
ame :
Parent VO
name for the
given VOs
1. SELECT
transaction
extractValue(value(RowType),'//ProcessOwner/DATA') AS "Value", 1. SELECT
FUNCTION Id : Id of
FROM hrc_txn_data extractValue(value(RowType),'//ProcessOwner') AS "Value"
extractXMLSequence( the
txndata,TABLE(xmlsequence(extract(xmltype('<root>'||txndata.data_cache||'</root>'), FROM TABLE
transactionId IN transaction
'//TRANSACTION/TransCtx/HrcTxnValues'))) RowType (per_bipntf_utility.extractXMLSequence(:transId,'HrcTxnValues'))
VARCHAR2, for which
It fetches XML where txndata.transaction_id=:transId; RowType;
xmlNodeNames IN the data
PER_BIPNTF_U VARCHAR2 sequence for a needs to be 2. SELECT
TILITY ) list of xml tag fetched. extractValue(value(transctx),'//Subject/DATA') AS "subject"
RETURN 2. SELECT
names FROM
xmlsequencetype; extractValue(value(transctx),'//Subject/DATA') AS "subject"
FROM TABLE (per_bipntf_utility.extractXMLSequence(:transId,'TransCtx') )
xmlNodeNa transctx
hrc_txn_data htd,
mes : XML
TABLE ( xmlsequence(extract(xmltype('<root>'
Tag or Node
|| htd.DATA_CACHE
Names.
|| '</root>'),'//TransCtx') ) ) transctx
WHERE
htd.transaction_id =:transId
psValue :
PS value of
EOs. If this
value is null
it fetches all
the EO
XML
Sequences
irrespective
of PS value.
Here we can
pass comma
separated
PS values if
we want to
fetch
XMLTypes
with
different PS
values.
parentEO :
Parent EO
name for the
given EO
parentEOP
SValue : PS
value of
Parent EO
transaction
Id : Id of
the
transaction
for which 1. XMLTABLE('$A/(GradeVORow)'
the data PASSING per_bipntf_utility.extractXMLTypeForVO(:transId,
needs to be
fetched.
1. XMLTABLE('$A/(GradeVORow)' PASSING extract(xmltype('<root>'|| 'GradeVO') AS A
txndata.data_cache||'</root>'), '//GradeVORow') AS A columns
FUNCTION
VONames GRADE_ID NUMBER(18) path 'GradeId/DATA',
extractXMLTypeForV columns
Provide CEILING_STEP_ID NUMBER(18) PATH 'CeilingStepId'
O( GRADE_ID NUMBER(18) path 'GradeId/DATA',
Comma ) FromClob
transactionId IN It fetches XML CEILING_STEP_ID NUMBER(18) PATH 'CeilingStepId'
Separated
VARCHAR2, ) FromClob
Type for a list VO names
PER_BIPNTF_U VONames IN
of VOs from if you need
TILITY VARCHAR2,
compare data to fetch
parentVOName 2. XMLTABLE('$A/(GradeVORow)' PASSING extract(xmltype('<root>'||
of data cache. multiple
VARCHAR2 txndata.data_cache||'</root>'), '//GradeVORow//GradeStepVORow') AS A
EOs else 2. XMLTABLE('$A/(GradeVORow)'
DEFAULT NULL columns
give single PASSING per_bipntf_utility.extractXMLTypeForVO(:transId,
) GRADE_ID NUMBER(18) path 'GradeId/DATA',
VO name.
RETURN XMLTYPE; CEILING_STEP_ID NUMBER(18) PATH 'CeilingStepId'
Internally it
performs an ) FromClob
'GradeStepVO','GradeVO') AS A
Or operation columns
GRADE_ID NUMBER(18) path 'GradeId/DATA',
CEILING_STEP_ID NUMBER(18) PATH 'CeilingStepId'
parentVON ) FromClob
ame :
Parent VO
name for the
given VOs
transaction
Id : Id of
XMLTABLE('$A/(HrcTxnValues)' PASSING extract(xmltype('<root>'|| XMLTABLE('$A/(HrcTxnValues)' PASSING
the
FUNCTION txndata.data_cache||'</root>'), '//HrcTxnValues') AS A per_bipntf_utility.extractXMLType(:transId,'HrcTxnValues') AS A
transaction
extractXMLType(
for which
transactionId IN It fetches XML the data
VARCHAR2, columns columns
PER_BIPNTF_U Type for a list needs to be
xmlNodeNames IN
TILITY of xml tag fetched.
VARCHAR2
) names PROCESS_OWNER VARCHAR2(255) path 'ProcessOwner' PROCESS_OWNER VARCHAR2(255) path 'ProcessOwner'
RETURN
xmlNodeNa
xmlsequencetype;
mes : XML
) from TransactionValues ) from TransactionValues
Tag or Node
Names.
EONameF
QP : Fully
Qualified
O"]') AS A
EO Name.
parentEO VARCHAR2
columns
DEFAULT NULL,
parentEOPSValue columns
parentEO :
NUMBER DEFAULT
Parent EO PERSON_ID NUMBER PATH 'PersonId/Data'
NULL
name for the
) RETURN xmltype; PERSON_ID NUMBER PATH 'PersonId/Data'
given EO
) delivermethod
) delivermethod
parentEOP
SValue : PS
value of
Parent EO
transaction
Id : Id of SELECT
the personT.display_name AS Person_Name,
SELECT
transaction peopleT.person_number AS Person_Number,
personT.display_name AS Person_Name,
for which extractvalue(xmltype('<root>'
peopleT.person_number AS Person_Number,
the data || txndata.data_cache
NULL AS action_name,
needs to be || '</root>'),'root/TRANSACTION[1]/TransCtx[1]/hcmEffectiveDate[1]') AS
FUNCTION NULL AS action_reason,
fetched. Effective_Date
getAttributeFromTXN per_bipntf_utility.getAttributeFromTXNContext(:transId,'hcmEffectiveDate') AS
FROM
Context( Effective_Date
Per_person_names_f_v personT,
transactionId FROM
It fetches attributeNa per_all_people_f peopleT,
VARCHAR2, Per_person_names_f_v personT,
me : name hrc_txn_data txndata,
PER_BIPNTF_U attributeName value of per_all_people_f peopleT,
of the hrc_txn_header txnheader
TILITY VARCHAR2, attribute from hrc_txn_header txnheader
attribute for WHERE
parentTagName TransCtx. WHERE
which the txndata.transaction_id =:transId
VARCHAR2 txnheader.transaction_id =:transId
value needs AND txnheader.transaction_id =:transId
DEFAULT NULL AND txnheader.module_identifier = 'ManageEligibleJobs'
to be AND txnheader.module_identifier = 'ManageEligibleJobs'
) RETURN AND personT.PERSON_ID = txnheader.subject_id
fetched. AND personT.PERSON_ID = txnheader.subject_id
VARCHAR2; AND
AND TO_DATE(extractvalue(xmltype('<root>'
TO_DATE(per_bipntf_utility.getAttributeFromTXNContext(:transId,'hcmEffectiveDat
|| txndata.data_cache
e'),'rrrr-mm-dd') BETWEEN personT.EFFECTIVE_START_DATE AND
parentTag || '</root>'),'root/TRANSACTION[1]/TransCtx[1]/hcmEffectiveDate[1]'),'rrrr-mm-dd')
personT.EFFECTIVE_END_DATE
Name : BETWEEN personT.EFFECTIVE_START_DATE AND
AND peopleT.PERSON_ID = txnheader.subject_id
parent node personT.EFFECTIVE_END_DATE
name of the AND peopleT.PERSON_ID = txnheader.subject_id;
attribute.
eoName:
Name of the
EO under
which this
attribute is
present
psValue :
PS value of
EO
indexValue
:
index/Positi
on of EO
transaction
Id : Id of
the
transaction
for which
the data
needs to be
fetched.
voName :
ame of the
VO under
which this
attribute is
FUNCTION
present.
getAttributeFromComp
are(
transactionId
attributeNa
VARCHAR2, It fetches me : name SELECT
voName VARCHAR2, value of of the extractValue(xmltype('<root>'|| txndata.data_cache|| SELECT
PER_BIPNTF_U attributeName
attribute from attribute '</root>'),'//COMPAREDATA/CompareVO//JobCustomerFlexJobContext1VOR per_bipntf_utility.getAttributeFromCompare(:transId,'JobCustomerFlexJobContext1V
TILITY VARCHAR2,
Compare whose ow[4]/Compare/AttributeName[text()="jobglobal"]/../NewValue') O','jobglobal','NewValue',4) FROM DUAL;
valueType
Data. dependents FROM HRC_TXN_DATA txndata WHERE txndata.TRANSACTION_ID = :transId;
VARCHAR2,
attribute's
indexOfVO NUMBER
value to be
DEFAULT 1
fetched.
)RETURN
VARCHAR2;
valueType :
name of the
attribute
from which
the value
needs to be
fetched.
indexOfVO
: index of
VO in
compare
Data
Other Procedures
SELECT
per_bipntf_flex.GETATTRIBUTE('GradeVORow',RowType.getclobval(),'Name','Old
Value') AS "OldName",
per_bipntf_flex.GETATTRIBUTE('GradeVORow',RowType.getclobval(),'Name','New
transaction
Value') AS "NewName" SELECT
Id : Id of
FROM per_bipntf_flex.GETATTRIBUTE('GradeVORow',VALUE(RowType),'Name','OldVal
the
hrc_txn_data txndata, ue') AS "OldName",
FUNCTION transaction
TABLE ( xmlsequence(extract(xmltype('<root>' per_bipntf_flex.GETATTRIBUTE('GradeVORow',VALUE(RowType),'Name','NewV
isNodeExists( Checks if there for which
|| txndata.data_cache alue') AS "NewName",
transactionId IN the data
PER_BIPNTF_U exists a xml || '</root>'),'//COMPAREDATA/CompareVO/GradeVORow') ) ) RowType FROM
VARCHAR2, needs to be
TILITY node with the WHERE TABLE ( per_bipntf_utility.extractxmlsequenceforvo(:transId,'GradeVO')) RowType
XPath IN VARCHAR2 fetched.
given xpath txndata.transaction_id =:transId WHERE
)
AND :checkSecurity = 'true' :checkSecurity = 'true'
RETURN NUMBER;
AND :taskStatus = 'COMPLETED' AND :taskStatus = 'COMPLETED'
Xpath :
AND extract(xmltype('<root>' AND per_bipntf_utility.isNodeExists(:transId,'//COMPAREDATA/CompareVO') = 1
xpath of the
|| txndata.data_cache AND 'T' = per_bipntf_utility.check_compare_security(:transId,'GradeVORow',NULL)
node.
|| '</root>'),'//COMPAREDATA/CompareVO') IS NOT NULL
AND 'T' = per_bipntf_utility.check_compare_security(extract(xmltype('<root>'
|| txndata.data_cache
|| '</root>'),'//CompareVO').getclobval(),'GradeVORow',NULL);
SELECT
per_bipntf_flex.GETATTRIBUTE('GradeVORow',RowType.getclobval(),'Name','
OldValue') AS "OldName",
SELECT
per_bipntf_flex.GETATTRIBUTE('GradeVORow',RowType.getclobval(),'Name','
per_bipntf_flex.GETATTRIBUTE('GradeVO',VALUE(RowType),'Name','OldVal
NewValue') AS "NewName"
ue') AS "OldName",
FUNCTION FUNCTION FROM
per_bipntf_flex.GETATTRIBUTE('GradeVO',VALUE(RowType),'Name','NewVa
check_compare_se check_compare_se hrc_txn_data txndata,
lue') AS "NewName",
curity( curity( TABLE ( xmlsequence(extract(xmltype('<root>'
FROM
p_comare_xmltype p_transaction_id || txndata.data_cache
TABLE ( per_bipntf_utility.extractxmlsequenceforvo(:transId,'GradeVO'))
clob, VARCHAR2, || '</root>'),'//COMPAREDATA/CompareVO/GradeVORow') ) ) RowType
RowType
p_VO_Name p_VO_Name WHERE
WHERE
VARCHAR2, VARCHAR2, txndata.transaction_id =:transId
:checkSecurity = 'true'
p_key VARCHAR p_key VARCHAR AND :checkSecurity = 'true'
AND :taskStatus = 'COMPLETED'
) RETURN ) RETURN AND :taskStatus = 'COMPLETED'
AND per_bipntf_utility.isNodeExists(:transId,'//COMPAREDATA/CompareVO')
VARCHAR2; VARCHAR2; AND extract(xmltype('<root>'
=1
|| txndata.data_cache
AND 'T' =
|| '</root>'),'//COMPAREDATA/CompareVO') IS NOT NULL
per_bipntf_utility.check_compare_security(:transId,'GradeVORow',NULL);
AND 'T' = per_bipntf_utility.check_compare_security(extract(xmltype('<root>'
|| txndata.data_cache
|| '</root>'),'//CompareVO').getclobval(),'GradeVORow',NULL);
FUNCTION
GETATTRIBUTE(
P_VONAME SELECT
VARCHAR2,
per_bipntf_flex.GETATTRIBUTE('GradeVORow',RowType.getclobval(),'Name','OldV
P_XML
alue') AS "OldName",
XMLTYPE,
per_bipntf_flex.GETATTRIBUTE('GradeVORow',RowType.getclobval(),'Name','New SELECT
P_ATTRIBUTE_N
Value') AS "NewName" per_bipntf_flex.GETATTRIBUTE('GradeVO',VALUE(RowType),'Name','OldVal
FUNCTION AME
FROM ue') AS "OldName",
GETATTRIBUTE( VARCHAR2,
hrc_txn_data txndata, per_bipntf_flex.GETATTRIBUTE('GradeVO',VALUE(RowType),'Name','NewVa
P_VONAME P_VALUE_TYPE
TABLE ( xmlsequence(extract(xmltype('<root>' lue') AS "NewName",
VARCHAR2, VARCHAR2
|| txndata.data_cache FROM
P_XML clob, )RETURN
TABLE ( per_bipntf_utility.extractxmlsequenceforvo(:transId,'GradeVO'))
P_ATTRIBUTE_N VARCHAR2 || '</root>'),'//COMPAREDATA/CompareVO/GradeVORow') ) ) RowType
RowType
AME WHERE
WHERE
VARCHAR2, txndata.transaction_id =:transId :checkSecurity = 'true'
P_VALUE_TYPE AND :checkSecurity = 'true' AND :taskStatus = 'COMPLETED'
VARCHAR2 AND :taskStatus = 'COMPLETED' AND per_bipntf_utility.isNodeExists(:transId,'//COMPAREDATA/CompareVO')
)RETURN AND extract(xmltype('<root>' =1
VARCHAR2; Note : Here Just || txndata.data_cache AND 'T' =
pass VO name as || '</root>'),'//COMPAREDATA/CompareVO') IS NOT NULL per_bipntf_utility.check_compare_security(:transId,'GradeVORow',NULL);
parameter, do not
AND 'T' = per_bipntf_utility.check_compare_security(extract(xmltype('<root>'
concatenate with
|| txndata.data_cache
"Row" at the end.
This is being taken || '</root>'),'//CompareVO').getclobval(),'GradeVORow',NULL);
care by API
internally.
FUNCTION FUNCTION
formWhereClause( formWhereClause(
p_data_cache IN p_transaction_id
clob, VARCHAR2,
p_full_context_tag p_full_context_tag per_bipntf_flex.getDffsegmentValue('PER_GRADES_F_VL', per_bipntf_flex.getDffsegmentValue('PER_GRADES_F_VL',
_name _name
per_bipntf_flex.formWhereClause(txndata.data_cache ,'GradeDEORow',value(cac per_bipntf_flex.formWhereClause(:transactionId, ,'GradeDEORow',value(cachero
VARCHAR2, VARCHAR2,
herowsold),'GRADE_ID:java.lang.Long|EFFECTIVE_START_DATE:java.sql.Date| wsold),'GRADE_ID:java.lang.Long|EFFECTIVE_START_DATE:java.sql.Date|
p_xmltype p_xmltype
XMLTYPE, XMLTYPE, EFFECTIVE_END_DATE:java.sql.Date'),dff.column_name) EFFECTIVE_END_DATE:java.sql.Date'),dff.column_name)
p_eff_pk_List p_eff_pk_List
VARCHAR2 VARCHAR2
) RETURN ) RETURN
VARCHAR2; VARCHAR2;
Below are the Data_cache Reference Patterns found in the customers’ pods through Fleet scan analysis
gnmentDEORow[@PS=0]|//NWAssignmentDEORow[@
PS=0]|//PWAssignmentDEORow[@PS=0]'))
) proposedAsg
15. SELECT transaction_id FROM hrc_txn_data txndata Here, The customers need to know xpath where exactly the For more
WHERE data_cache like '%300000022656721%' AND value is present. Based on that, they can use existNode information
data_cache like '%GoalEORow%' AND data_cache NOT function along with xpath. refer,
like '%VA%'
ExistNode returns 1 if node exists with given xpath else it https://
select transaction_id, submitted_date from hrc_txn_data will return 0. docs.oracle.co
where data_cache like '%sesa3327%' m/cd/
For Example , B28359_01/
SELECT appdev.111/
xml_data_cache, b28369/
transaction_id xdb09sea.htm#
FROM CBBIIEJE
hrc_txn_header https://
WHERE docs.oracle.co
existsNode(xml_data_cache,'//TransCtx/HrcTxnValues/Subj m/cd/
ect[contains(text(),"HR_ALL_POSITIONS_F_VL") > 0]') = B19306_01/
1; server.102/
b14200/
functions048.ht
m
Note: Using
like on each
record's xml
data cache will
cause
performance
issues. Try to
minimize such
usage.
16. SELECT Here, they can use our new APIs but they need to know Available from
TO_NUMBER(TRIM(SUBSTR(d1.data_cache,INSTR(d where exactly the Attribute or Element is present. 20A
1.data_cache,'PersonIdSecImpl') + 30,
(INSTR(d1.data_cache,'</PersonIdSecImpl>') - 30 -
INSTR(d1.data_cache,'PersonIdSecImpl') ) ) ) ) per_id, Need to use one among the following APIs accordingly,
d1.status c_status,
d1.state c_state, 1. getAttributeFromCompare
d1.* 2. getAttributeFromBusinessData
FROM 3. getAttributeFromTXNContext
hrc_txn_header h1,
hrc_txn_data d1
WHERE
h1.transaction_id = d1.transaction_id
AND TRUNC(h1.creation_date) = TRUNC(SYSDATE)
AND h1.module_identifier = 'DocApproval';
21. select htd.*, Need to use one among the following APIs accordingly, Here, they are
dbms_lob.substr(htd.data_cache,15,dbms_lob.instr(htd.dat trying to get
a_cache,'<data>',dbms_lob.instr(htd.data_cache,'<personi 1. getAttributeFromCompare data between
d>'),1)+6) as person_id 2. getAttributeFromBusinessData deiattributedate
,to_char(to_date(substr(data_cache,instr(data_cache,'<dei 3. getAttributeFromTXNContext 1 and personid
attributedate1>')+41,10) ,'yyyy-mm-dd'),'dd-mm-yyyy') tags.
absconding_date
from
hrc_txn_data htd, If the customer
hrc_txn_header hth , knows the
fa_fusion_soainfra.wftask w location of the
where 1=1 attribute then
they need to
call our get
attribute APIs
to get the
value.
Available from
20A
22. select to_number ( Need to use one among the following APIs accordingly, Here, they are
trim ( trying to get
substr ( 1. getAttributeFromCompare data between
d1.data_cache, 2. getAttributeFromBusinessData personidsecimp
instr (d1.data_cache, 'personidsecimpl') + 30, 3. getAttributeFromTXNContext l tag.
( instr (d1.data_cache, '</personidsecimpl>')
- 30
- instr (d1.data_cache, 'personidsecimpl'))))) If the customer
per_id, knows the
d1.status aa, location of the
d1.state vbbb, attribute then
d1.* they need to
from hrc_txn_header h1, hrc_txn_data d1 call our get
where h1.transaction_id = d1.transaction_id attribute APIs
and trunc (h1.creation_date) = trunc (sysdate) to get the
and h1.module_identifier = 'docapproval'" value.
Available from
20A
26. case Looks like they are comparing actioncode to Available from
when transfer_initiation, If yes then they are fetching assattrubute7 20C
substr(xmltype(txndata.data_cache).extract('.//actioncode/ value
data').getstringval() ,instr(xmltype(txndata.data_cache).ex
tract('.//actioncode/data').getstringval(),'>') case
+1 WHEN
,instr(xmltype(txndata.data_cache).extract('.//actioncode/d per_bipntf_utility.extractValueByXPath(txndata.TRANSAC
ata').getstringval(),'<',1,2) - TION_ID,'.//actioncode/data') = 'transfer_initiation'
instr(xmltype(txndata.data_cache).extract('.//actioncode/d THEN
ata').getstringval(),'>') -1 ) = 'transfer_initiation' per_bipntf_utility.extractValueByXPath(txndata.TRANSAC
then TION_ID,'.//assattribute7/data');
substr(xmltype(txndata.data_cache).extract('.//assattribute
7/data').getstringval() ,instr(xmltype(txndata.data_cache).
extract('.//assattribute7/data').getstringval(),'>',1,2)
+1
,instr(xmltype(txndata.data_cache).extract('.//assattribute7
/data').getstringval(),'<',1,3) -
instr(xmltype(txndata.data_cache).extract('.//assattribute7/
data').getstringval(),'>',1,2) -1 )
28. select dff.name as "name", There are two ways, Available from
replace(initcap(replace((dff.column_name),'_',' ')),' ','') as 20A
"basecolumn", 1. Refer Pattern number 3
extractvalue( xmltype('<root>' 2. By Using extractXMLTypeForEO API. Use this approach
||txndata.data_cache only when you are sure that only one tag exists with the
||'</root>'),'//periodofserviceeorow[@ps=2]/' given EO name, as the xml type is being used in
|| replace(initcap(replace((dff.column_name),'_',' ')),' ','') extractValue. function
||'/data[1]') as "newcachevalue",
txndata.transaction_id
from fnd_df_segments_vl dff , select dff.name as "name",
hrc_txn_data txndata replace(initcap(replace((dff.column_name),'_',' ')),' ','') as
where 1=1 "basecolumn",
and context_code = 'global data elements' and extractvalue(per_bipntf_utility.extractXMLTypeForEO(:tran
descriptive_flexfield_code = 'per_pps_df' and sId,'PeriodOfServiceEO','2'),'//
enabled_flag = 'y' periodofserviceeorow[@ps=2]/'
and dff.name = 'requested date of leaving'" || replace(initcap(replace((dff.column_name),'_',' ')),' ','')
||'/data[1]') as "newcachevalue",
txndata.transaction_id
from fnd_df_segments_vl dff ,
hrc_txn_data txndata
where 1=1
and context_code = 'global data elements' and
descriptive_flexfield_code = 'per_pps_df' and enabled_flag =
'y'
and dff.name = 'requested date of leaving'"
29. select max(papf_aor.person_number) Need to use one among the following APIs accordingly, Available from
from 20A
per_asg_responsibilities par, 1. getAttributeFromCompare
per_all_people_f papf_aor, 2. getAttributeFromBusinessData
per_person_names_f_v ppnf_aor, 3. getAttributeFromTXNContext
hr_organization_units_f_tl bu
where 1 = 1
and (trunc(sysdate) between par.start_date(+) and
par.end_date(+)
or par.end_date is null)
and par.business_unit_id(+) = paaf.business_unit_id
and par.responsibility_type(+) = 'hr_rep'
-- and par.business_unit_id = paaf.business_unit_id
and (par.location_id = paaf.location_id
or par.location_id is null)
and (par.organization_id = paaf.organization_id
or par.organization_id is null)
and trunc(sysdate) between
papf_aor.effective_start_date(+) and
papf_aor.effective_end_date(+)
and papf_aor.person_id(+) = par.person_id
and trunc(sysdate) between
ppnf_aor.effective_start_date(+) and
ppnf_aor.effective_end_date(+)
and ppnf_aor.person_id(+) = papf_aor.person_id
and rownum = 1) as hrbp,
--
--papf_aor.person_number as hrbp,
--
--
to_char(to_date(dbms_lob.substr(htd.data_cache,10,dbms
_lob.instr(htd.data_cache,'<data>',dbms_lob.instr(htd.data
_cache,'<actualterminationdate>'),1)+6),'yyyy-mm-
dd'),'yyyymmdd') as term_date,
papf.person_number as sso_id,
32. substr(replace(substr(substr(d.data_cache,instr(d.data_cac → Here hcmEffectiveDate attribute Value is getting fetched, Available from
he,'hcmeffectivedate',1,1),instr(d.data_cache,'/ Generally hcmEffectiveDate will be available in TransCtx 20C
hcmeffectivedate',-
1,1) ),instr(substr(d.data_cache,instr(d.data_cache,'hcmeff1. If the hcmEffectiveDate exists in TransCtx then use as
ectivedate',1,1),instr(d.data_cache,'/hcmeffectivedate',- a. per_bipntf_utility.getAttributeFromTXNContext(TRANSAC
1,1) ),'>') + TION_ID,'hcmEffectiveDate')
1,instr(substr(d.data_cache,instr(d.data_cache,'hcmeffecti 2. Else
vedate',1,1),instr(d.data_cache,'/hcmeffectivedate',- a. per_bipntf_utility.extractValueByXPath(txnd.TRANSACTI
1,1) ),'<') ),'>',''),1,instr(replace(substr ON_ID,'//hcmEffectiveDate')
(substr(d.data_cache,instr(d.data_cache,'hcmeffectivedate'
,1,1),instr(d.data_cache,'/hcmeffectivedate',-
1,1) ),instr(substr(d.data_cache,instr(d.data_cache,'hcmeff
ectivedate',1,1),instr(d.data_cache,'/hcmeffectivedate',-
1,1) ),'>') +
1,instr(substr(d.data_cache,instr(d.data_cache,'hcmeffecti
vedate',1,1),instr(d.data_cache,'/hcmeffectivedate',-
1,1) ),'<') ),'>',''),'<') - 1)
Approach 2 :
Use per_bipntf_utility.extractValueByXPath API
39. select dor.transaction_id ,tasknumber ||' '|| title header, SELECT Available from
tasknumber, title, dor.transaction_id, 20C
to_char(assigneddate,'yyyy-mm-dd') assign_date, tasknumber
fromuserdisplayname , || ' '
|| title header,
dor.dei_attribute_category, tasknumber,
eff.form_left_prompt , title,
extractvalue TO_CHAR(assigneddate,'yyyy-mm-dd') assign_date,
(xmltype (data_cache), fromuserdisplayname,
'/transaction/businessdata/am/txn/eo/documentsofrecordeo dor.dei_attribute_category,
row/' eff.form_left_prompt,
||replace( per_bipntf_utility.extractValueByXpath
replace( (dor.transaction_id,,
replace(eff.application_column_name,'dei_attribute_num '/transaction/businessdata/am/txn/eo/documentsofrecordeoro
ber','deiattributenumber')nls_date_language w/' || replace
,'dei_attribute_date','deiattributedate') ( replace( replace(eff.application_column_name,'dei_attribut
,'dei_attribute','deiattribute') e_number','deiattributenumber')nls_date_language
||'/data' ,'dei_attribute_date','deiattributedate')
) value ,'dei_attribute','deiattribute')
from ||'/data'
) value
from
42. select distinct → Looks like jobid is being fetched from data cache Available from
name 20C
from
per_jobs select distinct
where name
sysdate between effective_start_date and from
effective_end_date per_jobs
and job_id = where
substr(xmltype(txndata.data_cache).extract('.//jobid/data'). sysdate between effective_start_date and effective_end_date
getstringval() ,instr(xmltype(txndata.data_cache).extract('. and job_id =
//jobid/data').getstringval(),'>',1,2) per_bipntf_utility.extractValueByXpath(txndata.TRANSAC
+1 TION_ID,'.//jobid/data')
,instr(xmltype(txndata.data_cache).extract('.//jobid/data').
getstringval(),'<',1,3) -
instr(xmltype(txndata.data_cache).extract('.//jobid/data').g
etstringval(),'>',1,2) 1 )
45. decode(hlk.tag, null, 'y', decode(substr(hlk.tag,1,1), '+', decode(hlk.tag, null, 'y', decode(substr(hlk.tag,1,1), '+', Available from
decode(sign( decode(sign( 20A
instr(hlk.tag, extractvalue(xmltype('<root>'|| instr(hlk.tag,per_bipntf_utility.getAttributeFromTXNContex
htd.data_cache||'</root>'),'root/transaction/transctx/ t(:transId,'legislationcode','cmptxnnewsalaryvaluesmap')
cmptxnnewsalaryvaluesmap/legislationcode'))), 1, 'y', 'n'), )), 1, 'y', 'n'), '-', decode(sign(instr(
'-', decode(sign(instr( hlk.tag,per_bipntf_utility.getAttributeFromTXNContext(:tra
hlk.tag, nsId,'legislationcode','cmptxnnewsalaryvaluesmap')
extractvalue(xmltype('<root>'||htd.data_cache||'</root>'),'r )), 1, 'n', 'y'), 'y' ) ) = 'y'
oot/transaction/transctx/cmptxnnewsalaryvaluesmap/
legislationcode'))), 1, 'n', 'y'), 'y' ) ) = 'y'