Provide a REST web service in PeopleSoft

This document describes a simple example on how to provide a REST web service from PeopleSoft.
We are going to provide a service that returns the ISO2 code and the name of a country. The input will be an ISO3 country code.

Content
Step 1: Define documents

Define documents for input and output messages. Go to: PeopleTools > Documents > Documents Builder

Create a new document with the following parameters, this will be the request:

PackageC_COUNTRY_INFO_REST_PKG
Document NameC_COUNTRY_INFO_REQ
Version Namev1

Set the root element to request and create a primitive called country_code_iso3. This should be a string of length 3.

On the JSON tab set the JSON label also to request.

Create a second document with the following parameters, this will be the response:

PackageC_COUNTRY_INFO_REST_PKG
Document NameC_COUNTRY_INFO_RESP
Version Namev1

Add two primitives here called country_code_iso2 and description. Make sure to set the proper type and length.

Step 2: Define messages

Go to: PeopleTools > Integration Broker > Integration Setup > Messages
Create two messages one for the request and one for the response. The request:

The response:

Step 3: Create service

Go to: PeopleTools > Integration Broker > Integration Setup > Services
Create a new web service named C_COUNTRY_INFO_REST. Don’t forget to check the Is Provider checkbox.

Save the service and add a new service operation named C_GET_COUNTRY_INFO:

On the general tab you have to do a couple of things:

  • Define security
  • Set request parameters
  • Set response parameters
Step 3a: Define security

Click on the Service Operation Security link and assign a permission list to the service operation. The user that calls the service must have this permission list assigned via a role to be able to execute the operation.

Step 3b: Set request parameters

In the URI scroll fill in, use the following as a template: country/{country_code_iso3}
The REST base URL is pre-populated. Your REST service will later be available on a URL which is the combination of the base URL and the template. In this example, if you want to query the Netherlands it will be:

http://*******:9084/PSIGW/RESTListeningConnector/PSFT_CORE/C_GET_COUNTRY_INFO.v1/country/NLD

As document template use the created request message.

Step 3c: Set response parameters

For the response setup use the created response  message and set content-type to application/json.

Step 4: Create a handler

On the “Handlers” tab of the service operation you have to link an application class which handles the requests and returns a response.
In Application Designer create an application package like in the example below:

As code use some place holder code so you can save the application package:

import PS_PT:Integration:IRequestHandler;

class Country implements PS_PT:Integration:IRequestHandler
   method Country();
   method OnRequest(&MSG As Message) Returns Message;
end-class;

/* constructor */
method Country
end-method;

method OnRequest
   /+ &MSG as Message +/
   /+ Returns Message +/
   /+ Extends/implements PS_PT:Integration:IRequestHandler.OnRequest +/
   /* Variable Declaration */
   
   Return Null;
end-method;

Now on the “Handlers” tab link the application package to the service operation as shown below.

Click on details and fill in the parameters as shown.

Step 4a: Write handler code

Now you can finish the handler code. See the example below.

import PS_PT:Integration:IRequestHandler;

class Country implements PS_PT:Integration:IRequestHandler
   method Country();
   method OnRequest(&MSG As Message) Returns Message;
end-class;

/* constructor */
method Country
end-method;

method OnRequest
   /+ &MSG as Message +/
   /+ Returns Message +/
   /+ Extends/implements PS_PT:Integration:IRequestHandler.OnRequest +/
   /* Variable Declaration */
   
   Local string &strISO3;
   Local Record &rcdCountryTbl;
   Local Document &docReq, &docResp;
   Local Compound &compReq, &compResp;
   Local Message &msgResp;
   
   /* Get input parameters from request */
   &docReq = &MSG.GetURIDocument();
   &compReq = &docReq.DocumentElement;
   &strISO3 = &compReq.GetPropertyByName("country_code_iso3").value;
   
   /* Message */
   If &MSG.HTTPMethod = %IntBroker_HTTP_GET Then
      /* Get ISO2 and country description */
      &rcdCountryTbl = CreateRecord(Record.COUNTRY_TBL);
      &rcdCountryTbl.COUNTRY.Value = &strISO3;
      If &rcdCountryTbl.SelectByKey() Then
         /* Create response mesage*/
         &msgResp = CreateMessage(Operation.C_GET_COUNTRY_INFO_GET, %IntBroker_Response);
         
         /* Get document and root compound */
         &docResp = &msgResp.GetDocument();
         &compResp = &docResp.DocumentElement;
         
         /* Set primitives */
         &compResp.GetPropertyByName("country_code_iso2").Value = Left(&rcdCountryTbl.COUNTRY_2CHAR.Value, 2);
         &compResp.GetPropertyByName("description").Value = Left(&rcdCountryTbl.DESCR.Value, 100);
      Else
         /* Do something to handle non existing countries.... this is not implemented in this example */
         /* Only the happy flow works */
      End-If;
   End-If;
   
   /* Return response */
   Return &msgResp;
end-method; 
Step 5: Provide the REST service

Go to: PeopleTools > Integration Broker > Web Service > Provide Web Service
Here search for the REST web service and go through the wizard to publish the service. This will provide a WADL which you can use to provide to 3rd parties so they can integrate.

Step 6: Testing

Like mentioned in step 3b you can now use the following URL to test your service:

http://******:9084/PSIGW/RESTListeningConnector/PSFT_CORE/C_GET_COUNTRY_INFO.v1/country/NLD

Just copy and paste it in your browser and you will get the result shown below:

For more thorough testing you can use a tool like SoapUI:


Posted

in

by