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.

     

     

     

     


PeopleSoft XML File Layout

  1. Create the record to insert data into (for example MY_FILETEST)

     

     

  2. Create file layout by dragging the test record on to the file layout

     

  3. Create XML file to use

 

<?xml version=”1.0″?>

<MY_FILETEST>

    <MYNUMBER>100</MYNUMBER>

    <MY_FACT_BEL>200</MY_FACT_BEL>

</MY_FILETEST>

<MY_FILETEST>

    <MYNUMBER>200</MYNUMBER>

    <MY_FACT_BEL>200</MY_FACT_BEL>

</MY_FILETEST>

<MY_FILETEST>

    <MYNUMBER>300</MYNUMBER>

    <MY_FACT_BEL>200</MY_FACT_BEL>

</MY_FILETEST>

 

 

  1. Save the file in the following folder if running the import from application server if running from the process scheduler save it in the prcs\files folder

    D:\Apps\PT849\appserv\EPM9DMO\files


 

 

  1. Use the following code to import the data into the record

 

Local File &FILE;

Local Record &REC;

Local Rowset &FRS;

 

&FILE = GetFile(“MyFileXML.xml”, “R”);

&REC = CreateRecord(Record.MY_FILETEST);

&SQL = CreateSQL(“%Insert(:1)”);

 

If Not &FILE.IsOpen Then

Error (“TEST: failed file open”);

Else

If Not &FILE.SetFileLayout(FileLayout.MY_FILETEST_XML) Then

Error (“TEST: failed SetFilelayout”);

Else

&FRS = &FILE.ReadRowset();

While &FRS <> Null

&FRS.GetRow(1).MY_FILETEST.CopyFieldsTo(&REC);

&SQL.execute(&REC);

&FRS = &FILE.ReadRowset();

End-While;

End-If;

&FILE.Close();

End-If;

 

  1. Call the code from the page

 

  1. Test if data is inserted


OBIEE Changing Administrator Password

  1. Shutdown OAS and OBIEE services.

Change the password in the BI server repository offline.


 3.Run crypto tools for both Publisher and BI Scheduler.
cryptotools credstore -add -infile D:\OracleBIData\web\config\credentialstore.xml
BIPublisher Alias : bipublisheradmin
     BIScheduler Alias : admin

 

4.Change password in Scheduler Config in job manager

 

5.Start OAS server and OBIEE services and update the JDBC connections for BI Server Answers


 

6.Update security configuration for the BI server security model with the new password.

 

 7.Restart all the servers again. If second restart is not done then BIPublisher reports based on answers will not work.

 

 


Deploying OBIEE Presentation Services outside the Firewall (BI Plug-in).

It if often the case that OBIEE need to be accessed by the users who are outside the corporate LAN.

For such deployments there is one web server box which is usually out of the DMZ.

I am going to use JBOSS application server as my server which is outside of the LAN that any user can access.

Steps

  1. Copy the Analytics.ear file from the D:\OracleBI\web directory


2. Paste the analytics.ear file to the deployment directory. In case of the JBoss this directory is usually like this

D:\My_Downloads\JBoss\jboss-4.2.3.GA-jdk6\jboss-4.2.3.GA\server\default\deploy


3. Start the server and make sure there are no errors in the deployment.

JBoss before starting to deploy the analytics.ear file


 

4. Access the application (analytics) from the browser. Please note that JBoss automatically redirects user to the presentation server.

Port on which the presentation service is redirected to, can be configured in the web.xml file of the JBoss. In this installation

I am using the default port so no changes were made to web.xml.


 

 


 


PeopleSoft Integration Broker and BPEL (Amazon Web Service)

PeopleSoft Integration Broker and BPEL (Amazon Web Service)

I wanted to integrate PeopleSoft with Amazon web service similar to the one I did before here for Google. But,this time I would like to add BPEL to the mix because that is certainly the way Oracle is taking PeopleSoft in the next version.

It is basically a simple page which will accept a search parameter. Based on the search keyword, the application will go search Amazon web site for books and return the results to PeopleSoft.

Our final PeopleSoft page will look something like this


Amazon WSDL is here.

Prerequisites

  • Before you can use the Amazon web service you need to create an account. You can create a free account for the Amazon web service here. After creating the account for Amazon web you will be provided with Access Key ID, this key is required in order for you to send and receive the messages from Amazon.
  • Since we are going to be integrating the service with BPEL you will need to have JDeveloper (10g, I am still researching how to integrate PeopleSoft with BPEL on JDeveloper 11g) to create the BPEL process and BPEL process manager to deploy the BPEL process developed. You can download them from the oracle web site.
  • Please note that I have made some assumptions regarding the audience who intent to use the steps described below.
      • Knowledge of the PeopleSoft pages, record, application engine and peoplecode.
      • Some working knowledge of the BPEL at least hello world process
      • Some knowledge of XSLT.

Steps

Here are the steps we will follow to create the integration

  1. Create the BPEL process in JDeveoper.
  2. Deploy the process to BPEL process manager.
  3. Test the integration works from BPEL process manager to Amazon.
  4. Configure the PeopleSoft to talk to BPEL process manager
  5. Create a PeopleSoft service operation that consumes the BPEL process we created above.
  6. Create a transform application engine to process the response from Amazon to HTML tags.
  7. Display the response on the PeopleSoft page.
  1. Create the BPEL Process in JDeveloper

  • Create new application in the JDeveloper. Lets us call it PeopleSoftToAmazonV2.

  • Click cancel on the Project create popup.
  • Create new project in the application

  • Select BPEL process project from the projects gallery

    • Select Synchronous BPEL process from the BPEL process creation wizard.

    • Click finish to open the default BPEL process.

    • Since the default BPEL input/output messages take one input and one output we need to change the schema for the input message and output message. Right click on the schema definition and change the schema for input and output as shown below. Amazon item search request needs three mandatory inputs Keywords, ResponseGroup and Searchindex. Since we are going to display total results and Image, Title and price we need these elements in the response message.
    • Create a partner link for the service. Drag the partner link from the component palette on the right side of the BPEL window as shown below.


      • Add invoke activity from the component palette after the receive activity.


    • Connect the invoke activity with the Amazon service by dragging and dropping the invoke activity. Select the itemSearch for the operation from the edit invoke window, auto create the input and output variables.


  • Drag an assign activity in between receive activity and invoke activity. Create copy operations to copy the keywords, search index and response group from in input variable to invoke input variable.




  • Create copy operation to select the access identifier to AWSAccessId. You need to select the expression from the type drop down in the from side of the copy operation.


    • Your final copy operation should look like this


      • Drag another transform activity after the invoke activity


  • Create a transformation double clicking on the transform activity. Make sure source variable is output variable from the invoke activity and target variable is output variable.


    • Map the transformations as follows

      -Add for-each node on the target before the items node .Map tags as follows

      - Item/ASIN ———-à ASIN

      - Item/SmallImage/URL———-à ImageURL

      - ItemAttributes/ListPrice/Amount ———-à Price

      - Item/ItemAttributes/Title ——————-àTitle


  1. Deploy the process to BPEL process manager.


    3. Test the service. Logon the BPEL console


    Enter Oracle for keyword, Large for Response Group and Books for search Index.



  2. Configure the PeopleSoft to talk to BPEL process manager

  • Configure the BPEL node properties by changing the process manager URL, BPEL domain. You can get to this screen by clicking on the properties link at the bottom of the Node definitions page


G

5. Create a PeopleSoft service operation that consumes the BPEL process we created above.

  • Get the WDSL from the BPEL Process Manager. Copy the link for the WSDL.

  • Create the service operation using consume web service wizard.

  • Make sure you select the BPEL node you configured before for the WSDL node

  • Note the service operation name. In my case, since I already have an operation named “PROCESS”, wizard created a new unique operation name PROCESS39474. This name is required when you create the code to call the BPEL process.

  • Create a simple page with a button to test our integration so far. Enter the code below behind the field change event of the button.

Local Message &lmsgAmazonRequest, &lmsgAmazonResponse;

Local XmlDoc &lxmldoc;

Local string &lstrXMLString;

&lobjBPEL = create PT_BPEL:BPELUtil();

&lmsgAmazonRequest = CreateMessage(Operation.PROCESS39474, %IntBroker_Request);

&lstrXMLString = “<?xml version=’1.0’?>

<ns1:AmazonItemSearchV2ProcessRequest xmlns:ns1=’http://xmlns.oracle.com/AmazonItemSearchV2′&gt;

<ns1:KeyWord>oracle</ns1:KeyWord>

<ns1:ResponseGroup>Large</ns1:ResponseGroup><

ns1:SearchIndex>Books</ns1:SearchIndex><

/ns1:AmazonItemSearchV2ProcessRequest>”;

WinMessage(&lstrXMLString, 0);

&lxmldoc = CreateXmlDoc(&lstrXMLString);

&lmsgAmazonRequest.SetXmlDoc(&lxmldoc);

&lmsgAmazonResponse = &lobjBPEL.launchsyncBPELProcess(“PROCESS”, &lmsgAmazonRequest, “”, “”);

WinMessage(&lmsgAmazonResponse.GenXMLString(), 0);

  • Test the code. When you the code it should you should see two winmessages as follows one for request and one for response



6. Create a transform application engine to process the response from Amazon to HTML tags.

  • Now that we know our integration works, we need to just make sure our page looks little pretty. We can process the response using SOAPDoc API but it will much easier to do it using XSLT and transform it to HTML tags using XSLT application engine. So create an transform application engine process with the following code. Make sure you change the application engine type to transform in the application engine properties and select XSLT as the transform type.



    Here is the code for the XSLT transform

<?xml version=”1.0″?>

<xsl:transform version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform&#8221; xmlns:env=”http://schemas.xmlsoap.org/soap/envelope/&#8221; xmlns:res=”http://xmlns.oracle.com/AmazonItemSearchV2&#8243; xmlns:ns1=”http://xmlns.oracle.com/AmazonItemSearchV2″&gt;

<xsl:template match=”/”>

<table border=”1″>

<tr>

<td>Total Search Results</td>

<td><xsl:value-of select=”env:Envelope/env:Body/res:AmazonItemSearchV2ProcessResponse/ns1:TotalResults”/></td>

</tr>

<xsl:for-each select=”env:Envelope/env:Body/res:AmazonItemSearchV2ProcessResponse/ns1:Items”>

<tr>

<td><IMG><xsl:attributename=”src”>

<xsl:value-of select=”ns1:ImageURL”/></xsl:attribute></IMG>

<br><xsl:value-of select=”ns1:Price”/></br></td>

<td><xsl:value-of select=”ns1:Title”/></td>
</tr>
</xsl:for-each>
</table>

</xsl:template>

</xsl:transform>

  • Change the routings on the operation to call the transform function.


  • Add HTML object to the page


  • Populate the HTML object the response from the BPEL in the button peoplecode

    Here is final peoplecode behind the button after removing the winmessages we added before and adding line of code to populate the HTML object and changing the hardcoded keyword to accept keyword from the page.

    import PT_BPEL:*;

    Local Message &lmsgAmazonRequest, &lmsgAmazonResponse;
    Local XmlDoc &lxmldoc;
    Local string &lstrXMLString;

    &lobjBPEL = create PT_BPEL:BPELUtil();

    &lmsgAmazonRequest = CreateMessage(Operation.PROCESS39474, %IntBroker_Request);

    &lstrXMLString = “” | MY_AMZN_IB_WRK.PTACEDUMMYFLD3.Value | “LargeBooks”;

    &lxmldoc = CreateXmlDoc(&lstrXMLString);
    &lmsgAmazonRequest.SetXmlDoc(&lxmldoc);
    &lmsgAmazonResponse = &lobjBPEL.launchsyncBPELProcess(“PROCESS”, &lmsgAmazonRequest, “”, “”);

    MY_AMZN_IB_WRK.WSDLHTML.Value = &lmsgAmazonResponse.GenXMLString();

  • Test our final page

And we have our final page.

Later some time, I will try to blog about the direction oracle is going to take the fusion applications with respect to
PeopleSoft and my opinion regarding that based on my review of the JDeveloper preview 4.Until then…..


PeopleSoft Integration Broker and Web Services (Updated)

Thanks for the various comments on my post for the PeopleSoft Integration Broker and Web services. Based on the comments, I noticed that I needed to provide additional information regarding the IB integration with Google web services. I noticed that most of the comments were related to the external system contact error. If you continue to receive this error after following the steps below, it is most likely that some of the configuration were either not done or you are behind a firewall that preventing you from going out of the network.

  1. Configure the integration broker by changing the gateway URL.

 

2.Activate the IB domain. When PeopleSoft is initially installed you will see a lot of invalid IB domains.You can flush out the invalid entries by purging the domain status.

3. When the integration gateway is configured you should see the target connectors in the gateway configuration.

 

 

 

4.Configure the services schemaname and target location. Please note the “Service” in the listening connector. This is PeopleSoftServiceListeningConnector.

 

5.Configure the service using the web service consume wizard.

7.Create a page,record etc to test the integration.

 

8.Enter the following code to test the integration we created.

Local SOAPDoc &SOAPDoc;

 

 

Local XmlNode &lnodeEnvNode;

&SOAPDoc = CreateSOAPDoc();

&SOAPDoc.AddEnvelope(%SOAP_Custom);

&lnodeEnvNode = &SOAPDoc.EnvelopeNode;

&lnodeEnvNode.AddAttribute(“xmlns”, “urn:GoogleSearch”);

&SOAPDoc.AddBody();

&SOAPDoc.AddMethod(“doGoogleSearch”, 1);

&SOAPDoc.AddParm(“key”, “eDZYCx9QFHIXI/xojJqrYspYi1Geo74o”);

&SOAPDoc.AddParm(“q”, “BPEL”);

&SOAPDoc.AddParm(“start”, “0”);

&SOAPDoc.AddParm(“maxResults”, “5”);

&SOAPDoc.AddParm(“filter”, “true”);

&SOAPDoc.AddParm(“restrict”, “”);

&SOAPDoc.AddParm(“safeSearch”, “false”);

&SOAPDoc.AddParm(“lr”, “”);

&SOAPDoc.AddParm(“ie”, “lang_en”);

&SOAPDoc.AddParm(“oe”, “lang_en”);

&lxmlDoc = CreateXmlDoc(&SOAPDoc.GenXmlString());

&lmsgGoRequest = CreateMessage(Operation.DOGOOGLESEARCH);

MY_GOOG_IB_WRK.RAWXML1.Value = &lxmlDoc.GenXmlString();

&lmsgGoRequest.SetXmlDoc(&lxmlDoc);

&lmsgGoResponse = %IntBroker.SyncRequest(&lmsgGoRequest);

MY_GOOG_IB_WRK.RAWXML2.Value = &lmsgGoResponse.GenXMLString();

9. Here is request and response

Request :

<?xml version=”1.0″?>

<SOAP-ENV:Envelope xmlns=”urn:GoogleSearch” xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/”><SOAP-ENV:Body><doGoogleSearch><key>eDZYCx9QFHIXI/xojJqrYspYi1Geo74o</key><q>BPEL</q&gt;

<start>0</start><maxResults>5</maxResults><filter>true</filter><restrict/>

<safeSearch>false</safeSearch><lr/><ie>lang_en</ie>

<oe>lang_en</oe></doGoogleSearch>

</SOAP-ENV:Body></SOAP-ENV:Envelope>

Response:

<?xml version=’1.0′ encoding=’UTF-16’?>

<SOAP-ENV:Envelope xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/&#8221; xmlns:xsi=”http://www.w3.org/1999/XMLSchema-instance&#8221; xmlns:xsd=”http://www.w3.org/1999/XMLSchema”&gt;

<SOAP-ENV:Body>

<ns1:doGoogleSearchResponse xmlns:ns1=”urn:GoogleSearch” SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/”&gt;

<return xsi:type=”ns1:GoogleSearchResult”>

<directoryCategories xmlns:ns2=”http://schemas.xmlsoap.org/soap/encoding/&#8221; xsi:type=”ns2:Array” ns2:arrayType=”ns1:DirectoryCategory[0]“>

</directoryCategories>

<documentFiltering xsi:type=”xsd:boolean”>false</documentFiltering>

<endIndex xsi:type=”xsd:int”>5</endIndex>

<estimateIsExact xsi:type=”xsd:boolean”>false</estimateIsExact>

<estimatedTotalResultsCount xsi:type=”xsd:int”>1640000</estimatedTotalResultsCount>

<resultElements xmlns:ns3=”http://schemas.xmlsoap.org/soap/encoding/&#8221; xsi:type=”ns3:Array” ns3:arrayType=”ns1:ResultElement[5]“>

<item xsi:type=”ns1:ResultElement”>

<URL xsi:type=”xsd:string”>http://en.wikipedia.org/wiki/Business_Process_Execution_Language</URL&gt;

<cachedSize xsi:type=”xsd:string”>49k</cachedSize>

<directoryCategory xsi:type=”ns1:DirectoryCategory”>

<fullViewableName xsi:type=”xsd:string”></fullViewableName>

<specialEncoding xsi:type=”xsd:string”></specialEncoding>

</directoryCategory>

<directoryTitle xsi:type=”xsd:string”></directoryTitle>

<hostName xsi:type=”xsd:string”></hostName>

<relatedInformationPresent xsi:type=”xsd:boolean”>true</relatedInformationPresent>

<snippet xsi:type=”xsd:string”>As defined in the abstract

of the Web Services &lt;b&gt;Business Process

Execution Language&lt;/b&gt; &lt;br&gt; OASIS Standard

WS-&lt;b&gt;BPEL&lt;/b&gt; 2.0, WS-&lt;b&gt;BPEL&lt;/b&gt;

(or &lt;b&gt;BPEL&lt;/b&gt; for short) is a language for &lt;b&gt;…&lt;/b&gt;</snippet>

<summary xsi:type=”xsd:string”></summary>

<title xsi:type=”xsd:string”>&lt;b&gt;Business Process

Execution Language&lt;/b&gt; – Wikipedia, the free encyclopedia</title>

</item>

<item xsi:type=”ns1:ResultElement”>

<URL xsi:type=”xsd:string”>http://www.ibm.com/developerworks/library/ws-bpel/</URL&gt;

<cachedSize xsi:type=”xsd:string”>28k</cachedSize>

<directoryCategory xsi:type=”ns1:DirectoryCategory”>

<fullViewableName xsi:type=”xsd:string”></fullViewableName>

<specialEncoding xsi:type=”xsd:string”></specialEncoding>

</directoryCategory>

<directoryTitle xsi:type=”xsd:string”></directoryTitle>

<hostName xsi:type=”xsd:string”></hostName>

<relatedInformationPresent xsi:type=”xsd:boolean”>true</relatedInformationPresent>

<snippet xsi:type=”xsd:string”>&lt;b&gt;Business Process Execution Language&lt;/b&gt; for Web Services provides a means to formally &lt;br&gt; specify business processes and interaction protocols.</snippet>

<summary xsi:type=”xsd:string”></summary>

<title xsi:type=”xsd:string”>&lt;b&gt;Business Process Execution

Language&lt;/b&gt; for Web Services version 1.1</title>

</item>

<item xsi:type=”ns1:ResultElement”>

<URL xsi:type=”xsd:string”>http://searchsoa.techtarget.com

/generic/0,295582,sid26_gci1172072,00.html</URL>

<cachedSize xsi:type=”xsd:string”>68k</cachedSize>

<directoryCategory xsi:type=”ns1:DirectoryCategory”>

<fullViewableName xsi:type=”xsd:string”></fullViewableName>

<specialEncoding xsi:type=”xsd:string”></specialEncoding>

</directoryCategory>

<directoryTitle xsi:type=”xsd:string”></directoryTitle>

<hostName xsi:type=”xsd:string”></hostName>

<relatedInformationPresent xsi:type=”xsd:boolean”>true</relatedInformationPresent>

<snippet xsi:type=”xsd:string”>This SearchSOA.com learning guide introduces you to &lt;b&gt;Business Process Execution&lt;/b&gt; &lt;br&gt; &lt;b&gt;Language&lt;/b&gt; for Web services, or BPEL4WS. In this &lt;b&gt;BPEL&lt;/b&gt; learning guide, &lt;b&gt;…&lt;/b&gt;</snippet>

<summary xsi:type=”xsd:string”></summary>

<title xsi:type=”xsd:string”>&lt;b&gt;BPEL&lt;/b&gt; Learning Guide</title>

</item>

<item xsi:type=”ns1:ResultElement”>

<URL xsi:type=”xsd:string”>http://www.oasis-open.org/committees/wsbpel/</URL&gt;

<cachedSize xsi:type=”xsd:string”>25k</cachedSize>

<directoryCategory xsi:type=”ns1:DirectoryCategory”>

<fullViewableName xsi:type=”xsd:string”></fullViewableName>

<specialEncoding xsi:type=”xsd:string”></specialEncoding>

</directoryCategory>

<directoryTitle xsi:type=”xsd:string”></directoryTitle>

<hostName xsi:type=”xsd:string”></hostName>

<relatedInformationPresent xsi:type=”xsd:boolean”>true</relatedInformationPresent>

<snippet xsi:type=”xsd:string”>The purpose of the Web Services &lt;b&gt;Business Process Execution Language&lt;/b&gt; TC was to &lt;br&gt; continue work on the business process language published in the &lt;b&gt;Business&lt;/b&gt; &lt;b&gt;…&lt;/b&gt;</snippet>

<summary xsi:type=”xsd:string”></summary>

<title xsi:type=”xsd:string”>OASIS Web Services &lt;b&gt;Business Process Execution Language&lt;/b&gt; (WSBPEL) TC</title>

</item>

<item xsi:type=”ns1:ResultElement”>

<URL xsi:type=”xsd:string”>http://www.bpelsource.com/</URL&gt;

<cachedSize xsi:type=”xsd:string”>32k</cachedSize>

<directoryCategory xsi:type=”ns1:DirectoryCategory”>

<fullViewableName xsi:type=”xsd:string”></fullViewableName>

<specialEncoding xsi:type=”xsd:string”></specialEncoding>

</directoryCategory>

<directoryTitle xsi:type=”xsd:string”></directoryTitle>

<hostName xsi:type=”xsd:string”></hostName>

<relatedInformationPresent xsi:type=”xsd:boolean”>true</relatedInformationPresent>

<snippet xsi:type=”xsd:string”>A comprehensive &lt;b&gt;Business Process Execution Language&lt;/b&gt; resource guide covering &lt;b&gt;BPEL&lt;/b&gt; &lt;br&gt; process management software, services, information, and news.</snippet>

<summary xsi:type=”xsd:string”></summary>

<title xsi:type=”xsd:string”>BPELSource &lt;b&gt;BPEL&lt;/b&gt; Resource Guide</title>

</item>

</resultElements>

<searchComments xsi:type=”xsd:string”></searchComments>

<searchQuery xsi:type=”xsd:string”>BPEL</searchQuery>

<searchTime xsi:type=”xsd:double”>0.131477</searchTime>

<searchTips xsi:type=”xsd:string”></searchTips>

<startIndex xsi:type=”xsd:int”>1</startIndex>

</return>

</ns1:doGoogleSearchResponse>

 

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>


PeopleSoft Integration Broker and Web Services

PeopleSoft Integration Broker and Web Services

Integrating PeopleSoft to external systems using web services is similar, if not simpler, to integrating to third party systems prior to “web services” age. Today, I will try to go through step by step instructions to integrate PeopleSoft with google web services API. If I have some time this weekend, I will try to go through the same with Amazon web services.

Google WSDL is located at this URL Google WSDL.

1. Import the WSDL

PeopleSoft lets you create the messages, queues (called channels before), routings (called transactions before) and service operations and services manually or automatically. Before web services you had to create all these (except services and operations) manually. With WSDL, all these are automatically created for you once WSDL import it done.

 

 

2. Verify all the required service operations are created.

 

 

3. Create request and response code

Based on the WSDL and request message parameter you need to create the SOAP request.

Local SOAPDoc &SOAPDoc;

Local XmlNode &lnodeEnvNode;

&SOAPDoc = CreateSOAPDoc();

&SOAPDoc.AddEnvelope(%SOAP_Custom);

&lnodeEnvNode = &SOAPDoc.EnvelopeNode;

&lnodeEnvNode.AddAttribute(“xmlns”, “urn:GoogleSearch”);

&SOAPDoc.AddBody();

&SOAPDoc.AddMethod(“doGoogleSearch”, 1);

&SOAPDoc.AddParm(“key”, “00000000000000000000000000000”);

&SOAPDoc.AddParm(“q”, “BPEL”);

&SOAPDoc.AddParm(“start”, “0”);

&SOAPDoc.AddParm(“maxResults”, “5”);

&SOAPDoc.AddParm(“filter”, “true”);

&SOAPDoc.AddParm(“restrict”, “”);

&SOAPDoc.AddParm(“safeSearch”, “false”);

&SOAPDoc.AddParm(“lr”, “”);

&SOAPDoc.AddParm(“ie”, “lang_en”);

&SOAPDoc.AddParm(“oe”, “lang_en”);

&lxmlDoc = CreateXmlDoc(&SOAPDoc.GenXmlString());

&lmsgGoRequest = CreateMessage(Operation.DOGOOGLESEARCH);

MY_LDAP_TEST.RAWXML1.Value = &lxmlDoc.GenXmlString();

&lmsgGoRequest.SetXmlDoc(&lxmlDoc);

&lmsgGoResponse = %IntBroker.SyncRequest(&lmsgGoRequest);

MY_LDAP_TEST.RAWXML2.Value = &lmsgGoResponse.GenXMLString();

4. Test the code

I created a simple page which will trigger the code above. Here is the request and response. You might need to get Google API key. I had to change one in the screen shot (sorry)

Request

 

 

 

 

 

 

 

 

 

 

 

 

 

Response

    


Follow

Get every new post delivered to your Inbox.