Two PeopleCode functions are required to support inbound processing. If you create a custom event project in PeopleTools for inbound support, add the PeopleCode functions to the project.
/* IBM event notification */
Component string &KEYSTRING;
Component string &KEYNAME;
Component array of string &KEYARRAY;
Component string &KEYDELIM;
Component string &IBMVERB;
Local Record &IBMREC;
Function IBMPublishFutureDatedEvent(&BO, &KEYS, &EFFDATE)
; /* == create a new record object for cw_event_tbl == */
&IBMREC = CreateRecord(Record.IBM_EVENT_TBL);
/* =============== KEYS ================ */
/* composing keys and values in name value format */
&KEYSTRING = "";
&KEYDELIM = ":";
&KEYARRAY = Split(&KEYS, &KEYDELIM);
&LEN = &KEYARRAY.Len;
For &I = 1 To &LEN;
/* get keys and values */
/* get rid of record name */
&POS1 = Find(".", &KEYARRAY [&I]);
&L1 = Len(&KEYARRAY [&I]);
&POS2 = &L1 - &POS1;
&KEYNAME = Right(&KEYARRAY [&I], &POS2);
/****The code below will remove special characters and****/
/****adjust the characters' case to ensure it is same as the****/
/****attribute name in the business object definition***/
/****Start****/
&lLen = Len(&KEYNAME);
&sOrigString = &KEYNAME;
&sNewString = "";
&lCtr2 = 1;
&isSpecialChar = "true";
For &lCtr = 1 To &lLen;
&sChar = Substring(&sOrigString, &lCtr, 1);
If (&sChar = "A" Or
&sChar = "a" Or
&sChar = "B" Or
&sChar = "b" Or
&sChar = "C" Or
&sChar = "c" Or
&sChar = "D" Or
&sChar = "d" Or
&sChar = "E" Or
&sChar = "e" Or
&sChar = "F" Or
&sChar = "f" Or
&sChar = "G" Or
&sChar = "g" Or
&sChar = "H" Or
&sChar = "h" Or
&sChar = "I" Or
&sChar = "i" Or
&sChar = "J" Or
&sChar = "j" Or
&sChar = "K" Or
&sChar = "k" Or
&sChar = "L" Or
&sChar = "l" Or
&sChar = "M" Or
&sChar = "m" Or
&sChar = "N" Or
&sChar = "n" Or
&sChar = "O" Or
&sChar = "o" Or
&sChar = "P" Or
&sChar = "p" Or
&sChar = "Q" Or
&sChar = "q" Or
&sChar = "R" Or
&sChar = "r" Or
&sChar = "S" Or
&sChar = "s" Or
&sChar = "T" Or
&sChar = "t" Or
&sChar = "U" Or
&sChar = "u" Or
&sChar = "V" Or
&sChar = "v" Or
&sChar = "W" Or
&sChar = "w" Or
&sChar = "X" Or
&sChar = "x" Or
&sChar = "Y" Or
&sChar = "y" Or
&sChar = "Z" Or
&sChar = "z" Or
&sChar = "1" Or
&sChar = "2" Or
&sChar = "3" Or
&sChar = "4" Or
&sChar = "5" Or
&sChar = "6" Or
&sChar = "7" Or
&sChar = "8" Or
&sChar = "9" Or
&sChar = "0") Then
If (&isSpecialChar = "true") Then
&sNewString = &sNewString | Upper(&sChar);
&isSpecialChar = "false";
Else
&sNewString = &sNewString | Lower(&sChar);
End-If;
Else
&isSpecialChar = "true";
End-If;
End-For;
&KEYNAME = &sNewString;
/*********End*********/
&KEYSTRING = &KEYSTRING | &KEYNAME | "=" | @&KEYARRAY [&I] | &KEYDELIM
End-For;
&KEYSTRING = RTrim(&KEYSTRING, ":");
&IBMREC.IBM_OBJECT_KEYS.Value = &KEYSTRING;
/*============== VERB =========================*/
/* verb determination uses variable &IBMVERB */
Evaluate %Mode
When = "A"
&IBMVERB = "Create";
Break;
When = "U"
&IBMVERB = "Update";
Break;
When = "L"
&IBMVERB = "Update";
Break;
When = "C"
&IBMVERB = "Update";
Break;
When-Other
&IBMVERB = "Retrieve";
End-Evaluate;
&IBMREC.IBM_OBJECT_VERB.Value = &IBMVERB;
/* ====================== EVENT_ID GEN ==================================== */
/* create event_id */
&NEWNUM = GetNextNumber(IBM_FETCH_ID.IBM_NEXT_EVENT_ID, 99999);
/* only use newnum if no error generating next number */
If &NEWNUM > 0 Then
&IBMREC.IBM_EVENT_ID.Value = &NEWNUM;
Else
&IBMREC.IBM_EVENT_ID.Value = %Datetime;
End-If; /*Support for Future Effective Date - The adapter will poll such events when the date arrives*/
If &EFFDATE > %Datetime Then
&IBMREC.IBM_EVENT_DTTM.Value = &EFFDATE;
&IBMREC.IBM_EVENT_STATUS.Value = "99";
Else
&IBMREC.IBM_EVENT_DTTM.Value = %Datetime;
&IBMREC.IBM_EVENT_STATUS.Value = "0";
End-If; /*================ INSERT EVENT INTO IBM_EVENT_TBL ============*/
/* insert row into table using record object*/
&IBMREC.IBM_OBJECT_NAME.Value = &BO;
&IBMREC.Insert();
End-Function;
Function IBMPublishEvent(&BO, &KEYS);
/* == create a new record object for cw_event_tbl == */
&IBMREC = CreateRecord(Record.IBM_EVENT_TBL);
/* =============== KEYS ================ */
/* composing keys and values in name value format */
&KEYSTRING = "";
&KEYDELIM = ":";
&KEYARRAY = Split(&KEYS, &KEYDELIM);
&LEN = &KEYARRAY.Len;
For &I = 1 To &LEN;
/* get keys and values */
/* get rid of record name */
&POS1 = Find(".", &KEYARRAY [&I]);
&L1 = Len(&KEYARRAY [&I]);
&POS2 = &L1 - &POS1;
&KEYNAME = Right(&KEYARRAY [&I], &POS2);
/****The code below will remove special characters and
/****adjust the characters' case to ensure it is same as the
/****attribute name in the business object definition***/
/****Start****/
&lLen = Len(&KEYNAME);
&sOrigString = &KEYNAME;
&sNewString = "";
&lCtr2 = 1;
&isSpecialChar = "true";
For &lCtr = 1 To &lLen;
&sChar = Substring(&sOrigString, &lCtr, 1);
If (&sChar = "A" Or
&sChar = "a" Or
&sChar = "B" Or
&sChar = "b" Or
&sChar = "C" Or
&sChar = "c" Or
&sChar = "D" Or
&sChar = "d" Or
&sChar = "E" Or
&sChar = "e" Or
&sChar = "F" Or
&sChar = "f" Or
&sChar = "G" Or
&sChar = "g" Or
&sChar = "H" Or
&sChar = "h" Or
&sChar = "I" Or
&sChar = "i" Or
&sChar = "J" Or
&sChar = "j" Or
&sChar = "K" Or
&sChar = "k" Or
&sChar = "L" Or
&sChar = "l" Or
&sChar = "M" Or
&sChar = "m" Or
&sChar = "N" Or
&sChar = "n" Or
&sChar = "O" Or
&sChar = "o" Or
&sChar = "P" Or
&sChar = "p" Or
&sChar = "Q" Or
&sChar = "q" Or
&sChar = "R" Or
&sChar = "r" Or
&sChar = "S" Or
&sChar = "s" Or
&sChar = "T" Or
&sChar = "t" Or
&sChar = "U" Or
&sChar = "u" Or
&sChar = "V" Or
&sChar = "v" Or
&sChar = "W" Or
&sChar = "w" Or
&sChar = "X" Or
&sChar = "x" Or
&sChar = "Y" Or
&sChar = "y" Or
&sChar = "Z" Or
&sChar = "z" Or
&sChar = "1" Or
&sChar = "2" Or
&sChar = "3" Or
&sChar = "4" Or
&sChar = "5" Or
&sChar = "6" Or
&sChar = "7" Or
&sChar = "8" Or
&sChar = "9" Or
&sChar = "0") Then
If (&isSpecialChar = "true") Then
&sNewString = &sNewString | Upper(&sChar);
&isSpecialChar = "false";
Else
&sNewString = &sNewString | Lower(&sChar);
End-If;
Else
&isSpecialChar = "true";
End-If;
End-For;
&KEYNAME = &sNewString;
/*********End*********/
&KEYSTRING = &KEYSTRING | &KEYNAME | "=" | @&KEYARRAY [&I] | &KEYDELIM
End-For;
&KEYSTRING = RTrim(&KEYSTRING, ":");
&IBMREC.IBM_OBJECT_KEYS.Value = &KEYSTRING;
/*============== VERB =========================*/
/* verb determination uses variable &IBMVERB */
Evaluate %Mode
When = "A"
&IBMVERB = "Create";
Break;
When = "U"
&IBMVERB = "Update";
Break;
When = "L"
&IBMVERB = "Update";
Break;
When = "C"
&IBMVERB = "Update";
Break;
When-Other
&IBMVERB = "Retrieve";
End-Evaluate;
&IBMREC.IBM_OBJECT_VERB.Value = &IBMVERB;
/* ====================== EVENT_ID GEN ============================= */
/* create event_id */
&NEWNUM = GetNextNumber(IBM_FETCH_ID.IBM_NEXT_EVENT_ID, 99999);
/* only use newnum if no error generating next number */
If &NEWNUM > 0 Then
&IBMREC.IBM_EVENT_ID.Value = &NEWNUM;
Else
&IBMREC.IBM_EVENT_ID.Value = %Datetime;
End-If;
&IBMREC.IBM_EVENT_DTTM.Value = %Datetime;
/* ============== EVENT_STATUS =================*/
/* Validate and set event status &IBMSTATUS - list values if date is ok*/
&IBMREC.IBM_EVENT_STATUS.Value = "0";
/*================ INSERT EVENT INTO IBM_EVENT_TBL ============*/
/* insert row into table using record object*/
&IBMREC.IBM_OBJECT_NAME.Value = &BO;
&IBMREC.Insert();
End-Function;