PeopleSoft Integration with ASP.NET Using CI based(In-Bound) Web Services

My previous posts have been about outbound messages from PeopleSoft (sending a synchronous message from PeopleSoft to Amazon to search for available books, sending a message to Google to get the search results).

Today, I am going to show how to send messages into PeopleSoft using web services over integration broker. Our source page (third party) system page is going to look like this. As you notice, I am using ASP.NET as our third party system. We will call a PeopleSoft exposed web service from the button “Send to PeopleSoft”. When PeopleSoft web service is created based on CI, standard methods (get, find, create, update, update data) are exposed as methods in WSDL. We are going to call the “Create” method of the web service.


This is simple web page in ASP.NET which takes Employee ID, first name and last name as inputs and inserts data into PeopleSoft.

We are going to verify that our integration has worked by verifying the data in the page. I have created a component interface based on this component. This is very simple CI with EMPID as search key.


I have used simple CI with no levels as idea here is the integration between third party systems with PeopleSoft as opposed to CI tutorial.

Prerequisites

  • Working knowledge of the PeopleSoft Component Interface.
  • Integration setup has been completed for the gateway. You can refer to my previous posts on setting up Google web service for complete description.
  • Some knowledge of ASP.NET. I have to admit I am not an expert .NET but a simple Google would provide you with enough information about consuming web service in .NET.
  • (Optional) BPEL working knowledge, since I am not a well versed with the .NET technology I used BPEL to test my initial CI integration. This is optional if you are .NET developer.
  • PeopleTools 8.4 have bug with respect to the CI based integration. So if you are not on the 8.5 PeopleTools you need to
    • Copy file $ORACLE_HOME\j2ee\<component-name>\applications\<application-name>\PSIGW\WEB-INF\lib\xercesImpl.jar to $ORACLE_HOME\j2ee\<component-name>\applib folder
    • Copy file $OAS_HOME\j2ee\<component-name>\applications\<application-name>\PSIGW\WEB-INF\lib\xml-apis.jar to $ORACLE_HOME\j2ee\<component-name>\applib folder
    • Remove the file $ORACLE_HOME\j2ee\<component-name>\applications\<application-name>\PSIGW\WEB-INF\lib\xalan.jar
    • Remove the file $ORACLE_HOME\j2ee\<component-name>\applications\<application-name>\PSIGW\WEB-INF\lib\xerces.jar
    • Remove files xercesImpl.jar & xml-apis.jar from $ORACLE_HOME\j2ee\<component-name>\applications\<application-name>\PSIGW\WEB-INF\lib folder
    • Open file $ORACLE_HOME\j2ee\<component-name>\application-deployments\<application-name>\PSIGW\orion-web.xml and remove the line <web-app-class-loader search-local-classes-first=”true” />.

     

Please Note: This is mandatory step otherwise you will get an error like

“Loader constraints violated when linking org/w3c/dom/NamedNodeMap class”

 

Steps

Here are the steps we are going to follow

  1. Create a custom record, page , component and component interface in PeopleSoft.
  2. Configure CI based web service.
  3. Create WSDL using provide web service wizard.
  4. Create a page in ASP and call our web service from the button.

     

    1. Create a custom record page, component and CI in PeopleSoft.

    Record:MY_EMPL_TBL

     


     

    Page: MY_EMPL_TBL

     


     

     

    Component: MY_EMPL_TBL

     


     

    Component Interface: MY_EMPL_TBL_CI_2

     


     

     

    1. Configure provide web service wizard.

      Navigate to the PeopleTools >Web services> CI-Based services. CI just created. In my case, it is MY_EMPL_TBL_CI.

Before you can actually see CI just created, security needs to be setup. You can setup security for the CI by adding the CI to existing permission list or creating a new permission list.

 



 


 

Select the CI and click on the Review CI status


 

Select all the available actions and click display selected actions


 

Enter Service alias and method alias names, Select all the service actions and click “Perform Selected Actions”.

 


 

After the methods are created, page returns to the review status page.


 

3. Create WSDL using provide web service wizard.

 

Navigate to the PeopleTools>Integration broker>Web services>Provide Web Service. Select the Service name created


 

Click next and select all the methods available


 



 

Click finish and copy the WSDL location generated. In my case it is

 

http://localhost:4040/PSIGW/PeopleSoftServiceListeningConnector/CI_MY_EMPL_TBL_CI_2.1.wsdl

 

Make sure you can open WSDL in any internet browser. If you paste the URL in the address bar you should see WSDL, something like this below. If you get error then some of the configuration steps were not done. Review your gateway configuration.


 

  1. Create a page in ASP and call our web service from the button.

     

    I am using Visual web developer to create the ASP.NET web site.

     

    Create a simple page with three text boxes and button.


     

    Click on the website and click add web reference.


     

    Enter the PeopleSoft WSDL URL generated before and click go. After click go you should get something like this. You can change the web reference name to “MyEmployeeWebService” and click “Add Reference” button.

    .

     

    Import the web service with using

    “using MyEmployeeWebService”

     


     

    Here is the complete code.

    using System;

    using System.Configuration;

    using System.Data;

    using System.Linq;

    using System.Web;

    using System.Web.Security;

    using System.Web.UI;

    using System.Web.UI.HtmlControls;

    using System.Web.UI.WebControls;

    using System.Web.UI.WebControls.WebParts;

    using System.Xml.Linq;

    using MyEmployeeWebService;//This is the name provided during the add web reference in ASP.NET.

     

    public
    partial
    class
    _Default : System.Web.UI.Page

    {


    protected
    void Page_Load(object sender, EventArgs e)

    {

     

    }


    protected
    void Button1_Click(object sender, EventArgs e)

    {


    /*Create the service object.Notice the name of service name is alias we provided during the CI service creation.*/


    MyCreateEmplyoeeRecord emplSrvc= new
    MyCreateEmplyoeeRecord();

     


    /*Create the request object.*/


    Create__CompIntfc__MY_EMPL_TBL_CI_2TypeShape EmplRqst = new
    Create__CompIntfc__MY_EMPL_TBL_CI_2TypeShape();

     


    /*Create Emplid,lastname and firstname objects*/


    EMPLIDTypeShape emplid = new
    EMPLIDTypeShape();


    LAST_NAMETypeShape lastname = new
    LAST_NAMETypeShape();


    FIRST_NAMETypeShape firstname = new
    FIRST_NAMETypeShape();

     


    /*Assign the values from the page to the objects*/

    emplid.Value = EMPL_ID.Text;

    lastname.Value = LAST_NAME.Text;

    firstname.Value = FIRST_NAME.Text;

     


    /*Assign each object to the request object*/

    EmplRqst.EMPLID = emplid;

    EmplRqst.FIRST_NAME = firstname;

    EmplRqst.LAST_NAME = lastname;

     


    /*Create Response object*/


    Create__CompIntfc__MY_EMPL_TBL_CI_2ResponseTypeShape emplResp = new
    Create__CompIntfc__MY_EMPL_TBL_CI_2ResponseTypeShape();

     


    /*call the web service.Notice the name of the method called.This is name of alias we provided in PeopleSoft*/

    emplResp = emplSrvc.EmpCreate(EmplRqst);

    }

    }

    Test the page. Enter the values and click “Send to PeopleSoft” Button.

     


     

    Check if the data is inserted in PeopleSoft


     

    And we have our data entered in ASP


     

    If we want to see the messages coming in, we need to configure the routings to log into the monitor like this


     

    Configure the security to see the messages by clicking ” service security operation”



     

    Enter another transaction and see the messages generated.


     

    Check the web service monitor.


     


     

    Here is the request XML


     

    And here is the response

     


     

    As you can see this is very simple integration setup where data from third party(ASP.NET) can be brought into PeoopleSoft. For this integration to work you either need to be on PeopleTools 8.45 or do the steps mentioned in the prerequisites.

     

    It is important to note that Oracle, in my opinion, is moving towards using extensive CI based integrations for ADF. If that is indeed the case PeopleSoft front end will seize to exist as we know it and ADF will become new PeopleSoft front end. Since most of the business logic in PeopleSoft is in table there will be a number of CIs build over these tables and exposed as web services which can be called from service data object from with in ADF. Given the performance of CI, it will be interesting to see how it will fit into overall Fusion application architecture. But let us see what Oracle will eventually come out with……during Xmas, 2010.