Application Services Framework (ASF) in PeopleSoft
Application Services Framework (ASF) in PeopleSoft
The Application Services Framework (ASF) in PeopleSoft is a design pattern and a set of tools used to create service-oriented architecture (SOA)-based services in PeopleSoft applications. ASF supports the development of reusable, standardized, and modular services that can be consumed by internal or external systems.
🔹 Key Concepts of Application Services Framework (ASF)
-
Service-Oriented Architecture (SOA):
-
ASF helps structure PeopleSoft functionality into services.
-
Services expose application logic in a reusable and standardized way.
-
-
Components of ASF:
-
Service Definitions: High-level definition of the service (name, description, etc.).
-
Service Operations: Actual operations (methods) exposed by the service (e.g., Get, Create, Update).
-
Handlers: Application Class methods or Integration Broker transforms that implement the service logic.
-
Service Packages: Logical groupings of related services.
-
-
Integration with PeopleSoft Integration Broker:
-
ASF services can be exposed as SOAP or REST web services.
-
They can also be consumed internally by PeopleCode or external clients (e.g., third-party systems).
-
-
Application Classes:
-
Most ASF implementations are built using Application Packages and Classes to provide structure and reuse.
-
-
Transaction and Error Handling:
-
ASF includes built-in mechanisms for logging, error management, and transaction control.
-
🔧 How to Use ASF in PeopleSoft
-
Design the Service:
-
Identify reusable business logic.
-
Define inputs/outputs clearly.
-
-
Create Application Package/Class:
-
Use
App Designer
to define logic in an Application Class.
-
-
Define the Service in the Service Framework:
-
Go to:
PeopleTools > Integration Broker > Integration Setup > Services
-
Create a new Service and add Service Operations.
-
-
Configure the Service Operation:
-
Set up request/response messages.
-
Link the operation to your Application Class Handler.
-
-
Expose the Service:
-
Activate the service for internal or external use.
-
Use WSDL for SOAP or URI templates for REST.
-
-
Testing and Monitoring:
-
Use Service Operation Tester or external tools (like Postman).
-
Monitor via Integration Broker Monitor.
-
✅ Benefits of Using ASF
-
Promotes modular design.
-
Encourages reusability of business logic.
-
Standardized way to expose PeopleSoft functionality.
-
Enables integration with external systems (cloud, mobile, partners).
-
Supports REST and SOAP services.
Creating a Provider Application Service involves the following steps:
- Plan Application Service.
- Create an Application Class which will provide the application logic.
- Create Application Service.
- Create or import a root resource.
- Add URI templates.
- Add base template parameters to URI Template.
- Add method to URI template.
- Add input and output parameters to method.
- Optionally assign headers for the method.
- Define result states for the method.
This is the first tutorial in the Create Application Service series. Read the tutorials in the order listed.
- Plan and Create the Application Class
- Create the Application Service
- Test the Application Service
Determine the Resources for your Application Service
For this tutorial, you will create an Application Service for music. The initial design should include:
- URI Template(s)
- Method(s)
- Input Parameters
- Output Parameters
This tutorial will begin by creating the Application Class that defines the application logic for the Application Service. For this Application Service, the user can retrieve the number of players and playdate for a specific instrument. It will also include the ability to post a player and music code for an instrument.
The root resource for the Application Service will include a GET and PUT method.
URI Template | Index | Method | Input Parameters | Output Parameters |
band/{instrument} | 1 | GET | instrument (string) numPlayers (number) playdate (date) | |
band/{instrument} | 1 | POST | player (string) musicCode (integer) | results (string) |
Create Application Class
In Application Designer create a new Application Package and Application Class that implements the application logic:
- In Application Designer create a new Application Package. File, New, Application Package.
- Select File, Save. Enter Description and click OK. Enter Name: APPSRVEXAMPLE.
- Right click on the package and select Insert App Class. Class Name: band.
- Double click band to add the code.
The application class must extend the PCBAPPLSVCDEFN:ApplicationServiceBase application class and then implement the invokeService() method to define the application logic.
import PTCBAPPLSVCDEFN:ApplicationServiceBase; class band extends PTCBAPPLSVCDEFN:ApplicationServiceBase; method invokeService(); end-class;
method invokeService /+ Extends/implements PTCBAPPLSVCDEFN:ApplicationServiceBase.invokeService +/
Define the variables for the Application Service parameters:
Local string &Inst, &httpMethod, &player, &results, &headervalue; Local integer &UriIndex, &code;
Local time &timein;
Local date &datein;
Use the %This.ServiceAPI property to read and write parameters and other Application Services metadata.
&httpMethod = %This.ServiceAPI.HttpMethod; &UriIndex = %This.ServiceAPI.URIIndex;
Use the HttpMethod property and URIIndex property to return the HTTP method and URI index that was invoked for the transaction.
If &httpMethod = "GET" Then
If &UriIndex = 1 Then
Use the getTemplateParameter method to retrieve template value based on parameter defined on the application service.
&Inst = %This.ServiceAPI.getTemplateParameter("instrument");
Use setOutputParameters for single row output. The code is commented out here as the tutorial will use multi row output.
<* %This.ServiceAPI.setOutputParameter("numPlayers", 10);
%This.ServiceAPI.setOutputParameter("instrument", &Inst);
%This.ServiceAPI.setOutputParameter("playdate", %Date);
%This.ServiceAPI.setOutputParameter("timeout", &timein); *>
Use insertOutputRow for multi row output. For this tutorial the output is hardcoded for simplicity.
%This.ServiceAPI.insertOutputRow(); %This.ServiceAPI.OutputRows [1].setParameter("numPlayers", 10); %This.ServiceAPI.OutputRows [1].setParameter("instrument", &Inst); %This.ServiceAPI.OutputRows [1].setParameter("playdate", Date(20220202)); %This.ServiceAPI.insertOutputRow(); %This.ServiceAPI.OutputRows [2].setParameter("numPlayers", 6); %This.ServiceAPI.OutputRows [2].setParameter("instrument", &Inst); %This.ServiceAPI.OutputRows [2].setParameter("playdate", %Date);
Use the result state property to set the result state. Results States denote logical conclusion for the service execution.
%This.ServiceAPI.ResultState = "SUCCESS - PLAY MUSIC"; End-If; End-If;
Next you will enter the code for the POST.
If &httpMethod = "POST" Then If &UriIndex = 1 Then
Optionally you can add request and response headers. For this example, we will add both a request and response header to the POST.
Use getRequestHeaderValue to retrieve header value based on header defined on the application service. Use setResponseHeader to set the response header value based on header defined on the application service.
&headervalue = %This.ServiceAPI.getRequestHeaderValue("Accept-Language");
%This.ServiceAPI.setResponseHeader("Type","Woodwind");
Use the getTemplateParameter method to retrieve template value based on parameter defined on the application service.
&Inst = %This.ServiceAPI.getTemplateParameter("instrument");
Use the InputRows property to get values on the specified row.
&player = %This.ServiceAPI.InputRows[1].getParameter("player");
&Inst = %This.ServiceAPI.InputRows[1].getParameter("instrument");
&code = %This.ServiceAPI.InputRows[1].getParameter("musicCode");
&player = %This.ServiceAPI.InputRows[2].getParameter("player");
&Inst = %This.ServiceAPI.InputRows[2].getParameter("instrument");
&code = %This.ServiceAPI.InputRows[2].getParameter("musicCode");
Use the setOutputParameter to set output value based on parameter defined on the application service. (single row output)
%This.ServiceAPI.setOutputParameter("results", "Players added");
Use the result state property to set the result state.This is also the end of the if statement and end of the method.
%This.ServiceAPI.ResultState = "Success"; End-If; End-If; end-method;
Comments
Post a Comment