Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

CONSUME THIRD PARTY REST BASED WEBSERVICE PUSH DATA FROM PS

 Before starting please connect with DBA to set integration configuration on the Instance.
 Ask Third party for Sample Jason Payload and EndPoint to Consume in PS, Sample given below.
[{
"batchseq": "01",
"batchsession": "2020-2021",
"catalognbr": "5001DCS",
"classnumber": "1002",
"descr": "General Grace Marks",
"descrshort": "CM",
"gradebookstatgingid": "0",
"lamtype": "GEN GRACE",
"lamweight": "20",
"marksouof": "20",
"sequenceno": "2",
"ssrcomponent": "LEC",
"term": "2001"
}]
 Sample End Point provided by Third party - http://100.26.586.136:81/mg/api/gradebook/addGradebookData
 Gradebook is servname and addGradebookData is methodname .
 Last two parameters are servername and methodname of End point, please verify it with third party.
 Connect with DBA and confirm that this URL is running successfully in PS server.
 Test this End Point by testing tool like SOAP or POSTMAN.
 Below is the Image of SOAPUI.

 Click on Rest , paste the URL (end point) and click on OK.
 Click on Request 1 on Left side, select Method as POST, select Media type (application/jason), insert Jason
body with tag value and click run button .
 Verify with Third Party data pushed in their environment or not and proceed further in case successful transaction.
1. CREATE REQUEST DOCUMENT AND ADD ELEMENTS BY CLICKING ON THEN CLICK ON EACH ELEMENT TO
SET LENGTH AND TYPE:

Navigation - Main Menu > PeopleTools > Document > Document Builder

 Enter Package name, Document name and version then click on Add button.

 Enter Two element methodname and servname as string type and set length according to URL.
2. CREATE REQUEST MESSAGE AS DOCUMENT TYPE:
Navigation - Main Menu > PeopleTools > Integration Broker > Integration Setup > Messages

 Enter Type as Document, Message name, version then Add.

 Enter Document Name, Package name and version created above.

 Then Hit save.


3. CREATE A NON ROWSET BASED MESSAGE AND PASS root TO ROOT ELEMENT:
Navigation - Main Menu > PeopleTools > Integration Broker > Integration Setup > Messages
 Enter Type as Now rowset, Message name and version then click on Add button.

 Pass root in Root element.

4. CREATE REST BASED SERVICE:


Navigation - Main Menu > PeopleTools > Integration Broker > Integration Setup > Service

 Enter Service Name and click check box Rest Service then Add.

 Enter Service Operation Name, Rest Method as POST and uncheck Is Provider Checkbox then Add.
 Enter URL till port (http://100.26.586.136:81) in REST Base URL and pass rest part in
(/mg/api/{servname}/{methodname}) in URI.
 Pass Request message in Document Templete
 Pass Non Rowset message created above in Request Message.
 Select application/jaon in Content-Type.
5. CREATE SQL TO GENERATE JASON REQUEST BODY (JASON FORMAT) TO PUSH DATA TO THIRD PARTY AS SAMPLE
PROVIDED:

SELECT '['||LISTAGG(('{"batchseq":"'|| substr(a.strm


,3
,2) || '","batchsession":"'|| ('20'||substr(a.strm
,1
,2)||'-'||'20'||(substr(a.strm
,1
,2)+1)) ||'","catalognbr":"'|| b.catalog_nbr ||'","classnumber":"'|| a.class_nbr ||'","descr":"'|| a.descr ||'","descrshort":"'||
a.descrshort || '","gradebookstatgingid":"'|| 0 ||'","lamtype":"'|| a.lam_type ||'","lamweight":"'|| a.lam_weight
||'","marksouof":"'|| a.mark_out_of ||'","sequenceno":"'|| a.sequence_no ||'","ssrcomponent":"'|| b.ssr_component
||'","term":"'|| a.strm ||'"}')
,',') WITHIN
GROUP(
ORDER BY (a.sequence_no))||']' json
FROM ps_lam_class_actv a
,ps_class_tbl b
WHERE a.strm=b.strm
AND a.class_nbr=b.class_nbr AND a.strm=:1 AND a.class_nbr=:2 ;

 It is not compulsory to create SQL it can be also done by Select method.

 Request Jason created by SQL should be in same format provided by Third Party.

[{
"batchseq": "01",
"batchsession": "2020-2021",
"catalognbr": "5001DCS",
"classnumber": "1002",
"descr": "General Grace Marks",
"descrshort": "CM",
"gradebookstatgingid": "0",
"lamtype": "GEN GRACE",
"lamweight": "20",
"marksouof": "20",
"sequenceno": "2",
"ssrcomponent": "LEC",
"term": "2001"
}, {
"batchseq": "01",
"batchsession": "2020-2021",
"catalognbr": "5001DCS",
"classnumber": "1002",
"descr": "End Semester Examination",
"descrshort": "End Sem",
"gradebookstatgingid": "0",
"lamtype": "END SEM",
"lamweight": "60",
"marksouof": "60",
"sequenceno": "3",
"ssrcomponent": "LEC",
"term": "2001"
}]
6. PEOPLECODE TO EXECUTE SQL AND HIT END POINT THROUGH SERVICE OPERATION:

Local Document &doc, &doc_tmpl;


Local Compound &com, &com_tmpl;
Local XmlDoc &xmldoc, &xmldocreturn;
Local string &json_test;
&class_nbr = ‘1002’;
&strm = ‘2001’;
SQLExec(SQL.SRM_ERP_GRD_SQL, &class_nbr , &strm, &json_test);
&MSG = CreateMessage(Operation.SRM_GRADEBOOK_SYNC_POST, %IntBroker_Request);
&restval = &MSG.SetContentString(&json_test);
&doc_tmpl = &MSG.GetURIDocument();
&com_tmpl = &doc_tmpl.DocumentElement;
&com_tmpl.GetPropertyByName("servname").VALUE = "gradebook";
&com_tmpl.GetPropertyByName("methodname").VALUE = "addGradebookData";
&MSG.URIResourceIndex = 1;

try
&RESP = %IntBroker.SyncRequest(&MSG);
catch Exception &ex
MessageBox(0, "", 0, 0, "error: " | &ex.ToString());
end-try;

If None(&ex) Then
MessageBox(0, "", 0, 0, "Response: " | &RESP.GenXMLString());
Local JsonParser &parser1 = CreateJsonParser();
Local boolean &status1 = &parser1.Parse(&RESP.GenXMLString());
Local JsonObject &jObj = &parser1.GetRootObject();
Local JsonArray &rootArray;
&rootArray = &jObj.GetJsonArray("");

If &rootArray.Length() > 0 Then


Local JsonObject &rootObject;
Local array &jsonArray_id, &jsonArray_code, &jsonArray_crse;
&jsonArray_id = CreateArray();
&jsonArray_seq = CreateArray();
&jsonArray_descrshort = CreateArray();
&jsonArray_descr = CreateArray();
&jsonArray_num = CreateArray();
&jsonArray_year = CreateArray();
&jsonArray_ssrcmp = CreateArray();
&jsonArray_catalog = CreateArray();
&jsonArray_lamtype = CreateArray();
&jsonArray_lamwt = CreateArray();
&jsonArray_markoutof = CreateArray();

For &i = 1 To &rootArray.Length();


&rootObject = &rootArray.GetJsonObject(&i);
&jsonArray_seq [&i] = &rootObject.GetAsString("sequenceno");
&jsonArray_id [&i] = &rootObject.GetAsString("gradebookstatgingid");
&jsonArray_descrshort [&i] = &rootObject.GetAsString("descrshort");
&jsonArray_descr [&i] = &rootObject.GetAsString("descr");
&jsonArray_num [&i] = &rootObject.GetAsString("batchseq");
&jsonArray_year [&i] = &rootObject.GetAsString("batchsession");
&jsonArray_ssrcmp [&i] = &rootObject.GetAsString("ssrcomponent");
&jsonArray_catalog [&i] = &rootObject.GetAsString("catalognbr");
&jsonArray_lamtype [&i] = &rootObject.GetAsString("lamtype");
&jsonArray_lamwt [&i] = &rootObject.GetAsString("lamweight");
&jsonArray_markoutof [&i] = &rootObject.GetAsString("marksouof");

&REC = CreateRecord(Record.SRM_ERP_GRD_TB);
&REC.NUM1.Value = &jsonArray_num [&i];
&REC.SESSION_YEAR.VALUE = &jsonArray_year [&i];
&REC.STRM.VALUE = &strm;
&REC.CLASS_NBR.VALUE =&class_nbr;
&REC.SSR_COMPONENT.VALUE = &jsonArray_ssrcmp [&i];
&REC.CATALOG_NBR.VALUE = &jsonArray_catalog [&i];
&REC.DESCRSHORT.VALUE = &jsonArray_descrshort [&i];
&REC.DESCR.VALUE = &jsonArray_descr [&i];
&REC.LAM_TYPE.VALUE = &jsonArray_lamtype [&i];
&REC.LAM_WEIGHT.VALUE = &jsonArray_lamwt [&i];
&REC.MARK_OUT_OF.VALUE = &jsonArray_markoutof [&i];
&REC.SEQUENCE_NBR.VALUE = &jsonArray_seq [&i];
&REC.NUMBER10.VALUE = &jsonArray_id [&i];
&REC.DESCRLONG.VALUE = &RESP.GenxmlString();
&REC.Insert();

End-For;

End-If;
End-If;

Make some changes in the above code according to your requirement.


 In above &json_test variable is storing the Jason body.
 Pass Service Operation name created above.
 Pass Server Name and Method Name given by Third Party.
 After hitting the service data is stored in a Record by parsing the Jason.
 Above Code can be written in a process can be scheduled.

7. PROVIDE SECURITY TO WEB SERVICE:


Navigation – Main Menu > PeopleTools > Security > Permissions & Roles > Permission Lists

 Select a Permission list, Add service name by clicking on and click edit then give full access to that service

 Run the Process or Code to Push data to Third Party Environment.

You might also like