Wednesday 27 July 2016

Working with Siebel Outbound Web Services

Hello All,

Recently i has some requirement wherein i had to work with siebel outbound webservices.
It was first time i was working with Outbound web services so i tried to first understand the working of outbound webservices, so to explain in brief
  • Outbound Web services requires a WSDL file provided by external System.
  • This WSDL file contains Methods that are understood by external system and URL's that will be requesting connection to external system
  • WSDL file is Imported in Siebel Tools and Path for XML and Log file is specified
From Tools new wizard select Web Service
















Provide a WSDL file location and Directory for log and WSDL file XML generation (generally a writable directory i.e. c://siebel/tools/temp)












Import start and we have Option to auto deploy the IO and Business Service to client or we can manually do it by importing the WSDL XML file generated in previous step in Administration - Web Service > Outbound web service view












  • This Import of WSDL generates a Proxy Business Service in Siebel and Related IO (External IO)
Proxy BS based on class "CSSWSOutboundDispatcher" with methods defined in WSDL file







IO's created with type as XML(external IO)








  • The BS actually contains the Methods and Input/Output description that are understood by external system
  • Either the webservice can be deployed while Importing WSDL by selecting deploy as Web Service option or by imporitng the XML file that was generated from WSDL import in Administration - Web Service, Outbound web services view.
  • Verify the Newly imported Business Service and IO's created in the Tools, 
  • Compile the BS in the SRF and you are now ready to move to Next Step.
Important step now is to understand the format in which data has to be passed in the Web Service and when to call the web service. So some points that should be understood are 

  • How the data/Inputs needs to be passed to Web Service - We need to pass the inputs to proxy BS which was generated after WSDL Import, which in turn internally calls the outbound deployed Web Service.
  • What should be the data structure (Input Data Type), Since WSDL import generated IO (external) with XML base we have to pass data with XML as Structure. The exact Structure can be known from IO Structure, generally it's
<IO>
<ListOfIC>
<IC>
<ICField1></ICField1>
------------------------
<ICFieldn></ICFieldn>
</IC>
</ListOfIC>
</IO>

  • How to use the Output, since the Output will also be in XML format we need to identify the Tags we require form the Output XML, we can use vanila siebel business services to get elements value from XML's. To get value of tag ICField1, we will have to traverse XML till the node and get it value general format in dot notation is
                  IO.ListOfIC.IC.ICField1.<value>          
  • The Most important thing is when to call this whole Process, its important to decide the event when to send the outbound request it may be on a Record Write on database or on Button click. So for that we need to create RTE, or custom method on the particular events to call the Process  and pass the inputs.
In my next post i will take a Sample WSDL file and create a Process that will pass inputs to the web service and extract Output returned from external system.




3 comments:

  1. Is there a next post to the above post? I would like to know how to pass inputs to web service and extract output returned from external system

    ReplyDelete
  2. We need to pass the Input as IO Objects , IO's are created once WSDL is Consumed.
    the Output is returned from the Proxy BS as Output IO.

    As an example please see , http://siebelmantra.blogspot.com/2010/06/how-to-create-outbound-web-service-in.html

    ReplyDelete
  3. Very well explained and really useful. thank you

    ReplyDelete

Siebel GoTo View - Handling Realtime cases

 Hello All,  We all must have used GoTo view functionality of siebel to navigate to a particular view from current view. What if the require...